PostgreSQL数据库日志交易



我是去年的大学生,我现在正在做论文。我的标题是基于日志分析的"索引建议"。该项目将分析PostgreSQL交易日志,以向将测试的数据库提供索引建议。

这项研究将通过分析经常访问的属性来开发索引推荐工具(使用SELECT语句)。

但是,我发现很难找到PostgreSQL日志文件。我的问题是,在哪里可以找到PostgreSQL日志事务数据集?或其他数据库日志交易数据集?

您正在混合交易日志(WAL)和常规文本日志文件。

后者确实包含语句(如果设置了配置),而事务日志根本不包含语句,则只需二进制信息。

您将无法仅通过查看查询来推荐索引,我也不能这样做。

我有一个建议:如果要编写建议索引的工具,则应将EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON) SELECT /* your query */的输出作为输入。

此外,该工具必须连接到数据库,以查询表和索引元数据(也许是统计数据)。这使您依赖数据库版本,因为元数据可以更改(并且请参见分区表),但这在论文论文中并不与您有关。

任务仍然并不简单(查询优化是AI),但是您至少有机会。

在这里对聚会有点晚,但是您可能想要的是pg_stat_statements。使用它列出具有最高total_exec_time的查询,并查看其查询计划。然后,您将考虑添加可以加快加入或扫描这些查询的索引。

这应该可以在某种程度上自动化。同样,建议使用索引使用统计信息进行删除索引。就个人而言,我很想拥有一个自动执行此类建议的工具,这将是个人资料指导优化的一个很好的例子。

您需要运行下面的查询,然后重新启动PostgreSQL以持续启用记录。*带有ALTER SYSTEM SET的参数设置为postgresql.auto.conf,而不是postgresql.conf

ALTER SYSTEM SET log_statement = 'all';

,并且您需要运行以下任何一个查询,然后重新启动PostgreSQL以持续禁用日志记录:

ALTER SYSTEM RESET log_statement;

或:

ALTER SYSTEM SET log_statement = 'none';

您也可以运行以下查询,然后需要重新启动PostgreSQL以持续启用记录:

ALTER SYSTEM SET log_min_duration_statement = 0;

,您也可以运行以下任何一个查询,然后需要重新启动PostgreSQL以持续禁用日志记录:

ALTER SYSTEM RESET log_min_duration_statement;

或:

ALTER SYSTEM SET log_min_duration_statement = -1;

您可以看到我的答案,以说明有关如何在PostgreSql上启用和禁用查询日志的更多信息。

最新更新