PostgreSQL数据库存储结构

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

数据库初始化之后就会有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;

 

  1. 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/data3
  • initdb -D /pgdb/data3
  • mkdir /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数据集簇

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值