在SQL Server离线和在线索引重建有什么区别?
技术问答
610 人阅读
|
0 人回复
|
2023-09-14
|
重建索引时,有ONLINE = OFF和ONLINE =
6 s, F' j7 ~# E) U+ fON选项。我知道,当在线模式打开时,它将创建索引的副本,将新的查询切换查询,然后重建原始索引,并使用版本控制跟踪更改(如果我错了,请纠正我)。
9 H1 E3 A5 W( [( c3 V+ T h但是,SQL离线模式下会做什么?
I' w& H( {2 J3 P& ]* c* ]( N( \
1 R. w5 O3 |1 _7 @) L4 ~; B [ 解决方案: 4 X8 S) @- Y" ?9 B& o
新索引将在在线模式下建立,旧索引可以读写。任何旧索引的更新也将应用于新索引。反问题列用于跟踪更新和重建之间可能存在的冲突(即删除未复制的行)。请参考在线索引操作。在此过程完成后,表将被锁定一段时间,新索引将取代旧索引。如果索引包含LOB列,则SQL
; t1 k! @) Y) U% z! S' l# LServer 2005/2008 / R2不支持ONLINE操作。* i% Z5 ?! c" q
在离线模式下,表将提前锁定,以进行任何读取或写入,然后在保持表锁定的同时从旧索引构建新索引。重建索引时,不允许阅读或写表。表上的锁只有在操作完成后才能释放,读写操作再次允许。( b+ s4 c6 Q9 v7 o
请注意,在SQL Server% T! ]7 `( M) Z% ^7 P' X
对LOB包括限制LOB请参考在线索引操作列索引。 |
|
|
|
|
|