您好,登錄后才能下訂單哦!
本篇內(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)是怎樣的”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責(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)容。