【问题标题】:PostgreSQL Database Log TransactionPostgreSQL 数据库日志事务
【发布时间】:2019-07-13 19:26:08
【问题描述】:

我是去年的大学生,现在正在做我的论文。我的题目是“基于日志分析的索引建议”。本项目将分析 PostgreSQL 事务日志,为将要测试的数据库提供索引推荐。

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

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

【问题讨论】:

  • 但是SELECT 没有记录在事务日志中。我不是要贬低你,但你不应该在写论文之前学习基础知识吗?
  • 您必须在某个地方连接到查询优化器,但这不是一项简单的任务。
  • 你说的是write-ahead log,还是server log? WAL(又名事务日志)不记录查询,但服务器日志会(如果你告诉它)。如果您只想记录SELECT 语句,那么pg_stat_statements 可能是一个更好的起点,但准确解析查询听起来比实际分析要多得多……
  • 我会首先阅读有关 Postgres 查询优化和/或性能的所有现有 StackOverflow 问题。有一些模式需要检测。
  • @NickBarnes 我说的是预写日志。是的,很难解析日志文件。我已经尝试使用正则表达式解析日志。什么类型的解析可能适合解析日志文件?

标签: database postgresql indexing logfile-analysis


【解决方案1】:

您正在混淆事务日志 (WAL) 和常规文本日志文件。

后者确实包含语句(如果配置是这样设置的),而事务日志根本不包含语句,只是关于哪个块中发生了什么变化的二进制信息。

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

我给你一个建议:如果你想写一个建议索引的工具,它应该把EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON) SELECT /* your query */的输出作为输入。

此外,该工具必须连接到数据库才能查询表和索引元数据(可能还有统计信息)。这使您依赖于数据库版本,因为元数据可能会发生变化(并且会发生变化 - 请参阅分区表),但在论文中这不会让您有太多关注。

任务依然不简单(查询优化是AI),但那你至少还有机会。

【讨论】:

  • 我是 PostgreSQL 的初学者。我已经在 postgresql.conf 中设置了我的 log_statement: ON。但我仍然无法在我的日志中找到 SELECT 语句。我可以做哪些配置来混合事务日志和常规文本日志文件?
  • 您能详细解释一下将 EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON) 的输出作为输入吗?
  • 当然你得到了执行计划。
猜你喜欢
  • 2013-07-14
  • 2012-09-22
  • 2017-11-20
  • 1970-01-01
  • 1970-01-01
  • 2013-03-04
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
相关资源
最近更新 更多