表空间---数据库---数据库对象

数据库初始化之后就会有pg_default和pg_global两个表空间(pg_tablespace视图查看,也可以通过\db查看)。

pg_default表空间是用来存储系统目录对象、用户表、用户表index、和临时表、临时表index、内部临时表的默认空间。对应存储目录$PADATA/base/  (template0、template1和postgres数据库存放在pg_default表空间下)pg_global表空间用来存放系统字典表,共享系统目录;对应存储目录$PADATA/global/。相当于oracle数据库的system表空间手动创建的表空间:CREATE TABLESPACE tbs1 LOCATION '/var/postgre/data1_tbs';  create database test02 tablespace tbs1;  (/var/postgre/data1_tbs目录提前创建好,目录要为空)。表空间对应的软连接存储目录$PADATA/pg_tblspc

查看数据库存放在哪个表空间中

select a.datname,b.spcname from pg_database a , pg_tablespace b where a.dattablespace=b.oid;

 

PostgreSQL数据库集簇是——多个数据库的集合。

初始化库集簇:INITDB –D $PGDATA来完成。(相当于oracle数据库dbca建库)

pg_ctl -d $PGDATA可以启动数据库

对象标识符(OID)来对整个数据集簇中唯一的标识数据库对象,包括:数据库、表、索引、视图、元组、类型等。

默认的端口号是5432 ,端口号可以在配置文件中进行修改

 数据默认的表空间有pg_default和pg_global两个

pg_default表空间是用来存储系统目录对象、用户表、用户表index、和临时表、临时表index、内部临时表的默认空间。对应存储目录$PADATA/base/  (template0、template1和postgres数据库存放在pg_default表空间下)

pg_global表空间用来存放系统字典表,共享系统目录;对应存储目录$PADATA/global/。相当于oracle数据库的system表空间

$PG_DATA/pg_tblspc目录下有表空间的标识符16384,软链接到具体的路径(用户手动创建的表空间)

 postgres=# CREATE TABLESPACE tbs1 LOCATION '/var/postgre/data1_tbs';

select * from pg_tablespace;

    2.PostgreSQL集簇的布局

文件:

pg_hba.conf  认证文件 :控制主机访问的客户端认证文件。控制哪些客户端可以访问数据库服务器。  【主机 数据库 用户 ip 认证方式】pg_ident.conf 控制postgresql用户名映射的文件:配置操作系统用户和数据库服务器上的用户名的映射;postgresql.conf 参数文件:控制postgreSQL数据库的参数,配置参数;PG_VERSION:  存放postgreSQL主版本号的文件postgresql.auto.conf :存储使用ALTER SYSTEM修改的配置参数文件(9.4以后版本)postmaster.opts :记录服务器上一次启动的启动命令选项

目录:

base/   包含数据库对应的子目录global/  包含数据库相关的表(pg_database pg_control文件)pg_commit_ts/ 事务提交的一个时间戳数据pg_dynshmem  (dynamic share menmory)动态共享内存子系统使用的文件pg_logical/  逻辑解码的状态数据(9.4之后)pg_tblspc/   pg表空间目录(存放表空间的链接目录,符号目录)pg_wal/    WAL (write ahead log)段文件  pg_xlog而来  

3.initdb演示:

生成数据库集簇

mkdir /pgdb/data3initdb -D /pgdb/data3mkdir /pgdb/tbs01改配置启动,创建表空间pgtbs1创建数据库连接数据库查看数据库当前数据库的oid:select oid from pg_database where datname=current_database();   查看表空间:\db+查看test表格:select pg_relation_filepath('test'::regclass);

create table test(id serial primary key,uname varchar(20)); CREATE TABLE insert into test (uname) values ('mia'); insert into test  (uname) values ('pg'); insert into test  (uname) values ('redis'); 

test=# select pg_relation_filepath('test'::regclass);  pg_relation_filepath  ----------------------  base/16384/16388   ---数据库oid/表的oid (1 row) pgtbs1 Create tablespace tbs01 location '/pgdb/tbs01’; Create database test tablespace tbs01;

表空间及其存放路径对应关系

 

查看数据库存放在哪个表空间中

select a.datname,b.spcname from pg_database a , pg_tablespace b where a.dattablespace=b.oid;

 

 

PostgreSQL集簇的布局

PostgreSQL数据集簇

参考文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。