运行PostgreSQL 9.0.1,流复制使一个只读镜像实例保持最新。为了减少工作时间IO,除了少数几个没有被自动真空守护程序清理的表外,自动真空处于主数据库上。这些表是“物化视图”。
每天晚上午夜12点,我们对数据库进行清理,以清除自动真空排除的那些表。我想知道该过程是否会复制到镜像上,或者是否还需要在镜像上设置真空?
1
很好的问题。流复制使用预写日志,因此归结为是否记录了VACUUM所做的更改。
—
DerfK
有趣的是,我在只读镜像上启用了自动真空,但是在表统计中查看它似乎从未运行过。因为所有表格都列出了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对从机上运行没有影响,对吗?假设是这种情况,如果我的表没有更新/删除,只有插入,那么在主服务器中禁用自动清理是否可行,因为我只是在写数据,而读取发生在从服务器上。
—
亨利·邱