【发布时间】:2017-01-05 05:20:12
【问题描述】:
我在 SQL Server 2012 中有一个查询。在联机索引重建操作期间,如果我运行 SQL 查询以读取/写入数据到/从特定表“X”中读取/写入数据,同时可能正在执行重建操作?请建议。
【问题讨论】:
我在 SQL Server 2012 中有一个查询。在联机索引重建操作期间,如果我运行 SQL 查询以读取/写入数据到/从特定表“X”中读取/写入数据,同时可能正在执行重建操作?请建议。
【问题讨论】:
...当一个用户正在重建聚集索引时,该用户 其他人可以继续更新和查询底层数据。
参考:Perform Index Operations Online
这显然也适用于非聚集索引的在线重建。
Guidelines for Online Index Operations
另外,在线索引重建比离线索引慢得多,并且使用更多事务日志空间。
在联机索引重建期间,构建阶段需要 IS(意图共享)和 S(共享)锁定以确保其他进程不会获取重建索引时对象上的任何排他锁。在最后阶段,架构修改 Sch-M 锁定。此锁会阻止对表的所有其他并发访问,但它只会在非常短的时间被删除,同时旧索引被删除并更新元数据。 p>
【讨论】: