從小白到專家 PostgreSQL技術大講堂 - Part 5:PG數據庫結構
最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!
我要咨詢
PostgreSQL從小白到專家,是從入門逐漸能力提升的一個系列教程,內容包括對PG基礎的認知、包括安裝使用、包括角色權限、包括維護管理、、等內容,希望對熱愛PG、學習PG的同學們有幫助,歡迎持續關注CUUG PG技術大講堂。
Part 5:PG數據庫結構
內容1:PostgreSQL邏輯結構
內容2:PostgreSQL物理結構
內容3:PostgreSQL表空間結構
1.1、數據庫集簇邏輯結構
數據庫集簇邏輯結構 :

1.2、對象標識符
PostgreSQL中的所有數據庫對象都由各自的對象標識符(oid)在內部管理。
這些對象標識符是無符號的4字節整數。數據庫對象和相應的oid之間的關系存儲在適當的系統目錄中,具體取決于對象的類型。
數據庫的oid存儲在pg_database中。
數據庫的oid與對應的數據庫目錄名是一致的
2、數據庫集簇物理結構

每個數據庫是base子目錄下的子目錄;數據庫目錄名與相應的oid相同。例如,當數據庫sampledb的OID為16384時,其子目錄名為16384。
cd $PGDATA
ls -ld base/16384
drwx------ 213 postgres postgres 7242 8 26 16:33 16384
2.1、其它目錄結構
數據庫集群的布局的主要文件和子目錄如下所示:



3、Tablespaces
PostgreSQL Tablespaces
PostgreSQL中的表空間是基本目錄之外的附加數據區域,此功能已在版本8.0中實現。
初始化數據庫后默認的表空間有pg_default、pg_global。
pg_global表空間的物理文件位置在數據目錄的global目錄中,它用來保存系統表。
pg_default表空間的物理文件位置在數據目錄的base子目錄中,是template0和template1數據庫的默認表空間。
創建數據庫時,默認從template1數據庫進行克隆,因此除非特別指定了新建數據庫的表空間,否則默認使用template1使用的表空間,即pg_default表空間。
PostgreSQL表空間物理文件位置

創建表空間時產生的目錄命名規則PG _ 'Major version' _ 'Catalogue version number'
例如:
sampledb=# create tablespace new_tblspc location '/home/postgres/tblspc';
$ ls -l /home/postgres/tblspc/ total 4
drwx------ 4 postgres postgres PG_12_201909212
新建表空間的目錄由pg_tblspc子目錄中的軟鏈接尋址,鏈接名與表空間的OID值相同

如果在表空間下創建一個新的數據庫(OID是90209),那么它的目錄將在版本特定的子目錄下創建
ls -l /home/postgres/tblspc/PG_12_201909212 total 4
drwxr-x---. 2 postgres postgres 4096 Mar 30 09:27 90209
在base目錄下創建的數據庫上創建新表指定到新建的表空間
testdb=# create table test1 (id int) tablespace new_tblspc;
testdb=# SELECT pg_relation_filepath('test1'); pg_relation_filepath
---------------------------------------------
pg_tblspc/90208/PG_12_201909212/16385/90210 #在新表空間目錄下創建數據庫目錄

以上就是Part 5 - PG數據庫結構 的內容,大家可以進群一起探討,QQ交流群:752027153
微信交流群:聯系客服拉你進微信PG交流群
釘釘交流群:35822460,本周五晚上8點會有公開課專門講解此內容