使用 ONLINE 关键字来避免表锁定

对于未以 IN TABLE 关键字选项定义的索引,当您使用 ONLINE 关键字来 CREATE 或 DROP 索引时,您可最小化索引了的表上的排他锁的持续时间。

在联机创建或删除索引时,不支持表上的 DDL 操作,但当发出了 CREATE INDEX 或 DROP INDEX 语句时,可完成并发了的操作。直到没有其他进程正在并发地访问该表时,才创建或删除指定的索引。然后,短暂地保持锁来写与该索引相关联的系统目录数据。这提高了系统的可用性,因为通过正在进行的会话或新会话仍可读该表。下列语句展示如何使用 ONLINE 关键字来避免在使用 CREATE INDEX 语句时的自动表锁定:
CREATE INDEX idx_1 ON customer (lname) ONLINE;
然而,对于使用 IN TABLE 关键字选项定义的“表中”索引,在包括 ONLINE 关键字的 CREATE INDEX 或 DROP INDEX 操作期间,该索引了的表保持锁定。其他会话尝试访问该锁定了的表时,会失败并发出这些错误之一:
107: ISAM error:  record is locked.
          211: Cannot read system catalog (systables).
          710: Table (table.tix) has been dropped, altered or renamed.