postgresql – 如何找出何时将数据插入Postgres?

postgresql – 如何找出何时将数据插入Postgres?,第1张

概述我继承了一个充满数据的现有Postgres数据库.大多数数据都有’created_date’列值.在跟踪之前插入了一些早期数据. 是否有一个postgres元数据表隐藏在跟踪INSERT查询完成时的某个地方? 除非你自己录制,否则PostgreSQL中没有这样的元数据 – 直到Postgres 9.4. 您可以从row headers (HeapTupleHeaderData)中推断出一些信息,特 我继承了一个充满数据的现有Postgres数据库.大多数数据都有’created_date’列值.在跟踪之前插入了一些早期数据.

是否有一个postgres元数据表隐藏在跟踪INSERT查询完成时的某个地方?

除非你自己录制,否则Postgresql中没有这样的元数据 – 直到Postgres 9.4.

您可以从row headers (HeapTupleHeaderData)中推断出一些信息,特别是从插入事务ID xmin中推断出来的信息.它包含插入行的事务的ID(需要在Postgresql的MVCC模型中确定可见性).尝试(对于任何表):

SELECT xmin,* FROM tbl liMIT 10;

一些限制适用:

>如果数据库被转储和恢复,那么显然信息已经消失 – 所有行都插入到同一个事务中.
>如果数据库很大/非常老/非常大,那么它可能已经经历了transaction ID wraparound,并且xmin中的数字顺序是不明确的.

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

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

但是没有时间戳.

Postgres 9.5或更高版本

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

> Atomically set SERIAL value when committing transaction

总结

以上是内存溢出为你收集整理的postgresql – 如何找出何时将数据插入Postgres?全部内容,希望文章能够帮你解决postgresql – 如何找出何时将数据插入Postgres?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/sjk/1166471.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存