索引操作的日志记录情况
索引操作 | 完整 | 大容量日志 | 简单 |
ALTER INDEX REORGANIZE | 完全记录 | 完全记录 | 完全记录 |
ALTER INDEX REBUILD | 完全记录 | 最小限度记录 | 最小限度记录 |
CREATE INDEX | 完全记录 | 最小限度记录 | 最小限度记录 |
DBCC INDEXDEFRAG | 完全记录 | 完全记录 | 完全记录 |
DBCC DBREINDEX | 完全记录 | 最小限度记录 | 最小限度记录 |
DROP INDEX | 索引页释放是完整日志记录;新堆的重新生成(如果适用)是完整日志记录。 | 索引页释放将完全记录;新堆的重新生成将最小限度地记录(如果适用的话)。 | 索引页释放将完全记录;新堆的重新生成将最小限度地记录(如果适用的话)。 |
不需要额外的磁盘空间的索引操作
以下索引操作不需要额外的磁盘空间:
· ALTER INDEX REORGANIZE(但是需要日志空间)。
· DROP INDEX(当删除非聚集索引时)。
· DROP INDEX(当删除脱机聚集索引而没有指定 MOVE TO 子句并且不存在非聚集索引时)。
需要额外的磁盘空间的索引操作
其他所有 DDL 操作都需要在操作期间使用额外的临时磁盘空间,并需要永久磁盘空间来存储新的索引结构。有关索引结构的详细信息,请参阅表和索引体系结构。
创建新的索引结构后,旧(源)结构和新(目标)结构在其相应的文件或文件组中都需要一定的磁盘空间。旧的结构只有在提交索引创建事务后才会释放。
以下索引 DDL 操作将创建新的索引结构并需要额外的磁盘空间:
· CREATE INDEX
· CREATE INDEX WITH DROP_EXISTING
· ALTER INDEX REBUILD
· CREATE TABLE(PRIMARY KEY 或 UNIQUE 约束)
· ALTER TABLE ADD CONSTRAINT(PRIMARY KEY 或 UNIQUE 约束)
· ALTER TABLE DROP CONSTRAINT(PRIMARY KEY 或 UNIQUE 约束)
· DROP INDEX MOVE TO(仅适用于聚集索引。)