我最近继承了一个维护不善的生产数据库,其中包含大量碎片化的索引(大多数索引碎片化率超过 80%)。我向我的经理请求停机以执行索引重建,但不幸的是,目前不允许停机。如果在线索引重组也不是选项,我可以执行以下操作吗?
- 将新的生产副本还原到测试实例
- 重建索引,更新统计信息
- 从测试实例覆盖产品数据库
- 应用事务日志来获取数据库。
虽然上述方法也需要停机时间,但相对较少。我想知道是否有人可以做到这一点,或者我只是愚蠢:)请指教
RK
我最近继承了一个维护不善的生产数据库,其中包含大量碎片化的索引(大多数索引碎片化率超过 80%)。我向我的经理请求停机以执行索引重建,但不幸的是,目前不允许停机。如果在线索引重组也不是选项,我可以执行以下操作吗?
虽然上述方法也需要停机时间,但相对较少。我想知道是否有人可以做到这一点,或者我只是愚蠢:)请指教
RK
SQL Server 2005 具有联机索引重建(即非阻塞)。
否则,它永远不会脱机(即数据库或服务器脱机),但对正在重建的表/索引确实有排他锁。
如果应用程序的大部分访问是通过 seeks 进行的,那么碎片就不是问题。否则,我会尝试找到索引重建影响最小的时间,并通过计划的作业来完成。当然,该应用程序不是 24/7/365 运行,维护不善,公司也没有预料到会出现一些问题。(他们会更换汽车上的机油吗?)
就您的 4 步解决方案而言,将表复制到另一个数据库、重建索引并将其复制回来只会重建现有索引。在将其复制回来时,无论如何都会重建索引,因此只需尝试一次安排几个表,直到您完成所有操作。
祝你好运。