乔宾·奥古斯丁:PostgreSQL 索引可能带来的伤害:负面影响及相关成本

乔宾·奥古斯丁:PostgreSQL 索引可能带来的伤害:负面影响及相关成本

💡 原文英文,约1500词,阅读约需6分钟。
📝

内容提要

本文讨论了过多使用索引可能导致的十个问题和开销,建议在创建新索引之前,应首先考虑删除不必要的索引。作者建议采用自上而下的方法来调优系统,避免滑坡。

🎯

关键要点

  • 索引被认为是SQL性能调优的灵丹妙药,但过多使用索引可能导致严重问题。
  • 在创建新索引之前,首先考虑删除不必要的索引是明智的选择。
  • 索引的使用会对事务造成惩罚,增加写入开销。
  • 索引需要占用内存,过多的索引会减少可用于表的内存。
  • 更新索引会导致更多随机写入,增加写入成本。
  • 索引的缓存需求通常高于表的缓存需求。
  • 索引会生成额外的WAL记录,影响系统性能。
  • 过多的I/O操作会导致活跃数据集增大,降低缓存效率。
  • 索引会影响VACUUM/AUTOVACUUM的效率,可能导致长时间无进展。
  • 创建索引可能导致调优时的隧道视野,影响系统整体性能。
  • 索引占用的存储空间可能超过表本身,增加备份和恢复的时间和资源消耗。
  • 索引更容易发生损坏,增加系统故障的风险。
  • 在考虑新索引时,应提出关键问题,评估其必要性和影响。
  • 定期审查现有索引,删除未使用的索引以优化性能。
  • 采用自上而下的方法进行系统调优,避免关注单个查询的性能。
➡️

继续阅读