带有或不带有内置日志解析的数据库统计和报告

带有或不带有内置日志解析的数据库统计和报告

我更喜欢通用的统计实用程序/插件/应用程序,但不要限制自己,因为特定的也可能很好。

我想找到一种方法来查看查询所有查询的统计信息

例如显示和排序或过滤

  1. 所有查询,或
  2. 所有查询
  3. 所有或特定数据库,或
  4. 在特定的表格上。
  5. 或在特定的列上或
  6. 使用特定的查询正则表达式/参数;按查询次数最多、最长查询所用时间排序
  7. 不过,如果能添加一些图表就更好了。有没有这类应用程序或内置功能?

为此,你需要记录所有查询,然后运行 ​​/解析这些日志通过某种分析器。这可能需要自定义构建日志解析器应用程序。

当前服务器是高容量服务器:每秒 500 - 3000 个查询。日志可能存储在其他硬盘上。

问题:

  1. 是否有针对此类事物的预先构建的应用程序?

  2. 这会减慢常规查询的速度吗?如果会,大概会减慢多少?

  3. 有没有办法查看实时查询并在其他地方进行日志记录,或者根本不这样做,而通过其他应用程序制作实时统计报告?

  4. 我可能不会使用特定于数据库的统计生成器来解析日志,而只会获取日志文件并制作自己的解析器应用程序,然后使用这些日志制作统计数据和图表。可以将这些解析的状态放入另一个数据库中,其中包含查询值 + 执行所用时间 + 查询日期,然后稍后从中生成报告。这是个好主意吗?

  5. 不过,我没注意到有任何不将其记录到文件中就能完成所有这些操作的“实时”方法。

  6. mysql有没有为和预建的应用程序postgres?我就是用的这个。

  7. 有没有什么策略建议可以做到这一切?我刚开始思考“如何详细地进行性能分析”。

答案1

这是一个复杂的问题,可能没有简单的答案。

我使用过的一种方法是使用pg_logforward拦截日志,将它们转发到自定义守护进程,该守护进程将规范化的日志条目写入另一个 PostgreSQL 数据库。(Hadoop 等也是可能的。)然后针对该数据库运行临时查询,或者为自己构建一个漂亮的前端。它绝不是预先构建的,但在我看来,这是目前最强大的方法。

相关内容