postgresql 效能提公升

2021-09-01 19:21:58 字數 1560 閱讀 3303

檔案:postgresql.conf

checkpoint又名檢查點,在oracle中checkpoint的發生意味著之前的髒資料全部寫回磁碟,資料庫實現了一致性與資料完整性。oracle在實現介質恢復時將以最近的checkpoint為參照點執行事務前滾。在postgresql中checkpoint起著相同的作用:寫髒資料;完成資料庫的完整性檢查。

checkpoint_segments:

wal log的最大數量,系統預設值是3。該值越大,在執行介質恢復時處理的資料量也越大,時間相對越長。

checkpoint_timeout:

系統自動執行checkpoint之間的最大時間間隔,同樣間隔越大介質恢復的時間越長。系統預設值是5分鐘。

checkpoint_completion_target:

該引數表示checkpoint的完成目標,系統預設值是0.5,也就是說每個checkpoint需要在checkpoints間隔時間的50%內完成。

checkpoint_warning:

系統預設值是30秒,如果checkpoints的實際發生間隔小於該引數,將會在server log中寫入寫入一條相關資訊。可以通過設定為0禁用資訊寫入。

checkpoint執行控制:

1,資料量達到checkpoint_segments*16m時,系統自動觸發;

2,時間間隔達到checkpoint_timeout引數值時;

3,使用者發出checkpoint命令時。

checkpoints引數調整:

正確合適的引數值總能夠給系統帶來益處,checkpoints引數合理的配置不僅能夠減少系統io寫入的阻塞,同時還會減少高峰時io給系統帶來的壓力。

首先可以通過觀察checkpoint_warning引數寫入的日誌,來估算系統寫入的資料量:一般情況下checkpoint_warning引數值小於checkpoint_timeout;

估算公式:checkpoint_segments*16m*(60s/m)/checkpoint_warning=大致每分鐘資料量,得到每分鐘寫入的資料量(這裡全部是估算,建立在warning引數的合理設定上)。

合理配置情況:checkpoint_segments*16m*checkpoint_timeout(m)略大於上述值.

以上述公式為依據,配置checkpoint_segments與checkpoint_timeout,兩個引數應該盡量平衡為乙個足夠大和足夠小的值。

在資料量異常高的情況下應該考慮,磁碟頻寬與checkpoint時資料量的關係。

個人觀點:

假如以checkpoint_segments引數為閥值時,可以計算高峰時需要的頻寬(秒):checkpoint_segments*16m/(checkpoint_warning*checkpoint_completion_target)。

假如以checkpoint_timeout引數為閥值時,checkpoint_warning值最好大於等於checkpoint_timeout,通過監控系統資料字典統計寫入的資料量total。

total/(checkpoint_timeout*checkpoint_completion_target)得到io的頻寬要求。

PostgreSQL的效能優化

postgresql 是全球最先進的開源資料庫。作為學院派關係型資料庫管理系統的鼻祖,它的優點主要集中在對 sql 規範的完整實現以及豐富多樣的資料型別支援 json 資料 ip 資料和幾何資料等,大部分商業資料庫都不支援 除了完美支援事務 子查詢 多版本控制 mvcc 資料完整性檢查等特性外,阿里...

提公升軟體效能

提高系統的安全性和健壯性,資料庫伺服器和應用伺服器,就要考慮冗餘設計。保證系統的高可用和高可靠以及高併發。保證系統在出現故障時,及時切換正常工作,使用雙機熱備份。使用redis快取伺服器提高系統的效能。使用讀寫分離技術減輕資料訪問的壓力,提公升系統的使用者體驗。在資料庫的設計上來使用分庫 分表 分割...

提公升頁面效能

1.資源壓縮合併,減少http請求 2.非核心 非同步載入 非同步載入的方式 a.動態指令碼載入 b.defer c.async defer 在html解析完成之後才會執行,並按照載入順序執行 async 在載入完成之後立即執行,和載入順序無關。3.利用瀏覽器快取 快取的分為強快取和協商快取 強快取...