[转帖]PostgreSQL 的性能调优方法
https://juejin.cn/post/7119489847529570334
浅谈PostgreSQL的性能调校
PostgreSQL的性能调校是指调校数据库以提高性能和快速访问数据;我们可以通过调校查询和数据库性能相关的参数来调校PostgreSQL的数据库性能。为了提高性能,我们需要通过使用pg_stat_activity目录表从数据库中找到一个缓慢和长期运行的查询;在找到一个缓慢的查询后,我们需要找到一个查询的解释计划。为了提高数据库的性能,我们需要调整与性能相关的参数,如shared_buffers, wal_buffers, effective_cache_size, work_mem, maintainance_work_mem, and synchronous_commit;我们需要根据资源来改变这些参数。
如何在PostgreSQL中进行性能调优?
我们可以通过使用以下条件在PostgreSQL中进行性能调优。下面是我们必须调整的参数,以提高数据库的性能。
- 查询调优
- 索引调优
- 内存调优
- 存储调优
- 操作系统调整
- 网络调优
- 应用调优
- 配置参数调整
1.查询调优
- 为了调整数据库的性能,我们需要找到一个在数据库服务器上运行的查询的日志。
- 我们可以通过使用pg_stat_activity目录表找到一个长期运行的查询。下面的例子显示,在PostgreSQL中找到长期运行的或缓慢的查询。
select * from pg_stat_activity;

- 在上面的例子中,使用准确的开始时间,我们可以找到长期运行的查询。
- 在找到慢速查询后,我们需要创建该查询的解释计划;解释计划将显示与该慢速查询相关的以下信息:
- 节点
- 成本
- 实际时间
- 行数
- 宽度
- 索引扫描
- 循环
- 索引条件
- 使用上述参数,我们正在调整查询以提高数据库的性能。
- 下面的例子显示了在PostgreSQL中查找解释和解释分析查询计划。
explain select * from performance_table;
explain analyze select * from performance_table;

- 我们也在查询中使用了解释分析;它将显示与查询执行时间有关的额外信息。
- 节点被定义为在PostgreSQL中查询执行时正在执行的代码块。
- 解释计划中的节点包括工作的逻辑单位。
- 成本被定义为执行查询需要多少工作。成本被定义为两个数字,第一个数字包含启动成本,第二个数字包含发生的过程成本。
- 实际时间被定义为执行查询和检索其输出需要多少时间。这个时间以毫秒为单位显示。
- 行被定义为在查询中定义的行的数量。行是重要的因素,同时发现和解释查询的计划。
2.索引调整
- 索引的调整在PostgreSQL中也很重要,因为索引会增加选择查询的性能。
- 为了调整PostgreSQL中的索引,我们需要打开统计收集器。统计收集器将收集性能统计数据。
- 另外,我们还要调整查询中丢失的索引。在找到缺失的索引后,我们需要在该列上创建同样的索引。
3.存储调优
- 存储调整对于PostgreSQL数据库的巨大性能也很重要。我们需要定义正确的文件系统和正确的RAID级别,以提高数据库的性能。
- 正确的文件系统和正确的RAID级别将增加数据库服务器的I/O。
4.内存调整
- 在调整PostgreSQL数据库系统时,内存的调整也很重要。我们可以调整与内存相关的性能参数。
5.网络调优
- 我们还检查了应用服务器和客户端服务器之间的连接。在调优PostgreSQL的数据库服务器时,我们必须配置网络的适当链接。
6.操作系统调优
- 为了提高查询的性能,我们需要为PostgreSQL中的数据库选择合适的操作系统。
- 为数据库选择一个准确的操作系统也是调优PostgreSQL数据库的一个重要任务。
7.应用调优
- 在PostgreSQL性能调优中,我们需要调优PostgreSQL中的应用程序。我们必须检查应用程序与数据库的适当兼容性。
8.配置参数的调整
- 我们正在调整下面的配置参数,以提高PostgreSQL数据库的性能。
- 共享缓冲区(Shared_buffers
- 有效缓存大小
- 工作内存(Work_mem)
- 维护工作内存(Maintainance_work_mem
- 缓冲区
- 同步提交(Syncronous_commit
- 我们根据资源分配给PostgreSQL数据库系统的情况来调整上述配置参数。
- 提高数据库配置参数的性能起着非常重要的作用。
PostgreSQL性能调校的例子
下面是PostgreSQL性能调优的例子。
- 下面是一个PostgreSQL的性能调优的例子。我们使用performance_table来描述PostgreSQL性能调优的例子。
- 下面是performance_table的计数和结构。
select count(*) from performance_table;
\d+ performance_table;

1.创建一个索引来提高性能 -
- 下面的例子表明,创建一个索引来提高查询的性能。
- 在上面的例子中,创建索引查询后,性能会自动提高。
explain analyze select * from performance_table where id = 5;
create index test_pkey on performance_table (id);
explain analyze select * from performance_table where id = 5;

2.创建查询的解释计划以提高性能
- 下面的例子表明,为查询创建一个解释计划以提高查询的性能。
explain select * from performance_table where id = 5;
explain analyze select * from performance_table where id = 5;

3.改变配置参数以提高性能
- 下面的例子显示,改变配置参数以提高数据库的性能。
- 我们根据分配给数据库服务器的资源来改变配置参数。
free–m
vi /var/lib/pgsql/10/data/postgresql.conf
max_connections = 200
shared_buffers = 256MB
effective_cache_size = 768MB
maintenance_work_mem = 64MB
checkpoint_completion_target = 0.7
wal_buffers = 7864kB
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 1310kB
min_wal_size = 1GB
max_wal_size = 4GB

总结
我们可以通过使用查询调优、索引调优、内存调优、存储调优、操作系统调优、网络调优、应用程序调优、配置参数调优来提高性能。解释计划是用来显示查询的执行计划将显示我们查询的正确执行时间。
[转帖]PostgreSQL 的性能调优方法的更多相关文章
- 性能测试培训:tomcat性能调优方法
性能测试培训:tomcat性能调优方法 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest的loadrunner ...
- PostgreSQL 数据库性能调优的注意点
PostgreSQL提供了一些性能调优的功能.主要有如下几个方面.1.使用EXPLAIN EXPLAIN命令可以查看执行计划,这个方法是我们最主要的调试工具. 2.及时更新执行计划中使用的统计信息 ...
- Web app 的性能瓶颈与性能调优方法
1. web app 性能测试工具使用 2. mysql 性能分析与调优方法
- tomcat有哪些性能调优方法
前几天看见一篇介绍性能调优文章,觉得不错.特此收藏(http://blog.csdn.net/lifetragedy/article/details/7708724)
- Mysql性能调优方法
第一种方法 1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的 性能,我们可以将表中字 ...
- 【转】PostgreSQL Index性能调优
Index(索引)这个概念对于很多熟悉关系型数据库的人来说,不是一个陌生的概念.当表中数据越来越多时,在查询时,为了避免全表查询(sequence scan)可以在查询相关的条件字段上添加索引.举例来 ...
- Java SE和Java EE应用的性能调优
凡事预则立,不预则废,和很多事情一样.Java性能调优的成功.离不开行动计划.方法或策略以及特定的领域背景知识.为了在Java性能调优工作中有所成就.你得超越"花似雾中看"的状态, ...
- Hbase性能调优(一)
转自:https://blog.csdn.net/yueyedeai/article/details/14648111 1.修改Linux配置 Linux系统最大可打开文件数一般默认的参数值是1024 ...
- 性能调优之提高 ASP.NET Web 应用性能的 24 种方法和技巧
性能调优之提高 ASP.NET Web 应用性能的 24 种方法和技巧 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对 ...
- MySQL性能调优的10个方法 - mysql数据库栏目
摘要: https://edu.aliyun.com/a/29036?spm=5176.11182482.related_article.1.hbeZbF 摘要: MYSQL 应该是最流行了 WEB ...
随机推荐
- 互联网公司五八同城(58.com)研发效能团队建设之路
这是「二三线中型互联网公司研发效能团队规模.职能划分和优劣势分析」的一个铺垫,一个背景.因为如果不写此篇,大家可能仅得到一些经验总结,恐怕难以获取当时为啥做出那个决定.做决定要有上下文环境,要有场景才 ...
- 重磅更新!Sermant 1.2.0 release版本新特性速览
本文分享自华为云社区<重磅更新!Sermant 1.2.0 release版本新特性速览>,作者:华为云开源. 10月,Sermant社区正式发布了1.2.0 release版本,距离上一 ...
- 大模型高效开发的秘密武器:大模型低参微调套件MindSpore PET
摘要:本文介绍大模型低参微调套件--MindSpore PET. 本文分享自华为云社区<大模型高效开发的秘密武器--大模型低参微调套件MindSpore PET篇>,作者:yd_28087 ...
- 云小课|打造企业数据“高内聚,低耦合”--试试GaussDB(DWS)逻辑集群,实现数据物理隔离
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:逻辑集群是基于No ...
- 火山引擎 DataLeap 下 Notebook 系列文章二:技术路线解析
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 在 Jupyter 的生态下,除了 Notebook 本身,火山引擎 DataLeap 研发团队还注意到了很多其他 ...
- Mac Parallels (PD) 常规设置
Mac 上安装了 Parallels (PD) 程序默认使用 Parallels 打开,比较烦人,取消设置: 虚机中不显示 mac 的菜单栏 ,按 Control + Option 就会临时显示 备份 ...
- STM32CubeMX教程15 ADC - 多重ADC转换
1.准备材料 开发板(正点原子stm32f407探索者开发板V2.4) STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) ST-LINK ...
- 最火前端Web组态软件(可视化)
友情提示:本文为原创文章,转载请注明出处,商务合作请私信!!! 前言: 随着物联网.大数据等技术高速发展,我们逐步向数字化.可视化的人工智能(AI)时代的方向不断迈进.智能时代是工业 4.0 时代 ...
- 【题解】Qin Shi Huang's National Road System HDU - 4081 ⭐⭐⭐⭐ 【次小生成树】
During the Warring States Period of ancient China(476 BC to 221 BC), there were seven kingdoms in Ch ...
- 9、SpringBoot-mybatis-druid多源数据多源数据
系列导航 springBoot项目打jar包 1.springboot工程新建(单模块) 2.springboot创建多模块工程 3.springboot连接数据库 4.SpringBoot连接数据库 ...