使用pg_prewarm缓存PostgreSQL数据库表

这篇具有很好参考价值的文章主要介绍了使用pg_prewarm缓存PostgreSQL数据库表。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

pg_prewarm

pg_prewarm 直接利用系统缓存的代码,对操作系统发出异步prefetch请求,在应用中,尤其在OLAP的情况下,对于大表的分析等等是非常耗费查询的时间的,而即使我们使用select table的方式,这张表也并不可能将所有的数据都装载到内存中,而pg_prewarm的功能就是完成一个张表全部进入到内存中的功能。

按照官方文档 PostgreSQL 13的说明,预热有两种方式,一种是手动调用pg_prewarm函数,用于将当前所需的数据装入内存。另一个选择是自动执行,要要设置shared_preload_libraries参数。设置完毕后,系统将自动运行一个后台工作进程,它定期将shared_buffer中的内容写入到文件 autoprewarm. blocks中,以便在重新启动数据库后,快速加载该文件内部的数据块,实现预热功能。

安装与使用方式

create extension pg_prewarm;
-- t1为表名
SELECT pg_prewarm('t1');

参数

函数体为

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

因为对于大小超过shared_buffer/4的表进行全表扫描时,pg一般不会使用全部的shared_buffer,而是只使用很少一部分的shared_buffer。所以,将大表加载到缓存中不能用一个查询来直接实现的,而pg_prewarm正好可以满足这个需求。

性能测试

在一个3363786记录数的业务表中,添加缓存之前的

explain (analyze,buffers) select *  from t1;

使用pg_prewarm缓存PostgreSQL数据库表,postGIS,数据库,缓存,postgresql,索引,优化,pg_prewarm
添加缓存后

create extension pg_prewarm
SELECT pg_prewarm('t1');
explain (analyze,buffers) select *  from t1;

使用pg_prewarm缓存PostgreSQL数据库表,postGIS,数据库,缓存,postgresql,索引,优化,pg_prewarm
对比上面2图,可以看出,时间大幅度下降.文章来源地址https://www.toymoban.com/news/detail-622915.html

到了这里,关于使用pg_prewarm缓存PostgreSQL数据库表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • postgresql|数据库|MySQL数据库向postgresql数据库迁移的工具pgloader的部署和初步使用

    postgresql|数据库|MySQL数据库向postgresql数据库迁移的工具pgloader的部署和初步使用

    MySQL数据库和postgresql数据库之间的差异并不多,这里的差异指的是对SQL语言的支持两者并不大,但底层的东西差异是非常多的,例如,MySQL的innodb引擎概念,数据库用户管理,这些和postgresql相比是完全不同的(MySQL用户就是用户,没有角色,postgresql有用户,有角色,但差异不

    2024年02月14日
    浏览(16)
  • 使用docker部署postgreSQL数据库

    使用docker部署postgreSQL数据库

    随着docker的广泛应用,为了提供便利的管理,PostgreSQL数据库也支持docker的安装方式。下面详细介绍docker安装PostgreSQL数据库的方法。 1、查看下载数据库镜像命令 访问dockerhub官网:https://registry.hub.docker.com/ 地址,下载指定版本的postgresql数据库。 2、执行下载命令 在安装有doc

    2024年02月11日
    浏览(7)
  • 使用 Python 连接到 PostgreSQL 数据库

    使用 Python 连接到 PostgreSQL 数据库

    本文介绍了创建与 PostgreSQL 上的数据库的连接的过程。 我们需要安装 PostgreSQL 和创建数据库等先决条件,如下所述。 顾名思义,PostgreSQL 是一款为高效管理数据库系统而创建的 SQL 系统软件。 在连接Python之前需要创建数据库。 Postgres,实现它。 许多刚开始学习数据库开发的

    2024年04月12日
    浏览(8)
  • postgresql(一):使用psql导入数据库

    postgresql(一):使用psql导入数据库

    大家好,我是欧阳方超。 听说postgresql越来越流行了?psql是一个功能强大的命令行工具,用于管理和操作PostgreSQL数据库。它提供了一个交互式环境,允许用户执行SQL查询、创建和管理数据库、执行备份和恢复等操作。今天把公司的pg库迁到Windows机器上,在使用psql命令的过程

    2024年02月12日
    浏览(9)
  • postgresql数据脱敏技术介绍以及使用字符替换数据库脱敏示例代码

    在 PostgreSQL 数据库中实现数据脱敏(Data Masking)可以帮助保护敏感数据的隐私和安全。数据脱敏是通过修改或替换敏感数据的方法来隐藏或模糊数据的真实值,以防止未经授权的访问者获取敏感信息。 以下是一些常见的 PostgreSQL 数据库脱敏技术: 数据加密:使用加密算法对

    2024年02月16日
    浏览(10)
  • pg数据库授权

    创建用户角色 此处说明,在pg库里面用户和角色的概念其实无区别 授权命令 授权参数说明 权限撤销 如果用户需要创建表的权限对该角色进行全部授权之后,发现建表的时候报错说什么当前用户是一个readonly的会话可以进行下面操作进行修改 参考连接:https://blog.csdn.net/eagl

    2024年02月11日
    浏览(12)
  • pg数据库安装

    pg数据库安装

    pg数据库安装 下载对应的安装包 安装服务 使用安装包直接安装 rpm -ivh postgresql13-libs-13.1-3PGDG.rhel7.x86_64.rpm rpm -ivh postgresql13-13.1-3PGDG.rhel7.x86_64.rpm rpm -ivh postgresql13-server-13.1-3PGDG.rhel7.x86_64.rpm rpm -ivh postgresql13-contrib-13.1-3PGDG.rhel7.x86_64.rpm 配置用户数据存储目录日志目录 [root@rocketm

    2023年04月19日
    浏览(9)
  • C# 使用EntityFramework CodeFirst 创建PostgreSQL数据库

    C# 使用EntityFramework CodeFirst 创建PostgreSQL数据库

    1.先创建一个ASP.Net Web应用程序,选择Web API  2、创建EntityLib、EF、AppService三个类库。EntityLib用于存放数据库表所对应的实体,AppService用于编写用户对实体的一些操作方法,如增删改查等操作。  创建好所有类库之后,需要添加引用库EntityFramework6.Npgsql,右击项目中的引用——

    2024年02月16日
    浏览(10)
  • 如何在PostgreSQL中使用pg_stat_statements插件进行SQL性能统计和分析?

    如何在PostgreSQL中使用pg_stat_statements插件进行SQL性能统计和分析?

    PostgreSQL中的 pg_stat_statements 是一个强大的插件,用于追踪执行时间最长的SQL语句。通过它,我们可以获取有关SQL语句执行频率、总执行时间、平均执行时间等信息,从而进行性能调优和问题分析。 首先,我们需要确保 pg_stat_statements 插件已经安装。在大多数PostgreSQL发行版中,

    2024年04月25日
    浏览(23)
  • PostgreSQL数据库——Docker版本的postgres安装 & Navicat连接方式+导入向导使用 & SpringBoot结合Jpa使用PostgreSQL初步

    PostgreSQL数据库——Docker版本的postgres安装 & Navicat连接方式+导入向导使用 & SpringBoot结合Jpa使用PostgreSQL初步

    1.PostgreSQL数据库初始,开源; 2.Docker版本的postgres安装,以及挂载启动; 3.Navicat连接方式+导入向导使用,导入csv文件; 4.SpringBoot结合Jpa使用PostgreSQL初步; PostgreSQL是一种开源的关系型数据库管理系统(RDBMS),它是一种高度可扩展的、可靠的、功能丰富的数据库系统。以下是

    2024年02月04日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包