SQL Server 中离线索引重建和在线索引重建有什么区别?

2024-05-19

重建索引时,有一个选项ONLINE=OFF and ONLINE=ON。我知道当ONLINE模式打开时,它会复制索引,切换新查询以利用它,然后重建原始索引,使用版本控制跟踪两者的更改(如果我错了,请纠正我)。

但是 SQL 在离线模式下会做什么呢?


在 ONLINE 模式下,会构建新索引,同时可以读取和写入旧索引。旧索引上的任何更新也将应用于新索引。反物质列用于跟踪更新和重建之间可能的冲突(即删除尚未复制的行)。看在线指数操作 http://download.microsoft.com/download/8/5/e/85eea4fa-b3bb-4426-97d0-7f7151b2011c/OnlineIndex.doc。该过程完成后,表将被锁定一段时间,新索引将替换旧索引。如果索引包含 LOB 列,则 SQL Server 2005/2008/R2 不支持 ONLINE 操作。

在离线模式下,表会预先锁定以进行任何读取或写入,然后从旧索引构建新索引,同时持有表上的锁。重建索引时不允许对表进行读或写操作。只有当操作完成后,表上的锁才会被释放,并再次允许读写。

请注意,在 SQL Server 2012 中,取消了对 LOB 的限制,请参阅包含 LOB 列的索引的在线索引操作 http://rusanu.com/2011/08/05/online-index-operations-for-indexes-containing-lob-columns/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server 中离线索引重建和在线索引重建有什么区别? 的相关文章

随机推荐