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. 查询调优
  2. 索引调优
  3. 内存调优
  4. 存储调优
  5. 操作系统调整
  6. 网络调优
  7. 应用调优
  8. 配置参数调整

1.查询调优

  • 为了调整数据库的性能,我们需要找到一个在数据库服务器上运行的查询的日志。
  • 我们可以通过使用pg_stat_activity目录表找到一个长期运行的查询。下面的例子显示,在PostgreSQL中找到长期运行的或缓慢的查询。
 
csharp

复制代码
select * from pg_stat_activity;

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

复制代码
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数据库的性能。
  1. 共享缓冲区(Shared_buffers
  2. 有效缓存大小
  3. 工作内存(Work_mem)
  4. 维护工作内存(Maintainance_work_mem
  5. 缓冲区
  6. 同步提交(Syncronous_commit
  • 我们根据资源分配给PostgreSQL数据库系统的情况来调整上述配置参数。
  • 提高数据库配置参数的性能起着非常重要的作用。

PostgreSQL性能调校的例子

下面是PostgreSQL性能调优的例子。

  • 下面是一个PostgreSQL的性能调优的例子。我们使用performance_table来描述PostgreSQL性能调优的例子。
  • 下面是performance_table的计数和结构。
 
csharp

复制代码
select count(*) from performance_table;
\d+ performance_table;

1.创建一个索引来提高性能 -

  • 下面的例子表明,创建一个索引来提高查询的性能。
  • 在上面的例子中,创建索引查询后,性能会自动提高。
 
csharp

复制代码
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.创建查询的解释计划以提高性能

  • 下面的例子表明,为查询创建一个解释计划以提高查询的性能。
 
csharp

复制代码
explain select * from performance_table where id = 5;
explain analyze select * from performance_table where id = 5;

3.改变配置参数以提高性能

  • 下面的例子显示,改变配置参数以提高数据库的性能。
  • 我们根据分配给数据库服务器的资源来改变配置参数。
 
ini

复制代码
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 的性能调优方法的更多相关文章

  1. 性能测试培训:tomcat性能调优方法

    性能测试培训:tomcat性能调优方法   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest的loadrunner ...

  2. PostgreSQL 数据库性能调优的注意点

    PostgreSQL提供了一些性能调优的功能.主要有如下几个方面.1.使用EXPLAIN   EXPLAIN命令可以查看执行计划,这个方法是我们最主要的调试工具. 2.及时更新执行计划中使用的统计信息 ...

  3. Web app 的性能瓶颈与性能调优方法

    1. web app 性能测试工具使用 2. mysql 性能分析与调优方法

  4. tomcat有哪些性能调优方法

    前几天看见一篇介绍性能调优文章,觉得不错.特此收藏(http://blog.csdn.net/lifetragedy/article/details/7708724)

  5. Mysql性能调优方法

    第一种方法 1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的 性能,我们可以将表中字 ...

  6. 【转】PostgreSQL Index性能调优

    Index(索引)这个概念对于很多熟悉关系型数据库的人来说,不是一个陌生的概念.当表中数据越来越多时,在查询时,为了避免全表查询(sequence scan)可以在查询相关的条件字段上添加索引.举例来 ...

  7. Java SE和Java EE应用的性能调优

    凡事预则立,不预则废,和很多事情一样.Java性能调优的成功.离不开行动计划.方法或策略以及特定的领域背景知识.为了在Java性能调优工作中有所成就.你得超越"花似雾中看"的状态, ...

  8. Hbase性能调优(一)

    转自:https://blog.csdn.net/yueyedeai/article/details/14648111 1.修改Linux配置 Linux系统最大可打开文件数一般默认的参数值是1024 ...

  9. 性能调优之提高 ASP.NET Web 应用性能的 24 种方法和技巧

    性能调优之提高 ASP.NET Web 应用性能的 24 种方法和技巧   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对 ...

  10. MySQL性能调优的10个方法 - mysql数据库栏目

    摘要: https://edu.aliyun.com/a/29036?spm=5176.11182482.related_article.1.hbeZbF 摘要: MYSQL 应该是最流行了 WEB ...

随机推荐

  1. SaaS 营销怎么做?几点思考

    按大部分 SaaS 公司组织架构,梳理了这 4 大业务部门(产品.市场.销售.服务-客户成功)的职责和客户价值链条.如图: 根据客户价值体验地图,分为两块过程: 客户营销过程 客户成功过程 针对 Sa ...

  2. C++篇:第十四章_编程_知识点大全

    C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器 十四.编程 (一)概念 系统函数及其库是 C++语言所必须的,预处理命令不是 C ...

  3. 【华为云技术分享】40%性能提升,华为云推出PostgreSQL 12 商用版

    摘要:日前,华为云数据库正式推出了RDS for PostgreSQL 12版本,并开始商用.本文将从华为云RDS for PostgreSQL 12的4大特性和架构图等多方面来解读华为云Postgr ...

  4. tsconfig.json在配置文件中找不到任何输入,怎么办?

    摘要:原来在我们创建tsconfig.json文件的时候,VSCode会自动检测当前项目当中是否有TS文件:如果没有的话,就会报这个错提示我们去创建一个文件,再去使用. 本文分享自华为云社区<t ...

  5. 移动应用中的第三方SDK隐私合规检测,早知道

    摘要: 在移动应用隐私合规检测中,第三方SDK隐私声明由于其展现位置展现形式的多样性,自动化提取与解析是比较困难的任务. 本文分享自华为云社区<移动应用中的第三方SDK隐私合规检测>,作者 ...

  6. 火山引擎云原生数据仓库 ByteHouse 技术白皮书 V1.0 (Ⅳ)

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近日,<火山引擎云原生数据仓库 ByteHouse 技术白皮书>正式发布.白皮书简述了 ByteHou ...

  7. Axure App 垂直滚动

    拖两个动态面版 最外层[动态面板]用来定义显示区域,高度:692 (根据实际来) 里面的[动态面板],用来放内容,高度根据实际情况来,示例中是:1920 如下图所示 里面的[动态面板]添加垂直滚动 外 ...

  8. SQL Server 2016 自动备份、收缩数据库

    一般策略为:Oracle: 周一.二 增量备份,周三差异备份,周四.五.六增量备份,周日完整备份(建多计划) MsSQL: 周一.六差异备份,周日完整备份(建多计划) 打开SQL server配置管理 ...

  9. Linux CentOS 8 安装DHCP服务

    DHCP 如果虚拟机没有 /etc/dhcp/dhcpd.conf 文件,这可能是因为 DHCP 服务器软件包尚未安装,或者安装后配置文件未创建. 要创建 DHCP 服务器配置文件 dhcpd.con ...

  10. .NET Moq mock internal类型

    问题 Can not create proxy for type xxx because type xxx is not accessible. Make it public, or internal ...