我正在使用FreeBSD PostgreSQL搭建Web应用程序,我正在寻找一些数据库性能优化工具/技术。
我正在使用FreeBSD PostgreSQL搭建Web应用程序,我正在寻找一些数据库性能优化工具/技术。
但要了解应首先查看哪些查询,您需要知道它们执行的频率以及平均运行时间有多长。
一种方法是记录所有(或“慢”)查询及其运行时间,然后解析查询日志。pgfouine
是一个很好的工具,早在本讨论中就已经提到过它,但现在已被 pgbadger
取代,它使用一种更友好的语言编写,速度更快,维护得更加积极。
pgfouine
和 pgbadger
都存在一个问题,即需要启用查询日志记录,这可能会对数据库造成显着的性能影响,或者导致磁盘空间不足,此外,使用工具解析日志可能需要相当长的时间,并且无法为您提供关于数据库中正在进行的实时信息。
pg_stat_statements
(仅适用于9.2版本或更新版本)和pg_stat_plans
。这两个扩展程序提供相同的基本功能-跟踪特定的“规范化查询”(查询字符串减去所有表达式文字)已运行多少次以及总共花费了多长时间。由于这是在实际运行查询时完成的,因此效率非常高,合成基准测试中可测量的开销不到5%。
pg_statsinfo
(以及pg_stats_reporter
),但是将其启动需要一些工作。pg_stat_statements
和pg_stat_plans
,并增强了从数据库中收集的大量其他数据的信息。它被称为pganalyze
,您可以在https://pganalyze.com/找到它。#log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements
# and their durations, > 0 logs only
# statements running at least this time.
我还使用EMS Postgres Manager进行常规管理工作。它不会为您做任何事情,但它确实使大多数任务更加容易,并且使审查和设置模式更加简单。我发现,当使用GUI时,我更容易发现不一致之处(例如缺少索引、字段条件等)。这是我愿意在Mac上使用VMWare使用的两个程序之一。
http://munin-monitoring.org/browser/branches/1.4-stable/plugins/node.d/
首先要做的是使用“explain”从psql尝试所有查询,看看是否有可以通过添加索引或重写查询来转换为索引扫描的顺序扫描。
除此之外,我对这个问题的答案和你一样感兴趣。
DBTuna http://www.dbtuna.com/postgresql_monitor.php 最近开始支持 PostgreSQL 监控。我们广泛地使用它来监控 MySQL,因此如果它提供相同的功能来监控 Postgres,则它也应该适合您。