查找创建或重新索引索引时的时间戳

Cer*_*rin 4 postgresql index metadata change-tracking

有什么方法可以找到 PostgreSQL 12-13 中索引上次创建或重新索引的时间吗?

文档显示了一些标准视图,例如pg_stat_user_indexes跟踪索引的使用统计信息,但我找不到任何跟踪创建/更新统计信息的内容。

Erw*_*ter 5

创建索引以及重新索引会将新行写入系统表pg_class。大多数 DDL 命令(包括这些)在 Postgres 中都是事务性的。当 Postgres DB 服务器使用 运行时track_commit_timestamp = on,会记录提交时间戳。看:

然后,此查询会生成在 Postgres 9.5 或更高版本中上次创建或重新索引索引时的时间戳:

SELECT pg_xact_commit_timestamp(xmin)
FROM   pg_class
WHERE  relname = 'mytbl_pkey';  -- index name
Run Code Online (Sandbox Code Playgroud)

跟踪仅在服务器重新启动track_commit_timestamp = on开始,没有旧事务的信息。而且信息不会无限期地保留 - 随着事务 ID 回绕,它最终会丢失,通常是在很长一段时间后,但这取决于每次事务。