PostgreSQL 9:是否在镜像上的主副本上清理表?


18

运行PostgreSQL 9.0.1,流复制使一个只读镜像实例保持最新。为了减少工作时间IO,除了少数几个没有被自动真空守护程序清理的表外,自动真空处于主数据库上。这些表是“物化视图”。

每天晚上午夜12点,我们对数据库进行清理,以清除自动真空排除的那些表。我想知道该过程是否会复制到镜像上,或者是否还需要在镜像上设置真空?


1
很好的问题。流复制使用预写日志,因此归结为是否记录了VACUUM所做的更改。
DerfK

1
有趣的是,我在只读镜像上启用了自动真空,但是在表统计中查看它似乎从未运行过。因为所有表格都列出了0个活/死元组,并且没有可见的关于抽空或分析的历史记录。
Scott Herbert 2010年

developer.postgresql.org/pgdocs/postgres/hot-standby.html-25.5.2。处理查询冲突-“来自WAL的真空清理记录的应用与备用事务发生冲突,这些事务的快照仍可以“看到”要删除的任何行..............这似乎表明VACUUM是WAL记录,因此对我的问题是“是”。很乐意从PG专家那里获得更多信息!
Scott Herbert 2010年

动态视图中的数据在主数据库和备用数据库上预计会有所不同。这些视图使用系统函数来收集数据,并且这些函数从内存中的数据结构而不是物理表中读取数据。例如,在主数据库上执行ANALYZE也会更新备用数据库上的优化程序统计信息(用于查询计划),但是在pg_stat_user_tables中不会对表执行ANALYZE的时间反映出来,因为该信息未登录到事务中日志。
Gurjeet Singh

因此,得出的结论是,主机上发生AUTOVACUUM对从机上运行没有影响,对吗?假设是这种情况,如果我的表没有更新/删除,只有插入,那么在主服务器中禁用自动清理是否可行,因为我只是在写数据,而读取发生在从服务器上。
亨利·邱

Answers:


16

真空和自动真空复制与其他任何写入操作一样。(嗯,它们在内部显然很特殊,但是就您的问题而言,它们是正常的写操作。)在从属服务器上运行真空或自动真空操作不会做任何事情,也没有必要。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.