本文共 661 字,大约阅读时间需要 2 分钟。
英文原文:
如果你正在一个存在数据的表上创建新的索引,所有存在的行将会被索引作为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. |