PostgreSQL表空间的使用

一、介绍

表空间的作用就是允许数据库管理员定义一个其他非数据目录的位置存储数据库对象。

使用场景之一是,如果机器新加了ssd,但是又不够整个实例使用,可以将一些重要和使用频率高的表和索引放到ssd上,提高查询效率

二、创建表空间

先创建要保存表空间的目录

# mkdir -p /export/tablespace1
# chown -R postgres: /export/tablespace1/

进入数据库

postgres=# \db
       List of tablespaces
    Name    |  Owner   | Location 
------------+----------+----------
 pg_default | postgres | 
 pg_global  | postgres | 
(2 rows)

数据里面只有两个默认的表空间,还没有其他的表空间,现在创建一个表空间

postgres=# CREATE TABLESPACE tbspl1 LOCATION ‘/export/tablespace1‘;
CREATE TABLESPACE
postgres=# \db
             List of tablespaces
    Name    |  Owner   |      Location       
------------+----------+---------------------
 pg_default | postgres | 
 pg_global  | postgres | 
 tbspl1     | postgres | /export/tablespace1
(3 rows)

三、使用表空间

创建一个表table_a并查看其位置

postgres=# create table table_a (id int);
CREATE TABLE
postgres=# select pg_relation_filepath(‘table_a‘);
 pg_relation_filepath 
----------------------
 base/13003/17031
(1 row)

可以看出是在数据目录的base目录下,将其修改到表空间tbspl1

postgres=# alter table table_a set tablespace tbspl1 ;
ALTER TABLE
postgres=# select pg_relation_filepath(‘table_a‘);     
             pg_relation_filepath             
----------------------------------------------
 pg_tblspc/17030/PG_9.4_201409291/13003/17037
(1 row)

可见表转移到了表空间所在的目录了

创建使用表空间的表:

postgres=# create table table_b (id int) tablespace tbspl1;    
CREATE TABLE
postgres=# select pg_relation_filepath(‘table_b‘);         
             pg_relation_filepath             
----------------------------------------------
 pg_tblspc/17030/PG_9.4_201409291/13003/17038
(1 row)

对于默认创建的索引是还是在数据目录下的,跟表没有关系

postgres=# create index on table_b (id);
CREATE INDEX
postgres=# \d table_b
    Table "public.table_b"
 Column |  Type   | Modifiers 
--------+---------+-----------
 id     | integer | 
Indexes:
    "table_b_id_idx" btree (id)
Tablespace: "tbspl1"

postgres=# select pg_relation_filepath(‘table_b_id_idx‘);
 pg_relation_filepath 
----------------------
 base/13003/17041
(1 row)

创建使用表空间的索引

postgres=# create index on table_a (id) tablespace tbspl1; 
CREATE INDEX
postgres=# \d table_a
    Table "public.table_a"
 Column |  Type   | Modifiers 
--------+---------+-----------
 id     | integer | 
Indexes:
    "table_a_id_idx" btree (id), tablespace "tbspl1"
Tablespace: "tbspl1"

postgres=# select pg_relation_filepath(‘table_a_id_idx‘); 
             pg_relation_filepath             
----------------------------------------------
 pg_tblspc/17030/PG_9.4_201409291/13003/17042
(1 row)
时间: 2024-10-11 21:08:00

PostgreSQL表空间的使用的相关文章

PostgreSQL表空间、模式、表、用户/角色之间的关系

PostgreSQL表空间.模式.表.用户/角色之间的关系是本文我们主要要介绍的内容,表空间,数据库,模式,表,用户,角色之间的关系到底是怎样的呢?接下来我们就开始介绍这一过程. 实验出角色与用户的关系 在PostgreSQL中,存在两个容易混淆的概念:角色/用户.之所以说这两个概念容易混淆,是因为对于PostgreSQL来说,这是完全相同的两个对象.唯一的区别是在创建的时候: 1.我用下面的psql创建了角色kanon:CREATE ROLE kanon PASSWORD 'kanon';接着

PostgreSQL表空间、数据库、模式、表、用户/角色之间的关系

看PostgreSQL9的官方文档,我越看越迷糊,这表空间,数据库,模式,表,用户,角色之间的关系怎么在PostgreSQL里这么混乱呢?经过中午的一个小实验,我逐渐理清了个中来龙去脉.下面我来还原我的试验,并循序讲清其中关系. 首先,实验出角色与用户的关系    在PostgreSQL中,存在两个容易混淆的概念:角色/用户.之所以说这两个概念容易混淆,是因为对于PostgreSQL来说,这是完全相同的两个对象.唯一的区别是在创建的时候: 1.我用下面的psql创建了角色kanon:   CRE

PostgreSQL表空间

postgres=# \h create tablespace Command: CREATE TABLESPACEDescription: define a new tablespaceSyntax:CREATE TABLESPACE tablespace_name [ OWNER user_name ] LOCATION 'directory' [ WITH ( tablespace_option = value [, ... ] ) ] postgres=# create tablespa

postgresql 表空间创建、删除

表空间:字面上理解就是表存储的物理空间,其实包括数据库的表.索引.序列等. 可以将表空间创建在服务器的不同分区,这样做的好处有: 一.如果初始化集群所在分区已经用光,可以方便的其他分区上创建表空间已达到扩容的目的. 二.对于频繁访问的数据可以存储在性能较高.较快的磁盘分区上,而不常用的数据存储在便宜的较慢的磁盘分区上. 语法: postgres=# \h create tablespace Command:     CREATE TABLESPACEDescription: define a n

【PostgreSQL】表空间

在PostgreSQL中,表空间实际上是为表指定一个存储目录,这样方便我们把不同的表放在不同的存储介质或者文件系统中.在创建数据库.表.索引时都可以指定表空间. 1. 创建表空间 --表空间目录必须是系统中已存在的目录 test=# create tablespace tb_01 location '/opt/postgresql/data/pg_data'; CREATE TABLESPACE 2. 创建数据库,指定表空间 test=# create database test01 table

生产环境修改PostgreSQL表索引对应的表空间

通过iostat命令发现某块磁盘的io使用率经常保持在100%,通过blkid命令获取linux raid存储盘符和挂载点的关系后,最后发现是挂载点上的一个数据库表空间在占用大io. 现象 [email protected]:~$ iostat -xm 3 |grep -v dm avg-cpu:  %user   %nice %system %iowait  %steal   %idle           11.68    0.00    3.82    8.63    0.00   75.

PostgreSQL的表空间

PostgreSQL中的表空间允许数据库管理员在文件系统中定义可以存储表示数据库对象的文件的位置.创建后,可以在创建数据库对象时按名称引用表空间. 通过使用表空间,管理员可以控制PostgreSQL安装的磁盘布局.这至少在两个方面很有用.首先,如果初始化集群的分区或卷空间不足并且无法扩展,则可以在不同的分区上创建表空间并使用,直到可以重新配置系统.其次,表空间允许管理员使用数据库对象的使用模式的知识来优化性能.例如,非常频繁使用的索引可以放置在非常快速,高度可用的磁盘上,如昂贵的固态设备.同时,

Oracle 表空间和用户权限管理

一. 表空间 Oracle数据库包含逻辑结构和物理结构. 数据库的物理结构指的是构成数据库的一组操作系统文件. 数据库的逻辑结构是指描述数据组织方式的一组逻辑概念以及它们之间的关系. 表空间是数据库逻辑结构的一个重要组件. 表空间可以存放各种应用对象,如表.索引等. 而每一个表空间由一个或多个数据文件组成. 1. 表空间的分类 表空间可分为3类: 永久性表空间:一般保存表.上天.过程和索引等数据.system.sysaux.users.example表空间是默认安装的. 临时性表空间:只用于保存

MySQL 表空间传送

1.源库查询表结构 mysql> show create table s_show\G *************************** 1. row ***************************        Table: study_show Create Table: CREATE TABLE `study_show` (   `id` int(11) unsigned NOT NULL AUTO_INCREMENT,   `uid` int(11) DEFAULT '0'