溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PG體系結(jié)構(gòu)是怎樣的

發(fā)布時間:2021-11-10 10:18:30 來源:億速云 閱讀:198 作者:iii 欄目:關(guān)系型數(shù)據(jù)庫

本篇內(nèi)容介紹了“PG體系結(jié)構(gòu)是怎樣的”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

##pg 結(jié)構(gòu)
--邏輯結(jié)構(gòu)
--數(shù)據(jù)庫實例通常指數(shù)據(jù)庫集簇(database cluster),單個實例管理數(shù)據(jù)庫集合
--一個數(shù)據(jù)庫集簇包含用戶、數(shù)據(jù)庫,可為每個數(shù)據(jù)庫指定單獨的用戶,每個數(shù)據(jù)庫下面包含schemas(命名空間),默認為public,每個schemas下面包含表、索引、視圖、序列等。
--物理結(jié)構(gòu)
--數(shù)據(jù)文件、參數(shù)文件、控制文件、數(shù)據(jù)庫運行日志及預(yù)寫日志
--可通過以下命令查看目錄文件,具體作用可參考《Postgresql實戰(zhàn)》98頁
tree -L 1 -d /pgdata/10/data
--控制文件位置
[postgres@pgtest global]$ pwd
/pgdata/data/global
[postgres@pgtest global]$ ls -l pg_control 
-rw------- 1 postgres postgres 8192 Dec  7 04:56 pg_control
--數(shù)據(jù)文件布局
--oid,所有數(shù)據(jù)庫對象都有各自的對象標(biāo)識符(oid)進行內(nèi)部管理,它們是無符號的4字節(jié)整數(shù),例如
select oid,datname from pg_database;
select oid,relname,relkind from pg_class;
--表空間,最大的邏輯存儲單位
--默認兩個表空間,pg_global表空間,目錄為global,保存系統(tǒng)表;pg_default表空間的物理文件位置在base目錄,是template0和template1數(shù)據(jù)庫的默認表空間,
--創(chuàng)建表空間需要先創(chuàng)建目錄,表空間可以解決以后磁盤空不足問題、分配性能不同的磁盤上,提高數(shù)據(jù)庫性能
mkdir -p /pgdata/10/mytblspc
create tablespace myspc location '/pgdata/10/mytblspc';
create table t(id int4) tablespace myspc;
--數(shù)據(jù)文件命名,對于表大小超出1g,pg會自動切分多個文件,oid.順序號,真正管理表文件的是pg_class的relfilenode
--查看表的大小
select pg_size_pretty(pg_relation_size('tb1'::regclass));
--表文件內(nèi)部結(jié)構(gòu)
--pg中,保存在磁盤中的塊稱為Page,內(nèi)存中的塊稱為Buffer,表和索引稱為Relation,行稱為Tuple。數(shù)據(jù)讀寫以Page為最小單位,Page默認8KB
##進程結(jié)構(gòu)
--守護進程與服務(wù)進程
--postmaster進程主要職責(zé)
數(shù)據(jù)庫的啟停
監(jiān)聽客戶端連接
為每個客戶端連接fork單獨的postgres服務(wù)進程
當(dāng)服務(wù)進程出錯時進行修復(fù)
管理數(shù)據(jù)文件
管理與數(shù)據(jù)庫運行相關(guān)的輔助進程
--輔助進程
background writer:bgwriter進程,搜索共享緩沖池找到被修改的頁,并將它們從共享緩沖池刷出
autovacuum launcher: 自動清理回收垃圾進程
WAL writer: 定期將WAL緩沖區(qū)上的WAL數(shù)據(jù)寫入磁盤
statistics collector: 統(tǒng)計信息收集進程
logging collector: 日志進程,將消息或者錯誤信息寫入日志
archiver:WAL歸檔進程
checkpointer:檢查點進程
##內(nèi)存結(jié)構(gòu)
--本地內(nèi)存主要給后端進程使用,主要三部分
work_mem: 當(dāng)使用order by 或distinct會使用到
maintenance_work_mem: 維護操作,例如VACUUM REINDEX CREATE INDEX等操作
temp_buffers: 臨時表相關(guān)操作使用
--共享內(nèi)存,在服務(wù)器啟動時分配,由所有后端進程共同使用
shared buffer pool :PostgreSQL將表和索引頁面從持久存儲裝載到這里,并直接操作它們
WAL buffer: WAL文件持久化之前的緩沖區(qū)
CommitLog buffer:PostgreSQL 在Commit Log中保存事務(wù)的狀態(tài),并將這些狀態(tài)保留在共享內(nèi)存緩沖區(qū)中,在整個事務(wù)處理過程中使用

PG體系結(jié)構(gòu)是怎樣的

PG體系結(jié)構(gòu)是怎樣的

“PG體系結(jié)構(gòu)是怎樣的”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

pg
AI