PostgreSQL提前緩存數(shù)據(jù)的方法

小編給大家分享一下PostgreSQL提前緩存數(shù)據(jù)的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

為河間等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及河間網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、河間網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

PostgreSQL怎么提前緩存數(shù)據(jù)

預(yù)熱功能,使用pg_prewarm函數(shù),方便的將數(shù)據(jù)緩存至內(nèi)存中。

這個(gè)功能不是自帶的,是存在在擴(kuò)展包中,所以要使用前需要先添加擴(kuò)展。

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ù)熱的relation。

第二個(gè)參數(shù)是要使用預(yù)熱的方法

第三個(gè)參數(shù)是relation fork被預(yù)熱

第四個(gè)參數(shù)是預(yù)熱的第一個(gè)塊號(hào)

第五個(gè)參數(shù)是預(yù)熱的最后一個(gè)塊號(hào)

返回值是prewarm塊的數(shù)量。

預(yù)熱方法有三種:

1、對(duì)操作系統(tǒng)發(fā)出異步prefetch請(qǐng)求

2、讀取塊的請(qǐng)求范圍,但可能會(huì)較慢

3、緩沖區(qū)將請(qǐng)求的塊范圍(執(zhí)行的查詢)讀入數(shù)據(jù)庫(kù)緩沖區(qū)緩存中。

注意,使用這些方法中的任何一種,試圖預(yù)熱更多的塊而不是緩存的操作系統(tǒng)——當(dāng)使用預(yù)取或讀取時(shí),或使用PostgreSQL在使用緩沖器時(shí)可能會(huì)導(dǎo)致較低編號(hào)的塊被釋放,因?yàn)檩^高編號(hào)的塊被讀入。預(yù)熱數(shù)據(jù)也沒有對(duì)緩存驅(qū)逐的特殊保護(hù),因此其他系統(tǒng)活動(dòng)可能會(huì)在讀取后不久將新的預(yù)熱塊驅(qū)逐出去;反之,預(yù)熱也可能從高速緩存中驅(qū)逐其他數(shù)據(jù)。由于這些原因,預(yù)熱通常在啟動(dòng)時(shí)最有用,當(dāng)緩存大部分為空時(shí)。

操作,實(shí)驗(yàn)環(huán)境:

CentOS 7 + PG 10.1

創(chuàng)建extension

mytest=# create extension pg_prewarm ;
CREATE EXTENSION

在這個(gè)實(shí)驗(yàn)中,我們需要借助pg_buffercache 來查看內(nèi)存中的變化。

mytest=# create extension pg_buffercache ;
CREATE EXTENSION

我們重啟一下pg

service postgresql-10 restart

查看內(nèi)存信息

mytest=# select count(*) from pg_buffercache where relfilenode = (select relfilenode from pg_class where relname = 'test01');
count
-------
0
(1 row)
mytest=# select pg_prewarm('test01','buffer','main') ;
pg_prewarm
------------
2041
(1 row)
mytest=# select count(*) from pg_buffercache where relfilenode = (select relfilenode from pg_class where relname = 'test01');
count
-------
2041
(1 row)

說明表已經(jīng)被緩存到內(nèi)存中。

看完了這篇文章,相信你對(duì)PostgreSQL提前緩存數(shù)據(jù)的方法有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)頁(yè)標(biāo)題:PostgreSQL提前緩存數(shù)據(jù)的方法
分享網(wǎng)址:http://bm7419.com/article38/jjsssp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版網(wǎng)站維護(hù)、軟件開發(fā)、網(wǎng)站建設(shè)網(wǎng)站制作、網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)