如何判断数据库调优是否卓有成效 (PostgreSQL)

ETL*_*ETL 5 postgresql database-tuning

作为一名 DBA,我会定期观察我的数据库,调整一些查询(让程序员重新编写它,或者添加索引或更新统计信息,如果需要的话,等等)。我还调整了服务器选项等。

但我不满意的是我没有好的指标来说明我的工作是否值得。

在一次性查询优化中,我可以判断我是否让查询运行得更快。我可以使用日志和 pgfouine 来检测慢查询。

但是是否有整体方法来量化数据库的运行情况,跟踪的指标会告诉我我是在总体上改进还是没有真正产生影响,等等?

我正在寻找在数据库级别捕获的指标,而不是在应用程序级别。

Mik*_*ll' 5

数据库运行的好坏就是 SQL 语句运行的好坏。

  • 选择命中服务器上每个数据库的 SQL 语句的代表性示例。挑选样品很容易;选择一个有代表性的样本不是。理想情况下,代表性示例应包括一些 SELECT、INSERT、UPDATE 和 DELETE 语句。但是对生产数据库运行 INSERT、UPDATE 和 DELETE 语句可能不切实际。
  • 将它们置于版本控制之下。
  • 针对服务器伪随机地运行它们。目标是获得具有代表性的性能,而不是获得最快的性能。上次我这样做时,我没有太多时间花在这些东西上,所以我希望有些随机地运行语句具有代表性。我预计有时他们会访问缓存,有时他们不会,就像用户查询一样。您执行这些查询的方式可能会使您的结果产生偏差;要小心和周到。
  • 计时执行。将计时保存在数据库中。
  • 控制图上绘制时序。如果做得正确,这将向您显示基线系统性能、基线周围的随机变化以及表明某些事情可能发生变化的模式。例如,如果您提高整体服务器性能,则期望模式向控制下限移动。
  • 考虑更改控制限的正确时间。(相同的参考)