PostgreSQL如何使用系统OScache提升查询性能

今天就跟大家聊聊有关PostgreSQL如何使用系统OS cache 提升查询性能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

柏乡ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!

今天我们就来说说一个PG的扩展 pgfincore 让这个扩展来为我们更完善相关的服务和缓存状态的展示,pgfincore是2ndQuadrant 公司,一家专门为的开源插件。

下面其他的先不讲,先看这个插件能帮助我们做些什么,在讲其他的。

下图很清楚的显示了,一个300万行的表在系统中经历了2次 count的操作大致使用的时间,按照一般的数据库系统来说,我第一次查询和第二次查询如果查询语句是一致的,那第二次的速度应该比第一次快,因为我缓存了查询的语句和结果之间的对应关系(当然这里也有其他的情况,不在展开)。

图中我们使用pgfincore插件中的一个,将表或索引预装入到OS 缓存层面的功能,我们再次查询,发现比第二次的速度还快,仅仅300万的数据使用82毫秒。这说明我们将表或索引提升至OS的缓存中,对查询的加速是有效的吗,即使我们用不上什么索引,或没有所以的情况下。

PostgreSQL如何使用系统OS cache 提升查询性能

select * from pgsysconf();

PostgreSQL如何使用系统OS cache 提升查询性能

通过pgsyusconf() 可以查看当前系统的OS 控制的页面有多少,剩余多少。在通过这个插件可以很清晰的指导,当然我们缺少不缺少系统OS层面的缓存。(缺不缺 OS 系统缓存的问题我们可以解决了)

当然我们通过

select * from pgfincore('test'); 可以看到一个表的DISK 与OS PAGE 之间的对应的关系,

PostgreSQL如何使用系统OS cache 提升查询性能

下面做一个实验来证明,加载和不加载OS 内存的情况下,到底有什么区别,下图中包含了15次频繁的对一个表的 select * from 表 limit 10;的操作

PostgreSQL如何使用系统OS cache 提升查询性能

总体的数据在0.6986秒

我们在加载了OS 系统缓存后,我们在做15次

PostgreSQL如何使用系统OS cache 提升查询性能

显示总体30次的查询事假在0.9625秒,那加载后查询的15次的时间是

0.9625 - 0.6986 = 0.2639 秒 也就是说大致节省了 3分之二2 强的时间。

另外在前几期中讲了pg_rewarm 插件,可以在系统重启之后进行类似MySQL的 将系统重启动之前的数据灌入到INNODB BUFFER POOL中,但我们忽略了另一个问题,就是MYSQL 以及其他数据库是没有OS 缓存利用这么一说的,所以POSTGRESQL 如果你在重启后还可以考虑对部分数据,怎么快速的缓冲到 OS 的缓冲的事情。实际上在做了几个测试后,让我打消了使用pgfadvise_loader的想法,因为提升到速度只在第一次有效,另外如果是生产机有多少机会会经常重启,如果是测试机,有必要劳心劳力的作这个事情。

当然如果你感兴趣可以看一下官方的文档,关注一下 pgfadvise_loader可以满足你嫉妒优化的想法。

下面整理了一下相关的一些命令

1 select * from pgsysconf_pretty();

得到你系统的OS层面的缓冲信息

2 select * from pgfadvise_willneed('表名');

加载索引或表到OS CACHE 层面

3 select * from pgfadvise_dontneed('p表名');

卸载表的内容从OS CACHE 层面

看完上述内容,你们对PostgreSQL如何使用系统OS cache 提升查询性能有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


网页题目:PostgreSQL如何使用系统OScache提升查询性能
当前链接:http://scyanting.com/article/gchdgj.html