最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PostgreSQL將數(shù)據(jù)加載到buffer cache中操作方法

 更新時(shí)間:2021年04月15日 10:57:04   作者:foucus、  
這篇文章主要介紹了PostgreSQL將數(shù)據(jù)加載到buffer cache中,我們可以使用pg_prewarm插件來將指定的表加載到OS Buffer或者pg shared buffer中,具體操作方法跟隨小編一起看看吧

我們都知道數(shù)據(jù)在緩存中訪問遠(yuǎn)比在磁盤中訪問速度要快,那么我們?cè)趺丛趐g中將指定的數(shù)據(jù)加載到緩存中呢,這有點(diǎn)類似于Oracle的in-memory。

當(dāng)然要注意并不是把數(shù)據(jù)加載到內(nèi)存中就一定是好的,因?yàn)橄噍^于磁盤,內(nèi)存總是有限的,所以一幫我們只是在特殊場(chǎng)合下將需要的數(shù)據(jù)加載到內(nèi)存中來加快訪問的速度。

我們可以使用pg_prewarm插件來將指定的表加載到OS Buffer或者pg shared buffer中。

安裝:

bill=# create extension pg_prewarm ;
CREATE EXTENSION

性能測(cè)試:

構(gòu)建測(cè)試表t1,t2,分別插入1000W條測(cè)試數(shù)據(jù)

bill=# create table t1(id int,info text);
CREATE TABLE
bill=# create table t2(id int,info text);
CREATE TABLE
bill=# insert into t1 select generate_series(1,10000000),md5(random()::text);
INSERT 0 10000000
bill=# insert into t2 select generate_series(1,10000000),md5(random()::text);
INSERT 0 10000000

測(cè)試前先清空shared_buffer,可以使用下面sql查看shared_buffer使用情況:
安裝pg_buffercache插件:

bill=# create extension pg_buffercache;
CREATE EXTENSION

查詢shared_buffer使用情況:

SELECT
    c.relname,
    count(*) AS buffers
FROM pg_buffercache b
INNER JOIN pg_class c
   ON b.relfilenode = pg_relation_filenode(c.oid)
    AND b.reldatabase IN (0, (SELECT oid FROM pg_database
WHERE datname = current_database()))
GROUP BY c.relname
ORDER BY 2 DESC;
                 relname                 | buffers
-----------------------------------------+---------
 pg_attribute                            |      36
 pg_proc                                 |      27
 pg_class                                |      15
 pg_operator                             |      14
 pg_depend_reference_index               |      13
 pg_depend                               |      11
 pg_attribute_relid_attnum_index         |      10
 pg_proc_proname_args_nsp_index          |       9
......

可以看到t1和t2表均不在shared_buffer中,我們來手動(dòng)將t2表加載到shared_buffer中。

bill=# SELECT pg_prewarm('t2');
 pg_prewarm
------------
      83334
(1 row)

性能測(cè)試:

可以看到全表掃描t2表的性能要提升不少。

bill=# explain analyze select * from t1;
                                                    QUERY PLAN
------------------------------------------------------------------------------------------------------------------
 Seq Scan on t1  (cost=0.00..183334.80 rows=10000080 width=37) (actual time=0.060..772.902 rows=10000000 loops=1)
 Planning Time: 0.294 ms
 Execution Time: 1044.922 ms
(3 rows)

Time: 1045.722 ms (00:01.046)

bill=# explain analyze select * from t2;
                                                    QUERY PLAN
------------------------------------------------------------------------------------------------------------------
 Seq Scan on t2  (cost=0.00..183334.80 rows=10000080 width=37) (actual time=0.012..519.691 rows=10000000 loops=1)
 Planning Time: 0.280 ms
 Execution Time: 790.607 ms
(3 rows)

Time: 791.314 ms

pg_prewarm其它介紹:

下面主要介紹下pg_prewarm函數(shù):
該函式的創(chuàng)建語句如下:

CREATE FUNCTION pg_prewarm(regclass,
mode text default buffer,
fork text default main,
first_block int8 default null,
last_block int8 default null)
RETURNS int8
AS MODULE_PATHNAME, pg_prewarm
LANGUAGE C

參數(shù)如下:

  • regclass:要做prewarm的表名
  • mode:prewarm模式。prefetch表示異步預(yù)取到os cache;read表示同步預(yù)??;buffer表示同步讀入PG的shared buffer
  • fork:relation fork的類型。一般用main,其他類型有visibilitymap和fsm
  • first_block & last_block:開始和結(jié)束塊號(hào)。表的first_block=0,last_block可通過pg_class的relpages字段獲得
  • RETURNS int8:函數(shù)返回pg_prewarm處理的block數(shù)目(整型)

可能有人會(huì)想:我直接將表select *全表查詢一遍不就可以將數(shù)據(jù)加載到緩存中了嘛,為什么還需要使用pg_prewarm呢?因?yàn)閷?duì)于大小超過shared_buffer/4的表進(jìn)行全表掃描時(shí),pg一般不會(huì)使用全部的shared_buffer,而是只使用很少一部分的shared_buffer。所以,將大表加載到緩存中不能用一個(gè)查詢來直接實(shí)現(xiàn)的,而pg_prewarm正好可以滿足這個(gè)需求。

參考鏈接:

https://www.postgresql.org/docs/13/pgprewarm.html
https://www.postgresql.org/docs/13/pgbuffercache.html

到此這篇關(guān)于PostgreSQL將數(shù)據(jù)加載到buffer cache中的文章就介紹到這了,更多相關(guān)PostgreSQL數(shù)據(jù)加載buffer cache內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • postgresql 12版本搭建及主備部署操作

    postgresql 12版本搭建及主備部署操作

    這篇文章主要介紹了postgresql 12版本搭建及主備部署操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL之分區(qū)表(partitioning)

    PostgreSQL之分區(qū)表(partitioning)

    通過合理的設(shè)計(jì),可以將選擇一定的規(guī)則,將大表切分多個(gè)不重不漏的子表,這就是傳說中的partitioning。比如,我們可以按時(shí)間切分,每天一張子表,比如我們可以按照某其他字段分割,總之了就是化整為零,提高查詢的效能
    2016-11-11
  • PostgreSQL如何查詢表結(jié)構(gòu)和索引信息

    PostgreSQL如何查詢表結(jié)構(gòu)和索引信息

    文章介紹了在PostgreSQL中查詢表結(jié)構(gòu)和索引信息的幾種方法,包括使用`\d`元命令、系統(tǒng)數(shù)據(jù)字典查詢以及使用可視化工具DBeaver
    2024-12-12
  • PostgreSQL模式匹配與正則表達(dá)式方法總結(jié)

    PostgreSQL模式匹配與正則表達(dá)式方法總結(jié)

    在postgresql中使用正則表達(dá)式時(shí)需要使用關(guān)鍵字“~”,以表示該關(guān)鍵字之前的內(nèi)容需匹配之后的正則表達(dá)式,這篇文章主要給大家介紹了關(guān)于PostgreSQL模式匹配與正則表達(dá)式的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • PostgreSQL 默認(rèn)權(quán)限查看方式

    PostgreSQL 默認(rèn)權(quán)限查看方式

    這篇文章主要介紹了PostgreSQL 默認(rèn)權(quán)限查看方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL13基于流復(fù)制搭建后備服務(wù)器的方法

    PostgreSQL13基于流復(fù)制搭建后備服務(wù)器的方法

    這篇文章主要介紹了PostgreSQL13基于流復(fù)制搭建后備服務(wù)器,后備服務(wù)器作為主服務(wù)器的數(shù)據(jù)備份,可以保障數(shù)據(jù)不丟,而且在主服務(wù)器發(fā)生故障后可以提升為主服務(wù)器繼續(xù)提供服務(wù)。需要的朋友可以參考下
    2022-01-01
  • postgresql 實(shí)現(xiàn)查詢出的數(shù)據(jù)為空,則設(shè)為0的操作

    postgresql 實(shí)現(xiàn)查詢出的數(shù)據(jù)為空,則設(shè)為0的操作

    這篇文章主要介紹了postgresql 實(shí)現(xiàn)查詢出的數(shù)據(jù)為空,則設(shè)為0的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL實(shí)現(xiàn)按年、月、日、周、時(shí)、分、秒的分組統(tǒng)計(jì)

    PostgreSQL實(shí)現(xiàn)按年、月、日、周、時(shí)、分、秒的分組統(tǒng)計(jì)

    這篇文章介紹了PostgreSQL實(shí)現(xiàn)按年、月、日、周、時(shí)、分、秒分組統(tǒng)計(jì)的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 查詢PostgreSQL中所有表邏輯外鍵的方法

    查詢PostgreSQL中所有表邏輯外鍵的方法

    本文介紹了如何查詢PostgreSQL中所有表的邏輯外鍵,并指導(dǎo)您如何先刪除再重新建立這些外鍵,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友一起看看吧
    2023-08-08
  • Postgresql數(shù)據(jù)庫之創(chuàng)建和修改序列的操作

    Postgresql數(shù)據(jù)庫之創(chuàng)建和修改序列的操作

    這篇文章主要介紹了Postgresql數(shù)據(jù)庫之創(chuàng)建和修改序列的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02

最新評(píng)論

方山县| 伊川县| 灵山县| 邢台县| 崇阳县| 伽师县| 亚东县| 株洲市| 固原市| 沂源县| 门源| 临颍县| 伊通| 永嘉县| 桐乡市| 额济纳旗| 随州市| 崇阳县| 五莲县| 西充县| 株洲市| 长治县| 循化| 原平市| 临洮县| 思茅市| 平塘县| 锡林浩特市| 成安县| 宿松县| 平山县| 吴川市| 乐亭县| 奉化市| 屏东市| 明溪县| 武威市| 红桥区| 扬中市| 江门市| 九龙坡区|