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