PostgreSql 資料庫及表的檔案儲存位置

2021-10-10 19:41:19 字數 1537 閱讀 3845

用pgadmin在postgresql新建資料庫的時候並不像sql server那樣有指定資料庫檔案目錄的設定。那麼資料庫檔案是存放在哪呢?帶著這個問題在網上搜尋了下,了解到postgresql是這樣安排資料庫和表的檔案存放位置的:

initdb 的時候會指定乙個 pgdata 目錄,這就是 postgresql 儲存資料的地方。典型的位置是在 /postgres/data a 。pgdata 下面各項儲存的內容大概是:

檔案或目錄名

儲存內容

pg_version

postgresql 例項的版本號如 9.3 之類的

base

每個 database 會在 base 目錄下有乙個子目錄

global

postgres 自己的 meta 資料庫存放的地方(全域性 db)

pg_xlog

wal(write ahead log 預寫式日誌)存放的地方

其他其他不知道幹啥的目錄還有好多

base 目錄是最重要的乙個目錄,放的是每乙個 database 的資料。base 目錄裡的每乙個數字目錄對於乙個 database 的 oid, 可以通過 檢視 pg_database 這張表檢視每乙個 資料庫的 oid 。

可以看到 oid和資料夾的名稱是對應的。

每一張表的資料(大部分)又是放在 base/(oid)/(relfilenode) 這個檔案裡面:

select relname, relowner, relfilenode from pg_class where relowner = 10 ;

--或者可以加入表名稱的過濾

可以知道 pg_statistic 存在 11867 檔案中

當然實際的儲存不會這麼簡單。每一張表的檔案都會有一些附加的儲存檔案,如檔名後加上 _fsm 的是空閒空間對映表 (free space map)。另外 base/(dboid)/(relfilenode) 這個檔案超過 1gb 以後,postgres 會把這個檔案拆分成不超過 1g 的多個檔案,檔案末尾加上 .1 .2 .3 … 做編號。 如 24589 24589.1 24589.2 。據說這是因為某些檔案系統支援的最大檔案大小有限制(如 fat32 只支援最大 4g )的檔案。

PostgreSQL資料庫 表空間 角色及使用者

postgresql資料庫 表空間 角色及使用者 2013 02 26 17 34 55 分類 mysql postgresql 一 建立資料庫 1 通過pgadmin建立資料庫testdb1 開啟資料庫testdb1看到建庫指令碼 在目錄 postgresql pg catalog 資料表 pg ...

postgresql資料庫常用操作命令及SQL語言

環境ubuntu,安裝了postgresql 截圖命令 shift prtsc可以有十字游標,任選截圖區域 alt prtsc擷取當前活動視窗 prtsc擷取整個螢幕 1postgresql常用操作 1 登入 peng peng virtual machine sudo u postgres psq...

PostgreSQL資料庫安裝及簡單操作

rehl7 centos7 postgresql 11 11 2 rehl7 postgresql 11 11 2 yum install y centos7 postgresql 11 11 2 yum install y2.yum方式安裝資料庫客戶端和服務端 yum install y post...