日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

PostgreSQL的核心架构

發布時間:2023/12/20 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PostgreSQL的核心架构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PostgreSQL的核心架構

注意?本人的博客都遷移到本人自己搭建的博客地址,通過此處可查看。

應用程序的訪問接口

1. 訪問接口總體圖

進程及內存結構

1. 進程和內存結構圖

  • 主進程:Postmaster進程

  • 輔助進程:SysLogger(系統日志)進程、BgWriter(后臺寫)進程、WALWrite(預寫式日志)進程、PgArch(歸檔)進程、AutoVacuum(系統自動清理)進程、PgStat(統計收集)進程、CheckPoint()進程。

2. 主進程 Postmaster

是整個數據庫實例的總控進程,負責啟動和關閉該數據庫實例。

3. Syslogger(系統日志)進程

需要在Postgres.conf中logging_collection設置為on,此時主進程才會啟動Syslogger輔助進程。

4. BgWriter(后臺)進程

把共享內存中的臟頁寫到磁盤上的進程。主要是為了提高插入、更新和刪除數據的性能。

5. WalWrite(預寫式日志)進程

WAL:Write Ahead Log(預寫式日志)

在修改數據之前把修改操作記錄到磁盤中,以便后面更新實時數據時就不需要數據持久化到文件中。

6. PgArch(歸檔)進程

WAL日志會被循環使用,PgArch在歸檔前會把WAL日志備份出來。通過PITY(Point in Time Recovery)技術,可以對數據庫進行一次全量備份后,該技術將備份時間點之后的WAL日志通過歸檔進行備份,使用數據庫的全量備份再加上后面產生的WAL日志,即可把數據庫向前推到全量備份后的任意一個時間點。

7. AutoVacuum(自動清理)進程

在PostgreSQL數據庫中,對表進行DELETE操作后,舊的數據并不會立即被刪除,并且,在更新數據時,也并不會在舊的數據上做更新,而是新生成一行數據。舊的數據只是被標識為刪除狀態,只有在沒有并發的其他事務讀到這些就數據時,它們才會被清楚。這個清除工作就有AutoVacuum進程完成。

8. PgStat(統計數據收集)進程

做數據的統計收集工作。主要用于查詢優化時的代價估算,包括一個表和索引進行了多少次的插入、更新、刪除操作,磁盤塊讀寫的次數、行的讀次數。pg_statistic中存儲了PgStat收集的各類信息。

9. 共享內存

PostgreSQL啟動后,會生成一塊共享內存,用于做數據塊的緩沖區,以便提高讀寫性能。WAL日志緩沖區和Clog緩沖區也存在共享內存中,除此之外還有全局信息比如進程、鎖、全局統計等信息也保存在共享內存中。

使用"mmap()“方式的共享內存,使用此內存的好處是不在需要配置"System V"共享內存的參數"kernel.shmmax"和"kernel.shmall”,就能使用較大的共享內存。

10. 本地內存

非全局存儲的數據都存在本地內存中,主要包括:

  • 臨時緩沖區:用于訪問臨時表的緩沖區

  • work_mem: 內部排序操作和Hash表在使用臨時操作文件之前使用的存儲緩沖區。

  • manintance_work_mem: 在維護操作比如:VACUUM、CREATE INDEX、ALTER TABLE ADD FOREIGN Key等中使用的內存緩沖區。

總結

以上是生活随笔為你收集整理的PostgreSQL的核心架构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。