PostgreSQL資料庫的物理儲存結構主要是指硬碟上儲存的檔案,包括:資料檔案、日誌檔案、引數檔案、控制檔案、WAL預寫日誌檔案等等。下面重點討論一下PostgreSQL的資料檔案。
影片講解如下:
https://www.bilibili.com/video/BV1gsWSeVEk4/?aid=113011259869...
顧名思義,資料檔案用於儲存資料,檔名以oid命名。對於超出1G的資料檔案,PostgreSQL會自動將其拆分為多個檔案來儲存,而拆分的檔名將由pg_class中的relfilenode欄位來決定。
透過下面的步驟可以確定表所對應的資料檔案。
(1)檢視資料庫的oid。
postgres=# select oid,datname from pg_database;
# 輸出的資訊如下:
oid | datname
-------+-----------
13580 | postgres
1 | template1
13579 | template0
(3 rows)
# 注意:13580是資料庫postgres的OID。
(2)查詢前面建立的testtable1表的OID。
postgres=# select oid,relname,relkind,relfilenode from pg_class
postgres-# where relname ='testtable1';
# 輸出的資訊如下:
oid | relname | relkind | relfilenode
-------+------------+---------+-------------
16395 | testtable1 | r | 16395
(1 row)
# 注意:16395是表testtable1的OID。
(3)檢視錶空間mydemotbs對應的目錄,如下圖所示。