Gbase8s CREATE INDEX 的 ONLINE 关键字

在 Gbase8s 中,DBA 使用 ONLINE 关键字创建索引以减少锁定时间,提高表的可用性。这允许在创建索引时,其他用户仍能读写表数据。然而,ONLINE 关键字不适用于所有类型的索引,并且如果存在特定并发操作,如主键约束的外键子表的 DML 操作,CREATE INDEX ONLINE 会失败。示例展示了如何在 customer 表上创建一个唯一的联机索引 idx_1。
摘要由CSDN通过智能技术生成

DBA 将 ONLINE 关键字包含在 CREATE INDEX 语句末尾的规范中,从而降低非互斥存取错误
的风险,提高被索引表的可用性。ONLINE 关键字指示数据库服务器在最小化排它锁持续时间时创
建该索引,以致于并行用户存取该表时能创建索引。
缺省情况下,CREATE INDEX 试图在被索引的表上放置互斥锁以防止创建该索引时其它用户存取
该表。如果另一个用户已经锁定该表或者当前存取的表处于 Dirty Read 隔离级别,则 CREATE
INDEX 语句失败。
即使其它用户正在该被索引的表的上执行 Dirty Read 和 DML 操作,数据库服务器仍建立索引。
一发出 CREATE INDEX ONLINE 语句,该新索引将对用于查询计划或成本评估的查询优化器不可
见,并且数据库服务器也不支持任何在该已建立索引的表上的 DDL 操作,直到正确地构建了指定
的索引。此时,数据库服务器在用新索引的信息更新系统目录的同时暂时地锁定该表。
CREATE INDEX ONLINE 语句中已建立索引的表可以是永久表也可以是临时表,可以是日志记录的也
可以是没有日志记录的,可以是分片表也可以是非分片表。然而,在创建具有以下任一属性的索引
时,不能指定 ONLINE 关键字:
⚫ 函数型索引
⚫ 集群索引
⚫ 虚拟索引
⚫ R-tree 索引
⚫ 按区间分片策略分区的索引
⚫ 在按区间分片策略分区的表上的索引
此外,如果在该表上定义了主键,且一个或多个并发的会话正在拥有引用该主键的外键约束的子表
上执行 DML 操作,则 CREATE INDEX ONLINE 操作产生错误 -710 。在此索引上创建
ONLINE 之前,您必须等待直到所有的具有子表的用户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值