广告
返回顶部
首页 > 资讯 > 数据库 >PostgreSQL中怎么使用pg_prewarm插件
  • 827
分享到

PostgreSQL中怎么使用pg_prewarm插件

2024-04-02 19:04:59 827人浏览 薄情痞子
摘要

这篇文章主要介绍“postgresql中怎么使用pg_prewarm插件”,在日常操作中,相信很多人在Postgresql中怎么使用pg_prewarm插件问题上存在疑惑,小编查阅了各式资料,整理出简单好用

这篇文章主要介绍“postgresql中怎么使用pg_prewarm插件”,在日常操作中,相信很多人在Postgresql中怎么使用pg_prewarm插件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PostgreSQL中怎么使用pg_prewarm插件”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

使用pg_prewarm插件可”预热”数据.

安装pg_prewarm

[pg12@localhost pg_prewarm]$ make
make -C ../../src/backend generated-headers
make[1]: Entering directory `/home/pg12/source/postgresql-12beta3/src/backend'
make -C catalog distprep generated-header-symlinks
make[2]: Entering directory `/home/pg12/source/postgresql-12beta3/src/backend/catalog'
make[2]: Nothing to be done for `distprep'.
make[2]: Nothing to be done for `generated-header-symlinks'.
make[2]: Leaving directory `/home/pg12/source/postgresql-12beta3/src/backend/catalog'
make -C utils distprep generated-header-symlinks
make[2]: Entering directory `/home/pg12/source/postgresql-12beta3/src/backend/utils'
make[2]: Nothing to be done for `distprep'.
make[2]: Nothing to be done for `generated-header-symlinks'.
make[2]: Leaving directory `/home/pg12/source/postgresql-12beta3/src/backend/utils'
make[1]: Leaving directory `/home/pg12/source/postgresql-12beta3/src/backend'
GCc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-fORMat-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -O0 -DOPTIMIZER_DEBUG -g3 -gdwarf-2 -fPIC -I. -I. -I../../src/include  -D_GNU_SOURCE -I/usr/include/libxml2   -c -o pg_prewarm.o pg_prewarm.c -MMD -MP -MF .deps/pg_prewarm.Po
gcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -O0 -DOPTIMIZER_DEBUG -g3 -gdwarf-2 -fPIC -I. -I. -I../../src/include  -D_GNU_SOURCE -I/usr/include/libxml2   -c -o autoprewarm.o autoprewarm.c -MMD -MP -MF .deps/autoprewarm.Po
gcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -O0 -DOPTIMIZER_DEBUG -g3 -gdwarf-2 -fPIC -shared -o pg_prewarm.so pg_prewarm.o autoprewarm.o  -L../../src/port -L../../src/common    -Wl,--as-needed -Wl,-rpath,'/appdb/pg12/pg12beta3/lib',--enable-new-dtags  
[pg12@localhost pg_prewarm]$ sudo make install
[sudo] passWord for pg12: 
make -C ../../src/backend generated-headers
make[1]: Entering directory `/home/pg12/source/postgresql-12beta3/src/backend'
make -C catalog distprep generated-header-symlinks
make[2]: Entering directory `/home/pg12/source/postgresql-12beta3/src/backend/catalog'
make[2]: Nothing to be done for `distprep'.
make[2]: Nothing to be done for `generated-header-symlinks'.
make[2]: Leaving directory `/home/pg12/source/postgresql-12beta3/src/backend/catalog'
make -C utils distprep generated-header-symlinks
make[2]: Entering directory `/home/pg12/source/postgresql-12beta3/src/backend/utils'
make[2]: Nothing to be done for `distprep'.
make[2]: Nothing to be done for `generated-header-symlinks'.
make[2]: Leaving directory `/home/pg12/source/postgresql-12beta3/src/backend/utils'
make[1]: Leaving directory `/home/pg12/source/postgresql-12beta3/src/backend'
/bin/mkdir -p '/appdb/pg12/pg12beta3/lib/postgresql'
/bin/mkdir -p '/appdb/pg12/pg12beta3/share/postgresql/extension'
/bin/mkdir -p '/appdb/pg12/pg12beta3/share/postgresql/extension'
/bin/install -c -m 755  pg_prewarm.so '/appdb/pg12/pg12beta3/lib/postgresql/pg_prewarm.so'
/bin/install -c -m 644 ./pg_prewarm.control '/appdb/pg12/pg12beta3/share/postgresql/extension/'
/bin/install -c -m 644 ./pg_prewarm--1.1--1.2.sql ./pg_prewarm--1.1.sql ./pg_prewarm--1.0--1.1.sql  '/appdb/pg12/pg12beta3/share/postgresql/extension/'
[pg12@localhost pg_prewarm]$

简单使用

[local]:5432 pg12@testdb=# create extension pg_prewarm;
CREATE EXTENSION
Time: 10.460 ms
[local]:5432 pg12@testdb=# create table t_prewarm(id int,c1 varchar(20));
CREATE TABLE
Time: 2.796 ms
[local]:5432 pg12@testdb=# insert into t_prewarm select x,'c1-'||x from generate_series(1,100000);
ERROR:  column "x" does not exist
LINE 1: insert into t_prewarm select x,'c1-'||x from generate_series...
                                     ^
Time: 1.565 ms
[local]:5432 pg12@testdb=# insert into t_prewarm select x,'c1-'||x from generate_series(1,100000) as x;
INSERT 0 100000
Time: 242.437 ms
[local]:5432 pg12@testdb=# select pg_prewarm('t_prewarm');
 pg_prewarm 
------------
        541
(1 row)
Time: 2.399 ms

查看buffer cache

[local]:5432 pg12@testdb=# select * from vw_buffercache_hogs;
           key            | buffers | dirty_buffers | hog_factor 
--------------------------+---------+---------------+------------
                          |   64640 |             0 |     0.9863
 t_prewarm                |     543 |           541 |     0.0083
 - system catalogues      |     176 |            26 |     0.0027
 - unknown file 32856     |      32 |             1 |     0.0005
 - unknown file 32861     |      28 |             2 |     0.0004
 - global                 |      19 |             0 |     0.0003
 - unknown file 32869     |      15 |             4 |     0.0002
 - unknown file 32868     |      13 |             3 |     0.0002
 - unknown file 32860     |       8 |             1 |     0.0001
 - unknown file 32867     |       8 |             1 |     0.0001
 t_copy                   |       8 |             0 |     0.0001
 - unknown file 32873     |       7 |             2 |     0.0001
 - unknown file 32809     |       7 |             1 |     0.0001
 - unknown file 32816     |       6 |             4 |     0.0001
 - unknown file 32872     |       5 |             1 |     0.0001
 - unknown file 32874     |       4 |             2 |     0.0001
 pg_rewrite TOAST         |       4 |             3 |     0.0001
 - unknown file 32815     |       4 |             1 |     0.0001
 - unknown file 32859     |       3 |             1 |     0.0000
 pg_rewrite TOAST index   |       2 |             1 |     0.0000
 pg_statistic TOAST index |       2 |             0 |     0.0000
 pg_statistic TOAST       |       1 |             0 |     0.0000
 t_import                 |       1 |             0 |     0.0000
(23 rows)
Time: 106.757 ms

使用样例
通过预热,在执行查询前已把数据读取到cache中,可以提升查询性能
测试数据

[local]:5432 pg12@testdb=# drop table if exists t_prewarm;
DROP TABLE
Time: 9.680 ms
[local]:5432 pg12@testdb=# create table t_prewarm(id int,c1 varchar(20));
CREATE TABLE
Time: 4.736 ms
[local]:5432 pg12@testdb=# 
[local]:5432 pg12@testdb=# insert into t_prewarm(id,c1) select x,'c1-'||x from generate_series(1,1000000) as x;
INSERT 0 1000000
Time: 3783.073 ms (00:03.783)

没有预热的情况

[pg12@localhost ~]$ sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'
[sudo] password for pg12: 
[pg12@localhost ~]$ pg_ctl restart
waiting for server to shut down.... done
server stopped
waiting for server to start....2019-08-20 15:26:06.692 CST [2519] LOG:  starting PostgreSQL 12beta3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit
2019-08-20 15:26:06.697 CST [2519] LOG:  listening on IPv6 address "::1", port 5432
2019-08-20 15:26:06.697 CST [2519] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2019-08-20 15:26:06.701 CST [2519] LOG:  listening on Unix Socket "/tmp/.s.PGSQL.5432"
2019-08-20 15:26:06.739 CST [2519] LOG:  redirecting log output to logging collector process
2019-08-20 15:26:06.739 CST [2519] HINT:  Future log output will appear in directory "pg_log".
 done
server started
[pg12@localhost ~]$ time psql  -d testdb -c "select count(*) from t_prewarm;" -d testdb
Timing is on.
Expanded display is used automatically.
  count  
---------
 1000000
(1 row)
Time: 187.754 ms
real  0m0.261s
user  0m0.003s
sys 0m0.009s

先行预热的情况

[pg12@localhost ~]$ pg_ctl restart
waiting for server to shut down.... done
server stopped
waiting for server to start....2019-08-20 15:26:45.444 CST [2537] LOG:  starting PostgreSQL 12beta3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit
2019-08-20 15:26:45.445 CST [2537] LOG:  listening on IPv6 address "::1", port 5432
2019-08-20 15:26:45.445 CST [2537] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2019-08-20 15:26:45.448 CST [2537] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2019-08-20 15:26:45.484 CST [2537] LOG:  redirecting log output to logging collector process
2019-08-20 15:26:45.484 CST [2537] HINT:  Future log output will appear in directory "pg_log".
 done
server started
[pg12@localhost ~]$ sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'
[pg12@localhost ~]$ psql  -d testdb -c "select pg_prewarm('t_prewarm');"
Timing is on.
Expanded display is used automatically.
 pg_prewarm 
------------
       5406
(1 row)
Time: 109.636 ms
[pg12@localhost ~]$ time psql  -d testdb -c "select count(*) from t_prewarm;"
Timing is on.
Expanded display is used automatically.
  count  
---------
 1000000
(1 row)
Time: 88.713 ms
real  0m0.103s
user  0m0.003s
sys 0m0.006s

187.754 ms vs 88.713 ms

下面是使用索引的情况

[pg12@localhost ~]$ sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'
[pg12@localhost ~]$ pg_ctl restart
waiting for server to shut down.... done
server stopped
waiting for server to start....2019-08-20 15:30:54.227 CST [2567] LOG:  starting PostgreSQL 12beta3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit
2019-08-20 15:30:54.228 CST [2567] LOG:  listening on IPv6 address "::1", port 5432
2019-08-20 15:30:54.228 CST [2567] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2019-08-20 15:30:54.229 CST [2567] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2019-08-20 15:30:54.249 CST [2567] LOG:  redirecting log output to logging collector process
2019-08-20 15:30:54.249 CST [2567] HINT:  Future log output will appear in directory "pg_log".
 done
server started
[pg12@localhost ~]$ time psql -d testdb -c "select * from t_prewarm where id in (1,500000);"Timing is on.
Expanded display is used automatically.
   id   |    c1     
--------+-----------
      1 | c1-1
 500000 | c1-500000
(2 rows)
Time: 8.219 ms
real  0m0.041s
user  0m0.004s
sys 0m0.021s
[pg12@localhost ~]$ 
[pg12@localhost ~]$ sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'
[pg12@localhost ~]$ pg_ctl restart
waiting for server to shut down.... done
server stopped
waiting for server to start....2019-08-20 15:31:44.406 CST [2584] LOG:  starting PostgreSQL 12beta3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit
2019-08-20 15:31:44.409 CST [2584] LOG:  listening on IPv6 address "::1", port 5432
2019-08-20 15:31:44.409 CST [2584] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2019-08-20 15:31:44.412 CST [2584] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2019-08-20 15:31:44.446 CST [2584] LOG:  redirecting log output to logging collector process
2019-08-20 15:31:44.446 CST [2584] HINT:  Future log output will appear in directory "pg_log".
 done
server started
[pg12@localhost ~]$ time psql -d testdb -c "select pg_prewarm('idx_t_prewarm_id');"
Timing is on.
Expanded display is used automatically.
 pg_prewarm 
------------
       2745
(1 row)
Time: 43.962 ms
real  0m0.061s
user  0m0.000s
sys 0m0.007s
[pg12@localhost ~]$ time psql -d testdb -c "select * from t_prewarm where id in (1,500000);"Timing is on.
Expanded display is used automatically.
   id   |    c1     
--------+-----------
      1 | c1-1
 500000 | c1-500000
(2 rows)
Time: 5.431 ms
real  0m0.010s
user  0m0.001s
sys 0m0.001s

因为读取索引的block的数不多,因此性能差别不大.

到此,关于“PostgreSQL中怎么使用pg_prewarm插件”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: PostgreSQL中怎么使用pg_prewarm插件

本文链接: https://www.lsjlt.com/news/63658.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PostgreSQL中怎么使用pg_prewarm插件
    这篇文章主要介绍“PostgreSQL中怎么使用pg_prewarm插件”,在日常操作中,相信很多人在PostgreSQL中怎么使用pg_prewarm插件问题上存在疑惑,小编查阅了各式资料,整理出简单好用...
    99+
    2022-10-18
  • 怎么使用PostgreSQL contrib中的dblink插件
    这篇文章主要介绍“怎么使用PostgreSQL contrib中的dblink插件”,在日常操作中,相信很多人在怎么使用PostgreSQL contrib中的dblink插件问题上存在疑惑,小编查阅了各式...
    99+
    2022-10-18
  • 怎么安装使用PostgreSQL中pageinspcet插件
    本篇内容主要讲解“怎么安装使用PostgreSQL中pageinspcet插件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么安装使用PostgreSQL中p...
    99+
    2022-10-19
  • 怎么使用PostgreSQL的插件pgmetries
    这篇文章主要介绍“怎么使用PostgreSQL的插件pgmetries”,在日常操作中,相信很多人在怎么使用PostgreSQL的插件pgmetries问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操...
    99+
    2022-10-18
  • 怎么使用PostgreSQL的插件postgresql_anonymizer
    本篇内容主要讲解“怎么使用PostgreSQL的插件postgresql_anonymizer”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Postgr...
    99+
    2022-10-18
  • 怎么安装PostgreSQL的插件pg_catcheck
    这篇文章主要讲解了“怎么安装PostgreSQL的插件pg_catcheck”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么安装PostgreSQL的插件...
    99+
    2022-10-18
  • Postgresql Postgis插件综合使用教程
    数据库支持Postgis扩展: Postgresql 空间扩展需要Postgis插件 构建数据(aggregate_build_data)和聚合查询(aggregate_search): Postgesql 空间点聚合查询实验 ...
    99+
    2015-07-14
    Postgresql Postgis插件综合使用教程
  • PostgreSQL的插件pg_variables有什么作用
    本篇内容主要讲解“PostgreSQL的插件pg_variables有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL的插件pg_va...
    99+
    2022-10-18
  • goland中怎么使用leetcode插件
    今天小编给大家分享一下goland中怎么使用leetcode插件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。安装使用步骤:...
    99+
    2023-07-06
  • Myeclipse中怎么使用axis插件
    要在MyEclipse中使用Axis插件,您可以按照以下步骤进行操作:1. 打开MyEclipse,并进入“Window”菜单,选择...
    99+
    2023-08-23
    Myeclipse axis
  • 使用python怎么往Postgresql数据库中插入一个Null值
    使用python怎么往Postgresql数据库中插入一个Null值?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python是什么意思Python是一种跨平台...
    99+
    2023-06-07
  • a.vim插件怎么使用
    本篇内容介绍了“a.vim插件怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!A.vim如果你一直用像 C、C++ 这样的语言进行开发...
    99+
    2023-06-27
  • validationEngine插件怎么使用
    validationEngine插件是一个用于表单验证的jQuery插件,可以用于验证表单的输入内容是否符合要求。下面是使用vali...
    99+
    2023-08-19
    validationEngine
  • discuzx2插件怎么使用
    要使用DiscuzX2插件,您需要按照以下步骤进行操作:1. 下载插件:您可以在Discuz官方论坛或第三方插件站点上找到并下载需要...
    99+
    2023-08-24
    discuzx2
  • vue3中怎么使用vue-codemirror插件
    本文小编为大家详细介绍“vue3中怎么使用vue-codemirror插件”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue3中怎么使用vue-codemirror插件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知...
    99+
    2023-07-06
  • Elasticsearch中的Head插件怎么使用
    本篇内容主要讲解“Elasticsearch中的Head插件怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Elasticsearch中的Head插件怎么使用”吧!Elasticsearc...
    99+
    2023-06-27
  • 怎么在IOS中使用Cordova插件
    这篇文章给大家分享的是有关怎么在IOS中使用Cordova插件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、准备插件功能:打开IOS相机1:创建插件plugman create --name [插件名称] -...
    99+
    2023-06-14
  • 怎么在python中使用vim插件
    怎么在python中使用vim插件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Pyth...
    99+
    2023-06-14
  • tree插件怎么在centos中使用
    这篇文章给大家介绍tree插件怎么在centos中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。tree的安装: yum -y install tree 或者是 sudo apt-get install tree ...
    99+
    2023-06-10
  • PostgreSQL怎么使用
    这篇文章主要讲解了“PostgreSQL怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PostgreSQL怎么使用”吧!PostgreSQL 是一个免费的对象-关系数据库服务器(OR...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作