[转帖]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 ...
随机推荐
- win11 右击还原 win10的
以管理员身份 打开 powershell, 然后输入如下代码 .\reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a ...
- GaussDB(DWS)条件表达式函数返回错误结果集排查
摘要:条件表达式函数中出现结果集不一致问题,我们首先要考虑是否入参数据类型不一致导致出参不一致. 本文分享自华为云社区<GaussDB(DWS)条件表达式函数返回错误结果集排查>,作者:y ...
- 详解物联网Modbus通讯协议
摘要:Modbus是当前非常流行的一种通讯协议. 本文分享自华为云社区<一文搞懂物联网Modbus通讯协议丨[拜托了,物联网!]>,作者: jackwangcumt. 1 概述 随着IT技 ...
- 从java到JavaScript(2):对比Java/Go/Swift/Rust看Dart
Dart与Java的一些直观区别 Dart和java以及C#都差不多,基本上不用学习可以直接使用,从这里可以你可以了解Dart有些特别之处.其实对于Java开发人员来说Dart,还是相对好理解的 基本 ...
- WebKit三件套(2):WebKit之JavaScriptCore/V8
WebKit作为一个浏览器引擎,其中Javascript实现包括JavaScriptCore和V8,为了能更全面的了解WebKit,我们需要深入的了解Javascript实现的基本原理.其在WebKi ...
- iOS描述文件(.mobileprovision)一键申请
转载:IOS描述文件制作教程 iOS描述文件(.mobileprovision)一键申请 在主界面上点击描述文件按钮. 编辑切换为居中 添加图片注释,不超过 140 字(可选) 新建ios ...
- Java 图片、文件 Base64 互转
Java 图片.文件 Base64 互转 package com.thoth.his.base.util; import java.io.FileInputStream; import java.io ...
- three.js 视频融合
MixVideo.js代码: //视频融合 import * as THREE from '../build/three.module.js'; import { API } from '../js. ...
- 自用 IntelliJ IDEA Vim 插件配置
Prefrence: https://einverne.github.io/post/2020/12/my-idea-vimrc-config.html https://gist.github.com ...
- Windows Tools | How To Install VS Microsoft C++ Build Tools on Windows
This can be used for installing anything that requires C++ compiler on Windows. Installation steps D ...