克里斯托夫·佩图斯:VACUUM(INDEX_CLEANUP 关闭)被认为有害
💡
原文英文,约500词,阅读约需2分钟。
📝
内容提要
PostgreSQL 12引入了VACUUM命令的INDEX_CLEANUP选项,但不建议使用。该选项会导致无法清理索引中的死元组,影响查询性能,虽然可以加快速度,但会导致表和索引膨胀。除非紧急情况,否则应避免使用。
🎯
关键要点
- PostgreSQL 12引入了VACUUM命令的INDEX_CLEANUP选项,但不建议使用。
- INDEX_CLEANUP选项会导致无法清理索引中的死元组,影响查询性能。
- 虽然使用INDEX_CLEANUP可以加快速度,但会导致表和索引膨胀。
- VACUUM的主要任务是查找死元组并回收它们作为空闲空间。
- INDEX_CLEANUP OFF会关闭从索引中移除死元组的功能,实际上会使VACUUM失去意义。
- 在某些情况下,PostgreSQL无法完全“冻结”表,可能会导致数据损坏。
- 使用INDEX_CLEANUP的原因是为了在接近数据损坏的情况下跳过索引清理。
- 即使使用INDEX_CLEANUP,仍需定期对表进行常规VACUUM。
- INDEX_CLEANUP OFF的VACUUM会被误认为是常规VACUUM,可能导致表和索引严重膨胀。
- 除非在紧急情况下,否则应避免使用INDEX_CLEANUP选项。
❓
延伸问答
什么是PostgreSQL中的INDEX_CLEANUP选项?
INDEX_CLEANUP选项是PostgreSQL 12中VACUUM命令的一个新选项,用于控制是否清理索引中的死元组。
使用INDEX_CLEANUP选项有什么风险?
使用INDEX_CLEANUP选项会导致无法清理索引中的死元组,从而影响查询性能,并可能导致表和索引膨胀。
在什么情况下可以考虑使用INDEX_CLEANUP选项?
在接近数据损坏的紧急情况下,可以考虑使用INDEX_CLEANUP选项以跳过索引清理,但应谨慎使用。
VACUUM命令的主要功能是什么?
VACUUM命令的主要功能是查找死元组并将其回收为空闲空间。
关闭INDEX_CLEANUP会对VACUUM产生什么影响?
关闭INDEX_CLEANUP会使VACUUM无法清理死元组,实际上使VACUUM失去意义。
为什么不建议在常规情况下使用INDEX_CLEANUP?
因为INDEX_CLEANUP会导致表和索引严重膨胀,影响查询性能,除非在紧急情况下,否则应避免使用。
🏷️
标签
➡️