在使用 Ola 脚本进行索引维护期间,有没有一种方法可以根据该索引的总读取次数来跳过“未使用”的索引?
我明白那个
- 指数统计仅自上次重启以来,因此监控业务周期很重要
- 跳过重组或重建“未使用”的索引,这可能会在业务周期中稍后需要,甚至一次,可能会导致性能问题
- 每个人都在想“你为什么不直接删除它”
要回答后者,它是供应商提供的应用程序,带有 ~2TB 的 OLTP 数据库。为了保持合规,我们不能做太多改变,我也不能删除他们的索引等等。因此,我认为一旦我确认它们从未被使用过,通过跳过这些索引来减少维护时间是有益的。这对于像这样我的手大多被束缚的情况是有益的。
继续征求意见是,如果无法做到这一点,是否值得将其作为增强功能扔给 Ola?
我认为没有这样的选项,您可以向 Ola 提交功能请求(或拉取请求),但是您可以提交要排除的索引列表。
例如,如果您传入
ALL_INDEXES, -Db1.Schema1.Tbl1.Idx1
参数@indexes
,脚本将跳过数据库 Db1 中对象 Schema1.Tbl1 的索引 Idx1。该
@indexes
参数是nvarchar(max)
您应该能够传递任意数量的索引。我意识到维护起来可能会变得非常乏味,但是您应该能够从用于确定未使用索引的查询中生成列表。
然而,这种方法可以更细粒度地控制您跳过哪些索引,这样您就可以避免跳过偶尔只使用一次的索引,或者您也可以创建不同的作业,这样您就可以在正常情况下跳过大量未使用的索引工作,但当你有一个更大的维护窗口等时,仍然对其中的一些进行碎片整理。