查询数据库的预写日志

时间:2018-03-23 15:15:56

标签: postgresql change-data-capture wal

我希望能够跟踪过去一个月对数据库(PostgreSQL)所做的更改。我知道两个选择:

  • 数据库触发器
  • 更改预写日志的数据捕获

但是没有办法直接从数据库本身查询预写日志吗?即

之类的东西
@data([
    {"search_val": "phones", "expected_count": 2},
    {"search_val": "things", "expected_count": 3},
    {"search_val": "stuff", "expected_count": 4},
])
@unpack
def test_search(self, search_val, expected_count):

1 个答案:

答案 0 :(得分:1)

预写日志(WAL)不包含有关在服务器上运行的查询的信息,也不包含有关受影响的表名称的信息。

它包含有关物理级别的信息,例如“将这24个字节写入到偏移42处的文件3412的块746”。

您可以调查的一件事是逻辑解码,它使用来自WAL的信息和目录表的当前状态来生成您想要的信息。

请查看test_decoding模块。

它不会显示实际针对PostgreSQL运行的查询,但它会显示对表的修改。