PostgreSQL15——管理表空间

PostgreSQL:表空间 PostgreSQL 中的表空间允许在文件系统中定义用来存放表示数据库对象的文件的位置。在 PostgreSQL 中表空间实际上就是给表指定一个存储目录。 作用 通过使用表空间,管理员可以控制一个 PostgreSQL 安装的磁盘布局。这么做至少有两个用处。 如果初始化集簇所在的分区或者卷用光了空间,而又不能在逻辑上扩展或者做别的什么操作,那么表空间可以被创建在一个不同的分区上,直到系统可以被重新配置。 表空间允许管理员根据数据库对象的使用模式来优化性能。例如,一个很频繁使用的索引可以被 阅读详情

一、基本概念

在 PostgreSQL 中,它是通过表空间(Tablespaces)来实现逻辑对象(表、索引等)与物理文件之间的映射。创建数据库或者数据表(包括索引)的时候,可以为其指定一个表空间
(tablespace)。表空间决定了这些对象在文件系统中的存储路径。

在PostgreSQL 中,表空间(tablespace)表示数据文件的存放目录,这些数据文件代表了数据库的对象,例如表或索引。当我们访问表时,系统通过它所在的表空间定位到对应数据文件所在的位置。

在这里插入图片描述

表空间的引入为 PostgreSQL 的管理带来了以下好处:

  • 如果数据库集群所在的初始磁盘分区或磁盘卷的空间不足,又无法进行扩展,可以在其他分区上创建一个新的表空间以供使用。
  • 管理员可以根据数据库对象的使用统计优化系统的性能。例如,可以将访问频繁的索引存放到一个快速且可靠的磁盘上,比如昂贵的固态硬盘。与此同时,将很少使用或者对性能要求不高的归档数据表存储到廉价的低速磁盘上。

PostgreSQL 在集群初始化时将所有的数据文件和配置文件存储到它的数据目录中,通常是环境变量PGDATA 的值。默认创建了两个表空间:

  • pg_default, template1 和 template0 默认的表空间,也是创建其他数据库时的默认表空间;对应的目录为PGDATA/base。
  • pg_global,用于存储一些集群级别的共享系统表(system catalogs),例如 pg_database、pg_control;对应的目录为PGDATA/global。

初始安装后,使用 psql 查询默认创建的表空间:
在这里插入图片描述

同时也可以通过操作系统命令查看相应的目录:
在这里插入图片描述

其中的 base 和 global 目录分别对应表空间 pg_default 和 pg_global。

二、创建表空间

创建新的表空间使用CREATE TABLESPACE 语句:

CREATE TABLESPACE tablespace_name
OWNER user_name
LOCATION 'directory';

表空间的名称不能以 pg_开头,它们是系统表空间的保留名称;LOCATION 参数必须指定绝对路径名,指定的目录必须是一个已经存在的空目录,PostgreSQL 操作系统用户(postgres)必须是该目录的拥有者,以便能够进行文件的读写。

接下来,我们使用目录/var/lib/pgsql/创建一个新的表空间 app_tbs。先创建所需的目录:
在这里插入图片描述

注意目录的所有者和权限。然后使用具有 CREATEDB 权限的用户创建表空间,此处我们使用 postgres 执行以下操作:

create tablespace app_tbs location '/var/lib/pgsql/app_tbs';

在这里插入图片描述

我们查看一下操作系统中的变化:

在这里插入图片描述

在表空间对应的目录中,创建一个特定版本的子目录。与此同时,在数据目录下的 pg_tblspc 子目录中,创建了一个指向表空间目录的符号链接,名称为表空间的 OID(16743):

在这里插入图片描述

默认情况下,执行 CREATE TABLESPACE 语句的用户为该表空间的拥有者,也可以使用OWNER 选项指定拥有者。

对于普通用户,需要授予表空间上的对象创建权限才能使用该表空间。我们为用户 admin01 授予表空间 app_tbs 上的使用权限:
在这里插入图片描述

使用admin01 用户连接到数据库 testdb,然后在表空间app_tbs 中创建一个新的数据表t:
在这里插入图片描述

PostgreSQL 支持在 CREATE DATABASE、 CREATE TABLE、 CREATE INDEX 以及 ADD CONSTRAINT 语句中指定 tablespace_name 选项,覆盖默认的表空间(pg_default)。也可以使用相应的 ALTER …语句将对象从一个表空间移到另一个表空间。

如果不想每次创建对象时手动指定表空间,可以使用配置参数 default_tablespace:

set default_tablespace = app_tbs;

三、修改表空间

如果需要修改表空间的定义,可以使用 ALTER TABLESPACE 语句:

-- 用于表空间的重命名
ALTER TABLESPACE name RENAME TO new_name;

-- 用于修改表空间的拥有者
ALTER TABLESPACE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER };

-- 后两个语句用于设置表空间的参数
ALTER TABLESPACE name SET ( tablespace_option = value [, ... ] );

ALTER TABLESPACE name RESET ( tablespace_option [, ... ] );

将表空间 app_tbs 重命名为 admin01_tbs:
在这里插入图片描述

只有表空间的拥有者或超级用户才能修改表空间的定义。接下来将表空间 admin01_tbs 的拥有者修改为 admin01:

在这里插入图片描述

PostgreSQL 支 持设 置的 表空 间参 数包 括 seq_page_cost、 random_page_cost 以 及
effective_io_concurrency。它们用于查询计划器选择执行计划时的代价评估。

目前,PostgreSQL 还不支持使用语句修改表空间的存储路径。但是,可以通过手动的方式移动表空间的位置:

  1. 停止 PostgreSQL 服务器进程;
  2. 移动文件系统中的数据文件位置;
  3. 修改 PGDATA/pg_tblspc 目录中的符号链接文件(需要提前获取文件名),指向新的目录;
  4. 启动 PostgreSQL 服务器进程。

四、删除表空间

对于不再需要的表空间,可以使用 DROP TABLESPACE 语句进行删除:

DROP TABLESPACE [ IF EXISTS ] name;
-- IF EXISTS 可以避免删除不存在的表空间时产生错误信息。

只有表空间的拥有者或超级用户能够删除表空间。删除表空间之前需要确保其中不存在任何数据库对象,否则无法删除。删除表空间时,同时会删除文件系统中对应的表空间子目录。

《PostgreSQL开发指南》第07篇 管理表空间 在 PostgreSQL 中,表空间(tablespace)表示数据文件的存放目录,这些数据文件代表了数据库的对象,例如表或索引。当我们访问表时,系统通过它所在的表空间定位到对应数据文件所在的位置。 本篇介绍 PostgreSQL 中如何管理表空间,包括 CREATE TABLESPACE、ALTER TABLESPACE 以及 DROP TABLESPACE 语句。 阅读详情

相关推荐

PostgreSQL-表空间的创建、修改和删除

“表空间”支持把不同的数据库、数据表,放在不同的存储介质或不同的文件系统下。比如我们可以将频繁更新、查询的表放在高速存储介质中(固态硬盘)以提高数据查询的速度,将查询、更新操作不频繁的表放置在机械硬盘中。 语法中,大写字符是关键字,小写字符是自定义的名称和路径参数说明: 创建表空间时可能会报错,报错如下提示没有权限因为数据库的安全策略,这个文件夹不属于postgres用户,所以表空间不能被建立在这个文件夹中。...

孙霸天的专栏 4931

Postgresql表空间详解

Postgresql表空间详解

lusklusklusk的博客 6275

《PostgreSQL开发指南》第15篇 CASE表达式

CASE 表达式为 SQL 语句增加类似于 IF-THEN-ELSE 的逻辑处理功能,可以根据不同的条件返回不同的结果。 PostgreSQL 支持两种形式的条件表达式:简单 CASE 表达式和搜索 CASE 表达式。 另外,为了方便空值处理,还提供了两个缩写形式的 CASE 表达式(函数):NULLIF 和 COALEASE。

Tony.Dong的专栏 2160

PostgreSQL的表空间

在 PostgreSQL 中,表空间(Tablespace)是一个可以用于存储数据库对象(如表、索引)的文件系统位置。PostgreSQL的表空间让你可以将数据库对象分散存储在不同的系统目录中,以优化磁盘I/O、管理数据存放、更好地进行性能调优,以及灵活地管理磁盘空间。

文牧之的博客 2318

《PostgreSQL开发指南》第02篇 PostgreSQL简介

PostgreSQL 是世界上最先进的开源对象-关系型数据库管理系统(ORDBMS)。它基于加利福尼亚大学伯克利分校开发的 POSTGRES, Version 4.2。

Tony.Dong的专栏 2624

《PostgreSQL开发指南》第30篇 Java访问PostgreSQL

介绍如何在 Java 程序中利用 JDBC 接口连接和操作 PostgreSQL 数据库,包括创建和删除表、执行数据的增删改查操作、事务的管理以及调用存储过程。

Tony.Dong的专栏 4486

mysql 查看所有用户_当面试官问你查看共用一个表空间的所有用户时该怎么办?...

概述有朋友问到如何查出表空间都被哪些用户使用的一些方法,因为有几种情况需要考虑,也顺便做个总结。需求:如何查看共用一个表空间的所有用户查看某表空间下表的所有者使用dba用户查询:1、如果先要知道表空间的命名,可以这样查询:select tablespace_name from dba_tablespaces;2、然后再通过一个表空间的名,利用dba_tables视图查看,这个表空间下表的所有者,就...

weixin_39963096的博客 447

《PostgreSQL开发指南》第28篇 PHP访问PostgreSQL

介绍如何利用 PHP 数据对象(PDO)接口连接和操作 PostgreSQL 数据库,包括创建和删除表、执行数据的增删改查操作、事务的管理以及调用存储过程和函数。

Tony.Dong的专栏 1992

PostgreSql 表空间

PostgreSQL 中的表空间允许数据库管理员在文件系统中定义用来存放表示数据库对象的文件的位置。一旦被创建,表空间就可以在创建数据库对象时被引用,如创建数据库、表、索引和添加索引时指定表空间。管理员可以利用表空间控制 PostgreSQL 的磁盘布局,这么做至少有如下两个用处。

脑子进水养啥鱼?的博客 2544

《PostgreSQL开发指南》第29篇 Python访问PostgreSQL

利用 Python 驱动程序接口 psycopg 连接和操作 PostgreSQL 数据库,包括创建和删除表、执行数据的增删改查操作、事务的管理以及调用存储过程和函数。

Tony.Dong的专栏 2623

《PostgreSQL开发指南》第01篇 课程介绍

本专栏主要面向 PostgreSQL 初级 DBA 和开发人员,内容包括:PostgreSQL 介绍、PostgreSQL 安装,用户和角色、数据库与模式的管理、表空间与表的维护、数据库的备份与恢复、各种 SQL 查询语句、常用函数、DML 语句,以及一些高级功能,例如通用表表达式、窗口函数、数据库事务、索引、视图、存储过程及函)、触发器、应用程序编程接口等。

Tony.Dong的专栏 3395

PostgreSQL - 表空间的创建、管理与磁盘规划

PostgreSQL表空间管理指南:优化存储与性能 摘要: 本文详细介绍了PostgreSQL表空间的核心概念和实用管理方法。表空间作为物理存储位置的映射机制,允许将数据库对象分散存储在不同磁盘上。文章涵盖表空间创建步骤、对象迁移方法、日常管理操作,并重点探讨了三种典型应用场景:I/O性能分层、避免磁盘瓶颈和多租户隔离。同时提供了备份恢复时的注意事项,强调物理备份需额外处理表空间目录。通过合理的表空间规划,DBA可以有效提升数据库性能,实现存储资源优化配置。 (字数:149字)

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

《PostgreSQL开发指南》第03篇 PostgreSQL安装

本文简单介绍如何在不同的操作系统上安装 PosgtreSQL。主要介绍了 Linux 下的 PosgtreSQL 安装过程和 Windows 系统下的图形安装工具。

Tony.Dong的专栏 2333

PostgreSQL入门到精通.pdf

主要面向 PostgreSQL 初级 DBA 和开发人员,内容包括:PostgreSQL 介绍和安装,用户和角色、数据库与模式的管理、表空间与表的维护、数据库的备份与恢复、SQL 查询、常用函数、DML 语句,以及一些高级功能,例如通用表表达式、窗口函数、数据库事务、索引优化、视图、存储过程/函数、触发器以及 Java、Python、PHP 应用程序编程接口等。

发现生活,分享智慧,一起成长! 3208

微电网系列: 位移因数DPF&&功率因数PF&&过激&&欠激

文中对比了位移因数(DPF,仅基波相位)与功率因数(PF,含谐波影响)的差异,指出PF=DPF×DF(畸变因数)。过激/欠激状态对应无功功率控制:过激(容性,电流超前,抬升电压)与欠激(感性,电流滞后,抑制电压)。PCS(如光伏逆变器)需逆向调节电网无功状态,过激时发出容性无功,欠激时吸收感性无功,以维持电压。

云纳星辰怀自在 1173

CVAT自动标注避坑指南:如何解决Nuclio工程创建失败和镜像拉取问题

本文是一份针对CVAT自动标注部署中常见问题的实战排障指南。文章深入剖析了Nuclio工程创建失败的根源,提供了网络配置、服务状态检查等系统性解决方案,并详细讲解了如何解决gcr.io等海外镜像拉取难题,帮助开发者顺利完成CVAT自动标注环境的搭建与部署。

weixin_29207533的博客 233

PostgreSQL

表空间参数 tablespace_option :如果在比 I/O子系统更快或更慢的磁盘上存储表空间,则配置项会变得很有意义。在创建数据库、表时可以指定表空间,以便。TABLESPACE:表空间。ENCODING:编码。

wanger61的博客 1102

DisplayPort 1.4数据扰码实战:16bit LFSR并行优化技巧(附Verilog代码)

本文深入探讨了DisplayPort 1.4协议中16bit数据扰码的并行化实现。针对高带宽视频传输需求,文章详细推导了16位LFSR(线性反馈移位寄存器)的单周期16步并行计算公式,并提供了可直接使用的Verilog代码,解决了传统8bit串行处理吞吐量不足的瓶颈,为高速接口设计提供了关键优化技巧。

y4z5a6b7的博客 259

Pgsql 数据库与模式和创建与管理表操作

本文系统介绍了PostgreSQL数据库的核心概念与管理操作,主要内容包括: 数据库与模式的关系:数据库是最高级容器,模式是二级容器用于分组管理对象。创建数据库时会自动生成public模式。 PostgreSQL与Oracle的模式差异:PG中模式与用户独立,一个用户可访问多个模式;Oracle中用户与模式一一绑定。 数据类型详解:包括数值类型(整型/浮点型)、日期时间类型(timestamp/date)和字符串类型(char/varchar/text)的特性与使用场景。 表的基本操作:创建表、修改表结构(

ejinxian的专栏 261

数据产品需求文档(PRD)怎么写?阿里P8分享的模板+5个避坑点

作用:记录文档的版本、作者、评审信息,避免“文档混乱”。填写规范字段说明示例文档名称清晰反映产品名称,如“用户行为分析平台PRD”用户行为分析平台PRD_V1.0文档版本用“版本号+日期”,如V1.0_20240301编写人数据产品经理姓名+联系方式张三(138-XXXX-XXXX)评审人员业务负责人、开发经理、数据分析师、运维负责人李四(业务)、王五(开发)、赵六(数据)、周七(运维)评审时间评审日期2024-03-05评审意见。

架构师的AI之路,分享AI应用开发架构的学习与实践。 1574

图像去雾常见数据集

上述数据集涵盖了室内、室外、真实和合成等多种场景,可以满足不同研究需求。在选择数据集时,建议根据具体任务的应用场景和目标选择合适的数据集,例如真实雾天图像适合模型的实际应用验证,而合成数据则适合模型的快速迭代和训练。希望本文能为从事图像去雾研究的朋友提供一些帮助!

m0_68604571的博客 6334

Working with Tablespace in PostgreSQL

Working with Tablespace in PostgreSQL

u011868279的博客 576

044、手持视频抖动严重?OpenCV 光流 + IMU 融合的电子防抖工程方案

本文探讨了基于OpenCV光流和IMU融合的手持视频电子防抖方案。作者从实际工程经验出发,分析了纯光流和纯IMU方案的局限性,指出时间戳对齐和坐标系标定是关键挑战。文章详细介绍了融合滤波器的实现方法,推荐互补滤波替代卡尔曼滤波,并提出了动态调整融合系数的策略。在光流算法优化方面,建议采用网格化FAST特征点和前后向误差检测。最后分享了运动补偿裁剪策略和多线程流水线设计,强调在嵌入式设备上使用NEON指令优化性能。该方案通过精确的时间同步和传感器融合,有效解决了手持拍摄中的高频抖动问题。

ai技术增长的博客 250
上一篇: PostgreSQL15——管理数据表
下一篇: PostgreSQL15——查询详解
吴声子夜歌
博客等级 码龄9年 2687粉丝 2266原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值