我在这个网站和Tom的博客上看到了很多关于如何、为什么和何时重建索引的文章。请注意,这个问题是关于当有引用这些索引的并发会话时,我是否可以重新构建;是否对此有任何建议?
我在一堆表上的OLAP中运行了几个SELECT查询。我应该在重建之前停止这些会议吗?我想锁可能有问题。
更新:注意,我们的DBA建议不要在重建期间使用活动会话。此外,表的大小在15-20GB之间,重构通常需要2-3小时。
发布于 2013-06-11 11:39:11
索引重新生成操作是DDL,因此可能会锁定基础表,从而阻止您更新它。但是,查询本质上不会锁定(除非指定了FOR UPDATE子句),并且即使对象被锁定,也可以从对象中读取,因此,通常在运行查询时,在索引重建过程中不会出现任何问题(除了重建期间的某些性能下降)。
如果您想要更新具有正在重建的索引的表,可以指定ONLINE子句:
SQL> alter index table1_pk_idx rebuild online;否则,执行DML的会话将等待索引重建。
有关索引重建、ONLINE子句和索引重新构建限制的详细信息,请参阅管理员指南中的“重建现有索引”部分和SQL引用中的“变更索引”部分。
https://dba.stackexchange.com/questions/44287
复制相似问题