dsm*_*rey 3 sql postgresql vacuum autovacuum
我们有一个非常大的表,分为月表.我们在postgresql.conf文件中没有设置autovacuum参数,因此默认情况下它使用默认参数.
过去几个月表table_201404,table_201403一旦传递就不会被写入或更新/删除,它们只会从历史数据中读取.为什么我们注意到在这些表上运行的autovacuum进程?是因为它们是主分区的一部分而PostgreSQL将这些表视为一个?
我们正在考虑将autovacuum_enabled设置为关闭这些过去的表,但我想先咨询Stackoverflow的智慧.
谢谢大家......
甚至只读表需要对每20亿次事务进行一次真空吸尘,并且在默认设置下进行抽真空以便每1.5亿次交易进行一次环绕.
每行存储的事务ID是32位,因此它们最终会回绕.为了防止这种情况造成问题,任何非常旧的transactionID都必须替换为魔术值,意思是"比所有其他ID更旧".因此必须扫描该表以进行替换.如果表永远不会更改,最终每个事务ID都将替换为魔术值,并且概念上不再需要扫描该表.但是这个事实并没有存储在任何地方,所以现在仍需要对表进行扫描,以便系统能够观察到它们仍然可以正常运行.幸运的是,扫描是按顺序完成的,只需要读取,而不是写入,因此它应该相当有效.
整个事情可能会在9.5中重做,因此不再需要扫描这样的表格.
| 归档时间: |
|
| 查看次数: |
1053 次 |
| 最近记录: |