其实早在2018年,Postgres Professional就实现了一个闪回查询的原型,基于vacuum_defer_cleanup_age和track_commit_timestamp。这本质上和LZ所想一致。
但是存在的问题是膨胀对性能的影响太大,可参见postgresql/lightdb vacuum对性能的影响和https://postgrespro.com/list/thread-id/2409373,所以基本无法接受。
其中一种变通是基于导出快照,可参见:https://www.scien.cx/2021/08/22/a-kind-of-flashback-query-in-postgresql/
另外一种变通是基于wal解析,可参考:https://gitee.com/movead/XLogMiner,由于依赖于catalog信息,所以事后解析存在很多限制。lightdb从22.4开始,将会包含该插件。
第三种变通是基于delay standby,延后重放。