W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
pg_prewarm
模塊提供一種方便的方法把關(guān)系 數(shù)據(jù)載入到操作系統(tǒng)緩沖區(qū)或者 PostgreSQL緩沖區(qū)。可以使用pg_prewarm
函數(shù)手工執(zhí)行預(yù)熱,或者通過在shared_preload_libraries中包括
pg_prewarm
來自動(dòng)執(zhí)行預(yù)熱。在后一種情況中,系統(tǒng)將運(yùn)行一個(gè)后臺(tái)工作者,它會(huì)周期性地把共享內(nèi)存中的內(nèi)容記錄在一個(gè)名為autoprewarm.blocks
的文件中,并且在重新啟動(dòng)后用兩個(gè)后臺(tái)工作者重新載入那些塊。
pg_prewarm(regclass, mode text default 'buffer', fork text default 'main',
first_block int8 default null,
last_block int8 default null) RETURNS int8
第一個(gè)參數(shù)是要預(yù)熱的關(guān)系。第二個(gè)參數(shù)是要使用的預(yù)熱方法,下文將會(huì) 進(jìn)一步討論。第三個(gè)參數(shù)是要被預(yù)熱的關(guān)系分叉,通常是main
。 第四個(gè)參數(shù)是要預(yù)熱的第一個(gè)塊號(hào)(NULL
也被接受,它等同于 零)。第五個(gè)參數(shù)是要預(yù)熱的最后一個(gè)塊號(hào)(NULL
表示一直 預(yù)熱到關(guān)系的最后一個(gè)塊)。返回值是被預(yù)熱的塊數(shù)。
有三種可用的預(yù)熱方法。prefetch
會(huì)向操作系統(tǒng)發(fā)出異步 預(yù)取請(qǐng)求(如果支持異步預(yù)?。恢С之惒筋A(yù)取則拋出一個(gè)錯(cuò)誤。 read
會(huì)讀取要求范圍的塊。與prefetch
不同,它是同步的并且在所有平臺(tái)上都被支持,但是可能較慢。 buffer
會(huì)把要求范圍的塊讀入道數(shù)據(jù)庫的緩沖區(qū)。
注意使用任意一種方法嘗試預(yù)熱比能緩存的數(shù)量更多的塊 — 使用 prefetch
或者read
(由 OS)或者使用 buffer
(由PostgreSQL
) — 將很可能導(dǎo)致高編號(hào)塊被讀入時(shí)把低編號(hào)的塊從緩沖區(qū)中逐出的情況。 被預(yù)熱的數(shù)據(jù)也不享受對(duì)緩沖區(qū)替換的特別保護(hù),因此其他系統(tǒng)活動(dòng)可能會(huì)在剛剛
被預(yù)熱的塊被讀入后很快就將它們逐出。反過來,預(yù)熱也可能把其他數(shù)據(jù)逐出緩存。 由于這些原因,預(yù)熱通常在啟動(dòng)時(shí)最有用,那時(shí)緩沖大部分都為空。
autoprewarm_start_worker() RETURNS void
啟動(dòng)主要的autoprewarm工作者。這通常將會(huì)自動(dòng)發(fā)生,但是如果沒有在服務(wù)器啟動(dòng)時(shí)配置自動(dòng)預(yù)熱并且用戶希望在稍晚的時(shí)候啟動(dòng)該工作者,這個(gè)函數(shù)就能發(fā)揮作用。
autoprewarm_dump_now() RETURNS int8
立即更新autoprewarm.blocks
。如果autoprewarm工作者沒有運(yùn)行但用戶希望它在下一次重啟后運(yùn)行,則這個(gè)函數(shù)會(huì)很有用。返回值是寫入到autoprewarm.blocks
中的記錄數(shù)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: