詳解PostgreSQL中的checkpoint概念
checkpoint又名檢查點(diǎn),在Oracle中checkpoint的發(fā)生意味著之前的臟數(shù)據(jù)全部寫回磁盤,數(shù)據(jù)庫實(shí)現(xiàn)了一致性與數(shù)據(jù)完整性。Oracle在實(shí)現(xiàn)介質(zhì)恢復(fù)時(shí)將以最近的checkpoint為參照點(diǎn)執(zhí)行事務(wù)前滾。在PostgreSQL中checkpoint起著相同的作用:寫臟數(shù)據(jù);完成數(shù)據(jù)庫的完整性檢查。
checkpoints相關(guān)參數(shù):
checkpoint_segments:
WAL log的***數(shù)量,系統(tǒng)默認(rèn)值是3。該值越大,在執(zhí)行介質(zhì)恢復(fù)時(shí)處理的數(shù)據(jù)量也越大,時(shí)間相對越長。
checkpoint_timeout:
系統(tǒng)自動(dòng)執(zhí)行checkpoint之間的***時(shí)間間隔,同樣間隔越大介質(zhì)恢復(fù)的時(shí)間越長。系統(tǒng)默認(rèn)值是5分鐘。
checkpoint_completion_target:
該參數(shù)表示checkpoint的完成目標(biāo),系統(tǒng)默認(rèn)值是0.5,也就是說每個(gè)checkpoint需要在checkpoints間隔時(shí)間的50%內(nèi)完成。
checkpoint_warning:
系統(tǒng)默認(rèn)值是30秒,如果checkpoints的實(shí)際發(fā)生間隔小于該參數(shù),將會(huì)在server log中寫入寫入一條相關(guān)信息??梢酝ㄟ^設(shè)置為0禁用信息寫入。
checkpoint執(zhí)行控制:
1,數(shù)據(jù)量達(dá)到checkpoint_segments*16M時(shí),系統(tǒng)自動(dòng)觸發(fā);
2,時(shí)間間隔達(dá)到checkpoint_timeout參數(shù)值時(shí);
3,用戶發(fā)出checkpoint命令時(shí)。
checkpoints參數(shù)調(diào)整:
正確合適的參數(shù)值總能夠給系統(tǒng)帶來益處,checkpoints參數(shù)合理的配置不僅能夠減少系統(tǒng)IO寫入的阻塞,同時(shí)還會(huì)減少高峰時(shí)IO給系統(tǒng)帶來的壓力。首先可以通過觀察checkpoint_warning參數(shù)寫入的日志,來估算系統(tǒng)寫入的數(shù)據(jù)量:一般情況下checkpoint_warning參數(shù)值小于checkpoint_timeout;
估算公式:checkpoint_segments*16M*(60s/m)/checkpoint_warning=大致每分鐘數(shù)據(jù)量,得到每分鐘寫入的數(shù)據(jù)量(這里全部是估算,建立在warning參數(shù)的合理設(shè)置上)。
合理配置情況:checkpoint_segments*16M*checkpoint_timeout(m)略大于上述值.
以上述公式為依據(jù),配置checkpoint_segments與checkpoint_timeout,兩個(gè)參數(shù)應(yīng)該盡量平衡為一個(gè)足夠大和足夠小的值。在數(shù)據(jù)量異常高的情況下應(yīng)該考慮,磁盤帶寬與checkpoint時(shí)數(shù)據(jù)量的關(guān)系。
個(gè)人觀點(diǎn):
假如以checkpoint_segments參數(shù)為閥值時(shí),可以計(jì)算高峰時(shí)需要的帶寬(秒):checkpoint_segments*16M/(checkpoint_warning*checkpoint_completion_target)。
假如以checkpoint_timeout參數(shù)為閥值時(shí),checkpoint_warning值***大于等于checkpoint_timeout,通過監(jiān)控系統(tǒng)數(shù)據(jù)字典統(tǒng)計(jì)寫入的數(shù)據(jù)量Total。
Total/(checkpoint_timeout*checkpoint_completion_target)得到IO的帶寬要求。
原文標(biāo)題:postgresql之checkpoints
鏈接:http://www.cnblogs.com/daduxiong/archive/2010/09/28/1837682.html
【編輯推薦】
- PostgreSQL新版提高Oracle兼容性 欲與甲骨文試比高?
- Sun如何處理PostgreSQL和Java DB?
- PostgreSQL 8.2簡介 附下載地址
- 簡評MySQL和PostgreSQL優(yōu)劣
- 將你的網(wǎng)站從MySQL改為PostgreSQL