[转帖]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 ...
随机推荐
- 谈谈muduo库的销毁连接对象——C++程序内存管理和线程安全的极致体现
前言 网络编程的连接断开一向比连接建立复杂的多,这一点在陈硕写的muduo库中体现的淋漓尽致,同时也充分体现了C++程序在对象生命周期管理上的复杂性,稍有不慎,满盘皆输. 为了纪念自己啃下muduo库 ...
- 2023-09-10:用go语言编写。作为项目经理,你规划了一份需求的技能清单 req_skills, 并打算从备选人员名单 people 中选出些人组成一个「必要团队」 ( 编号为 i 的备选人员
2023-09-10:用go语言编写.作为项目经理,你规划了一份需求的技能清单 req_skills, 并打算从备选人员名单 people 中选出些人组成一个「必要团队」 ( 编号为 i 的备选人员 ...
- 文心一言 VS 讯飞星火 VS chatgpt (43)-- 算法导论5.4 7题
七.为使特征序列长度的下界变得更精确,请说明在 n 次硬币的公平抛掷中,不出现比Ign - 2lglgn 更长的连续正面特征序列的概率小于 1/n. 文心一言: 在 n 次硬币的公平抛掷中,每个硬币正 ...
- Go语言实现GoF设计模式:备忘录模式的实践探索
本文分享自华为云社区<[Go实现]实践GoF的23种设计模式:备忘录模式>,作者:元闰子. 简介 相对于代理模式.工厂模式等设计模式,备忘录模式(Memento)在我们日常开发中出镜率并不 ...
- 如何花“一点点小钱”突破华为云CCE服务的“防线”
摘要:有没有方法绕开CCE的限制,自由的调用K8s的API呢?有还便宜,2.4元/集群/天. 申明:所有的一切都是为了使得华为云可以更好,而不是为了diss它. 通过华为云购买多个K8s集群,又想使用 ...
- 详解KubeEdge边缘网络项目EdgeMesh
摘要:本文带大家进一步了解 EdgeMesh 的进展以及未来的规划. 本文分享自华为云社区<走向成熟的KubeEdge边缘网络项目EdgeMesh详解>,作者:华为云云原生团队 王杰章 . ...
- 火山引擎DataLeap如何解决SLA治理难题(一):应用场景与核心概念介绍
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 基于火山引擎分布式治理的理念,数据平台数据治理团队自研了火山引擎DataLeap SLA保障平台,目前已在字节内部 ...
- 火山引擎云原生数据仓库 ByteHouse 技术白皮书 V1.0(中)
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近日,<火山引擎云原生数据仓库 ByteHouse 技术白皮书>正式发布.白皮书简述了 ByteHou ...
- Solon Aop 特色开发(5)切面与环绕拦截
Solon,更小.更快.更自由!本系列专门介绍Solon Aop方面的特色: <Solon Aop 特色开发(1)注入或手动获取配置> <Solon Aop 特色开发(2)注入或手动 ...
- SQL SERVER 查询所有表 统计每张表的大小
(MySQL查看数据库表容量大小)[https://www.cnblogs.com/vipsoft/p/12145059.html] 查询某数据库中的所有数据表 SELECT name as tabl ...