我在这个网站和 Tom Kyte 的博客上看到了很多关于重建索引的方式、原因和时间的文章。请注意,这个问题是关于当有并发会话引用这些索引时我是否可以重建;有什么建议吗?
我SELECT
在一堆表的 OLAP 数据库中运行了几个查询。我应该在重建之前停止这些会话吗?我假设锁可能有问题。
更新: 请注意,我们的 DBA 建议不要在重建期间进行活动会话。此外,表的大小在 15-20GB 范围内,重建通常需要 2-3 小时。
我在这个网站和 Tom Kyte 的博客上看到了很多关于重建索引的方式、原因和时间的文章。请注意,这个问题是关于当有并发会话引用这些索引时我是否可以重建;有什么建议吗?
我SELECT
在一堆表的 OLAP 数据库中运行了几个查询。我应该在重建之前停止这些会话吗?我假设锁可能有问题。
更新: 请注意,我们的 DBA 建议不要在重建期间进行活动会话。此外,表的大小在 15-20GB 范围内,重建通常需要 2-3 小时。
索引重建操作是 DDL,因此可能会锁定基础表,阻止您对其进行更新。但是查询本质上不会锁定(除非
FOR UPDATE
指定了子句)并且即使对象被锁定也可以从对象中读取,因此,通常在查询运行时索引重建期间不会出现问题(可能除了重建期间的一些性能下降)。如果您希望能够更新具有正在重建的索引的表,您可以指定
ONLINE
子句:否则执行 DML 的会话将等到重建索引。
有关索引重建、
ONLINE
子句和索引重建限制的更多信息,请阅读管理员指南中的“重建现有索引”部分和SQL 语言参考中的“ALTER INDEX”部分。