0
点赞
收藏
分享

微信扫一扫

pg_prewarm 预热表插件资料

pg_prewarm 预热表插件资料


安装

进入postgresql源码目录

进入其中的contrib目录,可以看到其中有很多插件

安装pg_prewarm插件:

进入pg_prewarm目录;

make

 make install

 create EXTENSION pg_prewarm;

插件内核是用下面的语句创建了pg_prewarm函数。这个函数是此插件提供的唯一函数:


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

参数含义


regclass:要做prewarm的表名

mode:prewarm模式。prefetch表示异步预取到os cache;read表示同步预取;buffer表示同步读入PG的shared buffer

fork:relation fork的类型。一般用main,其他类型有visibilitymap和fsm

first_block & last_block:开始和结束块号。表的first_block=0,last_block可通过pg_class的relpages字段获得

RETURNS int8:函数返回pg_prewarm处理的block数目(整型)

重启后可以看到多了一个进程postgres: autoprewarm master


使用预热


select pg_prewarm(#tablename, read, main);

select pg_prewarm('#tablename');


参数


SELECT name, setting, unit FROM pg_settings WHERE name LIKE 'pg_prewarm%';

相应的参数设置,pg_prewarm.autoprewarm

表示是否启动预热功能,pg_prewarm.autoprewarm_interval


\df autoprewarm*

autoprewarm_dump_now

表示在服务器启动期间没有配置自动预热功能时,可以使用此命令启动自动预热工作程序。

autoprewarm_start_worker

立马对 autoprewarm. blocks文件进行更新,如果自动预热进程当前没有运行,那么希望在下次重启之后运行它,这样做会很有用。



大表不建议预热,对内存占用较大,建议小表预热

举报

相关推荐

0 条评论