哪個進程在PostgreSQL中寫入數據文件?PostgreSQL-數據文件
什麼是PostgreSQL中的數據文件?
注意:在postgreSQL-9.5上執行插入/更新/刪除操作。我想驗證哪個進程在磁盤即數據文件上執行提交。使用WAL和數據文件。
哪個進程在PostgreSQL中寫入數據文件?PostgreSQL-數據文件
什麼是PostgreSQL中的數據文件?
注意:在postgreSQL-9.5上執行插入/更新/刪除操作。我想驗證哪個進程在磁盤即數據文件上執行提交。使用WAL和數據文件。
PostgreSQL數據庫集羣的數據文件位於數據目錄的data
子目錄下。他們寫了三個過程:
的背景作家過程寫入髒塊從緩衝區回磁盤,以確保有足夠的清潔塊。
的checkpointer過程寫入所有髒數據塊在特定的時間磁盤(檢查點),以提供用於崩潰恢復的起點。
的後端進程(即服務客戶端連接的過程)只有在後臺寫入跟不上而沒有足夠的空閒塊可將數據寫入到磁盤中。
的寫日誌或WAL,位於pg_xlog
,是完全不同的東西。它由緊接在COMMIT
之前的後端進程寫入,以確保將發生崩潰時恢復事務所需的信息安全地寫入磁盤。對於位於pg_clog
中的提交日誌也是如此,其包含如果事務被提交或回滾的信息。
數據可能會在COMMIT
之前寫入數據文件,但它們只在提交事務時纔可見。
這可能是值得一提的是,不僅DML語句導致被弄髒的數據塊:
後臺進程「自動清理」定期掃描表和索引和刪除未使用的條目。
第一進程讀取新寫入的數據將查找在提交日誌提交信息,並寫了暗示位的元組,使未來的讀者不必再這樣做的工作。
是的。 TL; DR是「大多數PostgreSQL處理寫入數據目錄中的文件,每個表都是一個或多個文件,還有其他特殊文件,除了.conf文件之外,不要修改數據目錄中的任何內容」。 –
http://www.cybertec.at/2016/11/postgresql-writer-and-wal-writer-processes-explained/和https://en.wikibooks.org/wiki/PostgreSQL/Architecture –
目前,我通過jmeter.checkpoint_completion_target = 0.3,checkpoint_timeout = 30s發起大量查詢,在每個查詢之間保持30秒的延遲,以便可以檢查數據文件上的數據刷新。 –
對於具體提交,執行提交的後端是寫入標記爲提交的事務的WAL記錄,然後更新'PGPROC'以設置共享內存狀態。但是該事務完成的其他部分工作可以由bgwriter編寫,稍後可以通過檢查指針將更改應用於堆等。 –