首批通过分布式安全可靠测评,为关键业务系统打造
全局索引的创建流程
更新时间:2026-05-22 08:56
适用版本
OceanBase 数据库 V2.x 和 V3.x 版本。
全局索引创建
全局索引的创建方式有以下两种:
在 create table 的同时,同步创建全局索引,全局索引即刻生效。
全局索引的主表已经存在,单独创建全局索引,使用异步的方式创建全局索引,构建过程由 RS 调度。
说明
了解全局索引背后创建流程,有利于给运维工程师提供问题定位的方向。
同步创建的流程:
全局索引表是一张实体表,create table 同时同步创建全局索引时,需要为全局索引创建单独的 partition 并等待 partition 选主成功,同步创建全局索引时,全局索引能够即刻生效。
异步创建的流程:
Index Schema Created:create global index 的 DDL 语句执行,创建索引表 partition,成功构建 global index schema,并将构建全局索引任务注册到 RS 后台,持久化全局索引构建状态为 Index Schema Created。如果 create global index 的 DDL 语句执行失败,则直接给客户端返回创建索引失败的信息。
Build Single Replica:为索引表的每个 partition 构建单副本的静态数据,持久化全局索引的构建状态为Build Single Replica,并持久化租户级时间戳 TransVersion。
Replica Copy:为索引表的每个 partition 拷贝多副本的静态数据,RS 调用存储层,完成多副本静态数据的复制,持久化全局索引的构建状态为 Replica Copy。
Unique Index Check:如果是 unique index,RS检查索引表各 partition 索引唯一性,并修改 global index schema 状态为可用, 持久化全局索引的构建状态为 Unique Index Check。
Intermediate Result Clear:RS 通知主表各 partition 清理构建索引的中间数据,持久化全局索引的构建状态为 Intermediate Result Clear。
Build Index Succeed:全局索引构建成功,可以认为该状态是一个虚拟状态,全局索引构建成功后,RS 端可以清理掉和该索引相关的数据结构与内部表信息,修改 global index schema,索引状态可用。
查看索引创建进度
监控索引创建的进度,可以使用以下 SQL 来查询相应的系统表。
obclient > select * from __all_virtual_partition_migration_status where action !='END';
obclient > select * from __all_virtual_sys_task_status ;
obclient > select * From __all_virtual_rebalance_task_stat where is_scheduled='YES';
obclient > select table_id from __all_table where index_status = 1 and index_type in (3,4);