pg学习之表空间

表空间就是文件系统位置的一个目录,可以保存所有其他对象的容器,如表、索引等,有默认表空间、共享系统表表空间、自定义表空间

其主要用途分两个: 

  1. 单独扩展表空间用,一旦磁盘或分区被耗尽,可以创建一个表空间到其他磁盘或分区上面。 
  2. 区分不同对象的存储位置,比如可将索引放入较快磁盘的表空间上,而将固定不变的数据放入较慢磁盘的表空间上。

系统自带表空间:

  1. 表空间pg_default是用来存储系统目录对象、用户表、用户表index、和临时表、临时表index、内部临时表的默认空间。对应存储目录$PADATA/base/
  2. 表空间pg_global用来存放系统字典表;对应存储目录$PADATA/global/

基本命令:

CREATE TABLESPACE tablespace_name LOCATION 'location'

location必须是一个已有的空目录,并且属于postgreSQL操作系统用户

操作步骤:

  1. 创建目录: mkdir /home/highgo/pgdata
  2. 赋权限:chown highgo:highgo /home/pgdata
  3. 创建表空间:create tablespace tbs_data location '/home/highgo/pgdata'
  4. 创建表和索引时就可以指定表空间,这样,表、索引就可以存储到表空间对应的目录下了。

创建数据库时指定默认的表空间:create database db01  tablespace tbs_data;

改变一个数据库的默认表空间时的语法:alter database db01 set tablespace tbs_data;

注意:在做该操作时,必须没有人同时连接到这个数据库上,否则会报错。

另外,改变数据库的默认表空间时,数据库中已有表的表空间并不会改变。

创建表的时候也可以指定表空间:create table test01(id int, note text) tablespace tbs_data;

创建索引的时候同样可以指定表空间:create index idx_test01_id on test01(id) tablespace tbs_dasta;

建唯一约束时也可以指定约束索引的表空间:alter table test01 add constraint unique_test01_id unique(id) using index tablespace tbs_data;

增加主键时也可指定主键索引的表空间:alter table test01 add constraint pk_test01_id primary key(id) using index tablespace tbs_data;

把表从一个表空间移动到另一个表空间的命令:alter table test01 set tablespace pg_default;

注意:在移动表的时候会锁表,此时对该表的所有操作都将被阻塞,包括select操作,所以请考虑在合适的实际做这个操作。

其他相关命令:

\db 查看表空间的所有信息

查看所有表空间的集合:select * from pg_tablespace;

查看指定表空间下所有的表信息:select * from pg_tables where tablespace='tbs_data';

查看指定表空间下所有索引信息:select * from pg_indexes where tablespace='tbs_data';

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值