PG技術大講堂 - 第13講:PostgreSQL Full-Page Writes 全頁寫

unix_5359發表於2023-04-13
PG技術大講堂 - 第13講:PostgreSQL Full-Page Writes 全頁寫

PostgreSQL從小白到專家,是從入門逐漸能力提升的一個系列教程,內容包括對PG基礎的認知、包括安裝使用、包括角色許可權、包括維護管理、、等內容,希望對熱愛PG、學習PG的同學們有幫助,歡迎持續關注CUUG PG技術大講堂。

Part 13:full-page Writes

內容1:PostgreSQL全頁寫概述

內容2:PostgreSQL 全頁寫特點

內容3:塊不一致造成的原因

內容4:是否可以禁用全頁寫


全頁寫概述

· Full-Page Writes(全頁寫)

PG技術大講堂 - 第13講:PostgreSQL Full-Page Writes 全頁寫


Full-Page Writes 特點

· 什麼是全頁寫

把資料塊寫入到WAL日誌中

· 目的是為了什麼

解決塊不一致問題,保護資料的完整性

· 有哪些缺點

全頁寫會導致WAL日誌膨脹,增加額外I/O

· 如何控制

full_page_writes


Full-Page Writes 模式

全頁寫模式

· 非強制模式:最近一次檢查點之後,第一次修改的資料塊會進行全頁寫,後續再修改時不會進行全頁寫,直到下一次檢查點發生。

· 強制模式:當用pg_basebackup對資料庫進行備份時,會自動執行強制模式,在備份期間被修改的資料塊會全部寫入WAL當中。執行pg_start_backup時,系統也會進入全頁寫模式。


塊不一致

塊不一致的原因

· 作業系統進行I/O操作時,總是以塊為單位,比如512位元組、1KB等等。

· 資料庫塊一般是作業系統塊的整數倍,比如2k、4k、8k等等。

· 塊是資料庫最小的I/O單位,當資料庫寫一個資料塊時,作業系統需要I/O多次,可能在I/O過程中系統斷電、磁碟故障等等原因導致一個資料塊沒有完整的寫入,導致塊不一致。

PG技術大講堂 - 第13講:PostgreSQL Full-Page Writes 全頁寫


全頁寫是否需要關閉

· 全頁寫會導致WAL日誌膨脹,增加額外I/O,影響資料庫整體效能

· 禁用全頁寫理由

  如果資料庫有完整的備份,可以禁用全頁寫

  如果優先考慮從資料庫整體效能,可以禁用全頁寫

  選擇能夠阻止部分頁面寫入的檔案系統(比如ZFS)


往期影片與教程,聯絡cuug


PG技術大講堂 - 第13講:PostgreSQL Full-Page Writes 全頁寫


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31544987/viewspace-2945549/,如需轉載,請註明出處,否則將追究法律責任。

相關文章