溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PostgreSQL中checkpoint_completion_target參數(shù)對checkpoint調度的影響是什么

發(fā)布時間:2021-11-09 10:19:39 來源:億速云 閱讀:251 作者:iii 欄目:關系型數(shù)據(jù)庫

這篇文章主要介紹“PostgreSQL中checkpoint_completion_target參數(shù)對checkpoint調度的影響是什么”,在日常操作中,相信很多人在PostgreSQL中checkpoint_completion_target參數(shù)對checkpoint調度的影響是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PostgreSQL中checkpoint_completion_target參數(shù)對checkpoint調度的影響是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

PostgreSQL對checkpoint過程的調度,與數(shù)據(jù)庫在運行過程中產生日志的大小和時間兩個維度相關.

日志
PostgreSQL源碼中CalculateCheckpointSegments和IsCheckpointOnSchedule函數(shù)給出了checkpoint_completion_target參數(shù)對checkpoint調度的影響,在給出計算公式前,先行定義幾個變量:
checkpoint進度progress:

progress=(num_processed / num_to_scan)

其中:
1.num_processed已處理的臟塊數(shù)
2.num_to_scan總共需要處理的塊數(shù)

checkpoint啟動后產生的日志相對允許最大日志量的比例:

elapsed_xlogs = elapsed_xlogsize/wal_segment_size/checkpoint_segments
checkpoint_segments = max_wal_size_mb/wal_segment_size/(1.0 + checkpoint_completion_target)

其中:
1.elapsed_xlogsize是指在checkpoint啟動后產生的日志量(以MB為單位)
2.wal_segment_size默認為16MB
3.max_wal_size_mb是postgresql.conf配置文件中

在滿足以下條件時:

progress*checkpoint_completion_target ≥ elapsed_xlogs

在checkpointer進程會進行一定時間的休眠(100ms),以控制臟塊刷盤(包括fsync)的進度.

可以看出,上述條件的臨界點是:

progress*checkpoint_completion_target = elapsed_xlogs

現(xiàn)就此臨界點對該公式進行變換,讓checkpoint_completion_target放在等式的右邊:

(num_processed / num_to_scan)*checkpoint_completion_target = 
elapsed_xlogsize*(1.0 + checkpoint_completion_target)/max_wal_size_mb
-->
num_processed / num_to_scan = 
elapsed_xlogsize*(1.0/checkpoint_completion_target + 1)/max_wal_size_mb

由此可見,在其他變量一定的情況下,右邊算式的值與checkpoint_completion_target成反比,checkpoint_completion_target越大該值越小,意味著checkpointer進程休眠的機會越多.

時間
設elapsed_seconds=(now.tv_sec - ckpt_start_time + now.tv_usec / 1000000.0)表示過去消逝的時間
滿足以下條件,checkpointer進度可休眠:

(num_processed/num_to_scan)*checkpoint_completion_target ≥ elapsed_seconds / checkpoint_timeout
-->
num_processed/num_to_scan ≥ elapsed_seconds/(checkpoint_completion_target*checkpoint_timeout)

右邊表達式在其他變量一定的情況下,checkpoint_completion_target越大,則值越小,checkpointer可休眠的機會越大.

到此,關于“PostgreSQL中checkpoint_completion_target參數(shù)對checkpoint調度的影響是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI