如何找出数据被插入Postgres的时间?[英] How to find out when data was inserted to Postgres?

本文是小编为大家收集整理的关于如何找出数据被插入Postgres的时间?的处理方法,想解了如何找出数据被插入Postgres的时间?的问题怎么解决?如何找出数据被插入Postgres的时间?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我继承了一个现有的充满数据的 Postgres 数据库.大多数数据都有一个"created_date"列值.一些较早的数据是在跟踪之前插入的.

是否有一个 Postgres 元数据表隐藏在某个地方,用于跟踪 INSERT 查询何时完成?

推荐答案

Postgres 9.5 或更高版本

您可以启用 track_commit_timestamp 在 postgresql.conf (并重新启动)开始跟踪提交时间戳.然后,您可以获得 xmin 的时间戳.相关答案:

Postgres 9.4 或更早版本

PostgreSQL 中没有这样的元数据,除非你自己记录.

您也许可以从 行标题 (HeapTupleHeaderData),特别是来自插入事务 id xmin.它保存插入行的事务的 ID(需要确定 PostgreSQL 的 MVCC 模型).尝试(对于任何表):

SELECT xmin, * FROM tbl LIMIT 10;

有一些限制:

  • 如果数据库被转储并恢复,那么显然信息就消失了 - 所有行都插入到同一个事务中.
  • 如果数据库很大/很旧/写得很重,那么它可能已经经历了 事务ID环绕,xmin中的数字顺序不明确.

但对于大多数数据库,您应该能够推导出:

  • INSERT 的时间顺序
  • 将哪些行插入在一起
  • 当插入之间(可能)有很长一段时间

不过没有时间戳.

本文地址:https://www.itbaoku.cn/post/1793968.html