日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
PostgreSQL數(shù)據(jù)讀取快慢怎么辦

這篇文章將為大家詳細(xì)講解有關(guān)PostgreSQL數(shù)據(jù)讀取快慢怎么辦,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了城北免費(fèi)建站歡迎大家使用!

PostgreSQL使用shared_buffers來緩存內(nèi)存中的塊。其思想是減少磁盤I/O并以最有效的方式加速數(shù)據(jù)庫。在正常操作期間,數(shù)據(jù)庫緩存將非常有用,并確保良好的響應(yīng)時間。但是,如果由于某種原因重新啟動數(shù)據(jù)庫實(shí)例,會發(fā)生什么情況呢?你的PostgreSQL數(shù)據(jù)庫性能將受到影響,直到你的I/O緩存再次填滿。這需要一些時間,而且可能會嚴(yán)重影響查詢響應(yīng)時間。

在PostgreSQL 11中,一個新的autoprewarm功能被添加到contrib模塊pg_prewarm中。這將使用在最后一次服務(wù)器重新啟動之前持有的相同頁面自動溫暖共享緩沖區(qū)。為了實(shí)現(xiàn)這一點(diǎn),Postgres現(xiàn)在有一個后臺工作程序來定期記錄文件中共享緩沖區(qū)的內(nèi)容——“autoprewarm.blocks”。接下來,它將在服務(wù)器重啟后重新加載這些頁面。

PostgreSQL可以通過 pg_prewarm 的方式來提供預(yù)熱緩沖的作用,pg_prewam 提供兩種功能,手動緩沖和自動緩沖。

如何安裝pg_prewarm及autoprewarm,以下基于pg 11 版本,在PG11中如果你編譯安裝則默認(rèn)的pg_prewarm 會被安裝到PG 中,確切地說,“autoprewarm master”將定期在文件“$PGDATA/autoprewarm.blocks”中記錄共享緩沖區(qū)中的頁面信息。更新“autoprewarm”的頻率。塊”由配置參數(shù)pg_prewarm_autoprewarm_interval決定。一旦服務(wù)器重新啟動,主服務(wù)器將讀取“autoprewarm”。塊”,并排序要預(yù)熱的頁面列表。接下來,它將每次為每個數(shù)據(jù)庫啟動一個worker。然后,每個數(shù)據(jù)庫工作程序(即autoprewarm工作程序)將加載屬于其數(shù)據(jù)庫的頁面。

安裝只需要兩步

1 需要在 shared_preload_libraries 中添加

PostgreSQL數(shù)據(jù)讀取快慢怎么辦

當(dāng)然你也可以執(zhí)行下面的命令

alter system set shared_preload_libraries = 'pg_prewarm';

從啟動服務(wù)器后,可以看到 autoprewarm master  的這個線程

PostgreSQL數(shù)據(jù)讀取快慢怎么辦

并且在數(shù)據(jù)目錄可以看到新生成的文件

PostgreSQL數(shù)據(jù)讀取快慢怎么辦

2  在你的數(shù)據(jù)庫中執(zhí)行(與預(yù)熱無關(guān))

create extension pg_prewarm;

裝載你的擴(kuò)展

在做完這些我們做一個測試,我們在打開的預(yù)熱的機(jī)器上,進(jìn)行分析查詢

可以看到第二次已經(jīng)走 cache了

PostgreSQL數(shù)據(jù)讀取快慢怎么辦

我們關(guān)閉postgresql 再從重啟動PG ,再次運(yùn)行,看到圖中查詢已經(jīng)走了cache 

PostgreSQL數(shù)據(jù)讀取快慢怎么辦

如果我們關(guān)閉數(shù)據(jù)庫,在關(guān)閉期間將autoprewarm.blocks刪除后,在重新啟動PG 我們看看結(jié)果如何

PostgreSQL數(shù)據(jù)讀取快慢怎么辦

很明確的看到查詢中沒有走緩沖。

那文件到底存儲了什么

第一行表示頁面的總數(shù),后面的每一行表示關(guān)于頁面的信息。每個頁面都由數(shù)據(jù)庫oid、表空間oid、關(guān)系的relfilenode、fork文件號和塊號惟一地表示。

PostgreSQL數(shù)據(jù)讀取快慢怎么辦

我們可以看一下系統(tǒng)中的 pg_prewarm函數(shù),在PG 中國函數(shù)是使用C語言撰寫的,當(dāng)然如果用C語言來寫 PG 的函數(shù),效率是很高的。

CREATE OR REPLACE FUNCTION public.pg_prewarm(

regclass,

mode text DEFAULT 'buffer'::text,

fork text DEFAULT 'main'::text,

first_block bigint DEFAULT NULL::bigint,

last_block bigint DEFAULT NULL::bigint)

    RETURNS bigint

    LANGUAGE 'c'

    COST 1

    VOLATILE PARALLEL SAFE

AS '$libdir/pg_prewarm', 'pg_prewarm'

;

其中會將四個參數(shù)傳遞給函數(shù) 1  將prewarm表名傳遞,2 prewarm 的模式  3第三個參數(shù)表的fork類型,最后最后兩個是開始和結(jié)束的block number

我們會進(jìn)行以下測試,看在不同的模式下,如果數(shù)據(jù)上送到緩沖中的速度的提升,以及不同模式有什么差異。

PostgreSQL數(shù)據(jù)讀取快慢怎么辦

上面是一個單表1.3G 的SIZE 的表。

下面我們需要對這個表進(jìn)行一個整體的 COUNT 運(yùn)算,我們來看看使用緩沖和不使用有什么區(qū)別

1 我們可以先裸奔一下,1.3G 大小的表進(jìn)行COUNT運(yùn)算時,整體的速度在不到2秒可以給出結(jié)果(I am sorry, 我的I/O 系統(tǒng)是 SSD)

PostgreSQL數(shù)據(jù)讀取快慢怎么辦

2 我們將數(shù)據(jù)進(jìn)行預(yù)讀

select pg_prewarm('bloom_table','read','main');

PostgreSQL數(shù)據(jù)讀取快慢怎么辦

3 我們將模式調(diào)整為 buffer 模式

explain analyze select count(*) from bloom_table;

PostgreSQL數(shù)據(jù)讀取快慢怎么辦

4 最后我們使用 prefetch 模式,異步的方式進(jìn)行預(yù)讀

PostgreSQL數(shù)據(jù)讀取快慢怎么辦

基本上這三種方式?jīng)]有特別大的差別,但實(shí)際上  read 為使用OS 系統(tǒng)緩沖的模式,buffer使用 postgresql 的buffer 模式, prefetch 為異步讀取數(shù)據(jù)模式。另一個需要注意的地方,就是大表的讀取到緩沖中與大表直接指向語句是不一樣的,如果你認(rèn)為僅僅通過select * from table 的方式就能將數(shù)據(jù)讀入到緩沖,postgresql 是不會允許這樣的事情發(fā)生的,一般這樣的操作僅僅是能將很少一部分?jǐn)?shù)據(jù)預(yù)讀進(jìn)緩沖。當(dāng)然如果你的內(nèi)存比較小的情況,你要注意這個問題,突然將一個大表讀入緩沖帶來的問題,可能是將正在使用的數(shù)據(jù)從你的buffer 中 擠出,這可不是什么好的操作。

PostgreSQL數(shù)據(jù)讀取快慢怎么辦

關(guān)于“PostgreSQL數(shù)據(jù)讀取快慢怎么辦”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。


網(wǎng)站題目:PostgreSQL數(shù)據(jù)讀取快慢怎么辦
鏈接URL:http://www.dlmjj.cn/article/jodhos.html