英文原文:
http://dba.fyicenter.com/faq/sql_server/CREATE_INDEX_Impact_on_Other_User_Sessions.html
如果你正在一个存在数据的表上创建新的索引,所有存在的行将会被索引作为CREATE INDEX语句的一部分。如果表非常大,索引过程将会花费些时间。索引过程对其他用户会话的影响,基于SQL Server
是使用Offline模式还是Online模式。
默认,SQL Server以Offline模式执行索引操作,索引操作期间有表锁请求。一个离线索引操作,创建、重建、或删除一个聚集索引,或者重建或删除一个非聚集索引,需要一个表上的架构修改(Sch-M
)锁。这阻止了所有用户在操作期间访问相应表。对一个离线索引操作,创建一个非聚集索引,在表上申请一个共享(S)锁。他阻止了对相关表的更新但是允许读操作,例如SELECT语句。
SQL Server Enterprise 版支持在线模式索引操作,其他的用户会话就不会被影响。
然而,SQL Server Express 版不支持在线模式。如果你尝试,你会获得以下错误:
1
2
3
|
CREATE
INDEX
fyi_links_url
ON
fyi_links_indexed (url)
WITH
(ONLINE =
ON
);
GO
|
1
2
|
Online index operations can only be performed in Enterprise
edition of SQL Server.
|
本文转自UltraSQL51CTO博客,原文链接:http://blog.51cto.com/ultrasql/1737335 ,如需转载请自行联系原作者