我们使用 ollas 索引维护,并由我们的团队在各处进行了一些更改。
我们通常会遇到一个巨大的数据库问题,它的 Alter 索引会锁定某些进程。它通常是一个重组,即使它锁定了一些任务,例如批量任务。
我们可以做什么来尽量减少这种情况?nob每周日运行超过24小时。
我想到了拆分表,并在不同的周末进行索引维护。
我想到了一个警报,它会杀死该锁的工作 X 分钟(很糟糕,因为我确信它永远不会完成)。
我们使用 ollas 索引维护,并由我们的团队在各处进行了一些更改。
我们通常会遇到一个巨大的数据库问题,它的 Alter 索引会锁定某些进程。它通常是一个重组,即使它锁定了一些任务,例如批量任务。
我们可以做什么来尽量减少这种情况?nob每周日运行超过24小时。
我想到了拆分表,并在不同的周末进行索引维护。
我想到了一个警报,它会杀死该锁的工作 X 分钟(很糟糕,因为我确信它永远不会完成)。
不要进行索引维护。
你希望通过这样做达到什么目的?
人们普遍误解索引碎片是性能问题的根本原因,而索引维护才是解决方案。碎片很少是性能问题的原因。即使存在大量碎片,B 树在索引中仍然非常有效,尤其是当磁盘是 SSD 或 NVMe 时。过去,碎片在机械硬盘上更为重要,但那已成为过去。
索引维护的一些好的副作用可能有助于提高性能,因为它也会调用统计信息来更新这些索引。它会导致计划缓存清除与重建索引的表相关的任何计划。当某些查询的错误计划意外被缓存时,这很有帮助。它将导致数据库引擎在下次运行查询时编译一个新计划,这最终可能会更加优化。
问题是,您可以以更细粒度、更有利于满足您的需求的速度单独运行这些事情。
索引重建的另一个负面影响(除了资源争用,特别是对于您正在使用的较大索引)是,它会增加数据库的大小,因为它需要磁盘空间来重新组织数据。它在工作时会创建一堆事务日志记录。索引维护是浪费的。
回顾