当数据库及其相关联的表持续可用时,可使用 CREATE INDEX ONLINE 和 DROP INDEX ONLINE 语句在联机环境中创建和删除索引。
在构建索引的持续时间内,CREATE INDEX ONLINE 语句使您能够创建索引而无需对表放置互斥锁定。即使正在对表进行读取或更新时,您也可以使用 CREATE INDEX ONLINE 语句。 这意味着可立即开始创建索引。
当您联机创建索引时,数据库服务器使用一个标记来记录该操作,这样,数据恢复和复原操作可重新创建该索引。
当您联机创建索引时,可使用 ONLIDX_MAXMEM 配置参数来限制共享内存中分配给 preimage 日志池和 updator 日志池的内存量。如果您计划在对某个表列执行 CREATE INDEX ONLINE 语句时在该列上完成其他操作,那么可能希望这样做。有关此参数的更多信息,请参阅联机创建索引时限制内存分配。
DROP INDEX ONLINE 语句使您即使在事务隔离级别为“脏读取”时也能删除索引。
如果您对正在被更新的表发出 DROP INDEX ONLINE 语句,那么该操作将在表更新完成后才会发生。您发出 DROP INDEX ONLINE 语句后,任何人都无法引用该索引,但是并发操作可使用该索引,直到这些操作终止为止。在所有用户都已完成对该索引的访问之前,数据库服务器将等待删除该索引。
以下是在联机环境中创建索引的示例:
CREATE INDEX idx_1 ON table1(col1) ONLINE
以下是在联机环境中删除索引的一个示例:
DROP INDEX idx_1 ONLINE
有关 CREATE INDEX ONLINE 和 DROP INDEX ONLINE 语句的更多信息,请参阅 GBase 8s SQL 指南:语法。