七叶笔记 » 数据库 » PostgreSQL将数据加载到buffer cache中操作方法

PostgreSQL将数据加载到buffer cache中操作方法

性能测试:

构建测试表t1,t2,分别插入1000W条测试数据

测试前先清空shared_buffer,可以使用下面sql查看shared_buffer使用情况: 安装pg_buffercache插件:

查询shared_buffer使用情况:

可以看到t1和t2表均不在shared_buffer中,我们来手动将t2表加载到shared_buffer中。

性能测试:

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

pg_prewarm其它介绍:

下面主要介绍下pg_prewarm函数: 该函式的创建语句如下:

参数如下:

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数目(整型)

可能有人会想:我直接将表select *全表查询一遍不就可以将数据加载到缓存中了嘛,为什么还需要使用pg_prewarm呢?因为对于大小超过shared_buffer/4的表进行全表扫描时,pg一般不会使用全部的shared_buffer,而是只使用很少一部分的shared_buffer。所以,将大表加载到缓存中不能用一个查询来直接实现的,而pg_prewarm正好可以满足这个需求。

参考链接:

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

到此这篇关于PostgreSQL将数据加载到buffer cache中的文章就介绍到这了,更多相关PostgreSQL数据加载buffer cache内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!

相关文章