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

LMX2820即时校准实战:从失锁到稳定锁频的完整指南

本文详细解析了LMX2820锁相芯片在高频段(11.3-22.6GHz)易出现随机失锁问题的根源,并提供了即时校准(InstCal)的完整实战指南。通过寄存器编程、Index例程和校准配置的关键步骤,确保从失锁到稳定锁频的高可靠性,大幅提升射频合成器在通信与测试测量应用中的性能。

bert9linguist的博客 958

Infinite-Canvas:一站式AI绘画工作流平台部署与实战指南

在 AI 绘画和内容创作领域,你是否经常遇到这样的困扰:灵感来了,却要在多个工具间来回切换——找素材、写提示词、调整参数、批量生成,整个过程繁琐且低效。创作一个系列作品时,管理不同版本的图片和提示词更是让人头疼。如果你渴望一个能整合所有流程,实现从素材管理、提示词工程到批量出图一站式完成的工作台,那么今天介绍的 Infinite-Canvas 正是为你量身打造的解决方案。 Infinite-Canvas 是一个开源的本地网页应用,它将 AI 绘画的完整工作流集成在一个界面中。无论你是想快速生成单张图片,还是

weixin_28707535的博客 338

PostgreSQL

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

wanger61的博客 1102

ESP32专用E220LoRa库:EBYTE LoRa模块驱动与点对点透传实现

LoRa是一种基于扩频技术的低功耗远距离无线通信协议,广泛应用于物联网终端设备间的数据传输。其核心原理在于通过线性调频(Chirp)信号提升接收灵敏度与抗干扰能力,从而在Sub-GHz频段实现数公里级视距通信。该技术具备高链路预算、强穿透性与多节点并发接入能力,显著降低广域传感网络的部署成本与功耗门槛。典型应用场景包括农业环境监测、工业设备远程诊断、智能表计数据回传等对可靠性与简易集成要求严苛的嵌入式系统。本文聚焦EBYTE E220-400T22D模块在ESP32平台上的工程化落地,深入解析硬件引脚时序约

weixin_36064575的博客 554

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

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

ejinxian的专栏 261

Qt for Android:基于libusb实现CH340x串口通信的高效开发方案

本文详细介绍了在Qt for Android环境下,基于libusb实现CH340x串口通信的高效开发方案。通过绕过Android高版本系统的权限限制,利用libusb+JNI技术实现稳定通信,适用于工业手持终端等场景。文章涵盖环境搭建、核心实现、常见问题解决方案及性能调优经验,帮助开发者快速掌握这一关键技术。

weixin_42715608的博客 427

2025年抖音面试:商业生态与安全质量运营技能要求及面试

在商业生态与安全岗的质量运营工作中,规则运营职责占据着极为重要的地位,它是保障内容风控质量的关键环节。

王国平的博客 608

Working with Tablespace in PostgreSQL

Working with Tablespace in PostgreSQL

u011868279的博客 576

深度强化学习 | 基于DQN实现Flappy Bird游戏与分析

在Flappy Bird中,玩家需要通过控制小鸟安全穿过随机长度的水管来得分。本文基于深度Q网络DQN来实现Flappy Bird游戏的自主探索与学习

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值