checkpoint是一個數據庫事件,它將已修改的數據從高速緩存刷新到磁盤,並更新控制文件和數據文件,此時會有大量的I/O寫操作。
在PostgreSQL中,檢查點(後臺)進程執行檢查點;當發生下列情況之一時,其進程將啓動:
- 檢查點間隔時間由checkpoint_timeout設置(默認間隔爲300秒(5分鐘))
- 在9.5版或更高版本中,pg_xlog中WAL段文件的總大小(在10版或更高版本中爲pg_WAL)已超過參數max_WAL_size的值(默認值爲1GB(64個16MB文件))。
- PostgreSQL服務器在smart或fast模式下關閉。
- 手動checkpoint。
從lightdb 23.2開始,正式支持增量檢查點機制。啓用增量檢查點後,運行曲線如下:
雖然通過優化相關參數,也能達到比較接近的效果,但是完全依賴於DBA和精細調優的結果。而採用增量檢查點,該過程完全自動化了,大大提升了數據庫的自治性。
其由下列參數控制:
enable_incremental_checkpoint,是否啓用增量檢查點,默認:off
incre_checkpoint_timeout:增量檢查點模式下檢查點的觸發間隔
log_pagewriter:是否在PageWriter內打印日誌
enable_candidate_buf_usage_count:是否在管理頁面空閒隊列時考慮頁面的usage count
enable_double_write=off ,是否啓用雙寫,默認:off。如果未啓用增量檢查點,該參數無效。
dw_file_num:雙寫文件的數量
dw_file_size: 每個雙寫文件的大小
max_io_capacity:用戶預估的磁盤I/O帶寬
pagewriter_thread_num:PageWriter子進程的數量
pagewriter_sleep:PageWriter刷頁的間隔