PG使用插件pg_prewarm实现数据预加热

0    918    7

Tags:

👉 本文共约3316个字,系统预计阅读时间或需13分钟。

在MySQL中,在配置参数innodb_buffer_pool_dump_at_shutdown=1后,若在正常关闭MySQL时,就可以将内存缓冲区的信息 dump到一个文件内部(该文件名为ib_buffer_pool,为MySQL 5.6新特性),然后启动时通过加载该文件内部的块(需要配置innodb_buffer_pool_load_at_startup=1),实现对内存缓冲区的预热,从而提高数据库重启后的查询性能。

在PostgreSQL中,也有这种功能,只需要安装pg_prewarm插件即可。更好的消息是,从PG 9.4开始,pg_prewarm插件融入了 PostgreSQL发行版中,无需下载编译安装程序。

安装插件pg_prewarm

主要函数pg_prewarm的参数含义如下:

  • regclass:要做prewarm的表名

  • mode:prewarm模式。prefetch表示异步地将数据预加载到os cache;read表示同步预取,最终结果和 prefetch 一样,但它是同步方式,支持所有平台;buffer表示同步读入PG的shared buffer,默认为 buffer

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

  • first_block & last_block:first_block 表示开始 prewarm 的数据块,last_block 表示最后 prewarm 的数据块。表的first_block=0,last_block可通过pg_class的relpages字段获得

  • RETURNS int8:函数返回pg_prewarm处理的block数目(整型),pg_prewarm 函数返回的是加载后的数据块数

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

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

pg_prewarm使用

pg_prewarm 模块可以将数据预先加载到数据库缓存,也可以预先加载到操作系统缓存

所以,预热有两种方式,

一种是手动调用pg_prewarm函数,用于将当前所需的数据装入内存。

另一种是自动执行,要要设置shared_preload_libraries参数。设置完毕后,系统将自动运行一个后台工作进程postgres: autoprewarm master,它定期将shared_buffers中的内容写入到文件 autoprewarm. blocks中,以便在重新启动数据库后,快速加载该文件内部的数据块,实现预热功能。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
PG使用插件pg_prewarm实现数据预加热后续精彩内容已被小麦苗无情隐藏,请输入验证码解锁本站所有文章!
验证码:
请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“DB宝”或者“www_xmmup_com”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦。
  • 18509239930
  • 个人微信

  • DB宝
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部