1 .一种Opengauss平台下在线创建本地分区索引的方法,其特征在于,所述方法包括:
第一阶段:创建本地分区索引的数据字典,对主表和分区加锁;
第二阶段:获取分区和分区索引信息,对每一个分区上的索引创建索引条目;
第三阶段:分别对每一个分区补全索引条目;
第四阶段:等待所有旧事务结束,标记本地分区索引为有效,释放主表和分区上的锁;
所述创建本地分区索引的数据字典,对主表和分区加锁,包括:
(1)对分区表加4级事务锁;
(2)针对Interval分区表新增一个特殊虚拟分区,对所述特殊虚拟分区加5级事务锁;
在Interval分区表自动创建分区时,需要尝试对这个特殊虚拟分区加3级事务锁,如果这时
加锁失败则报错,不允许Interval分区表在线创建本地分区索引期间自动创建分区;
(3)创建本地分区索引的数据字典;
(4)创建好本地分区索引的数据字典后,对分区表加4级会话锁、对特殊虚拟分区加5级
会话锁、对所有分区加4级会话锁;
(5)提交当前事务。
2.根据权利要求1所述的Opengauss平台下在线创建本地分区索引的方法,其特征在
于,所述对主表和分区加锁是指对主表和分区加会话锁。
3 .根据权利要求1所述的Opengauss平台下在线创建本地分区索引的方法,其特征在
于,所述获取分区和分区索引信息,对每一个分区上的索引创建索引条目,包括:
(1)等待所有对分区表执行DML的事务结束;
(2)获取当前事务快照;
(3)获取分区表和本地分区索引的信息;
(4)获取所有分区oid,分别对每一个分区进行处理:
a . 获取分区信息和分区上的索引信息;
b. 扫描分区上当前事务快照可见的所有数据,对分区上的索引创建索引条目;
(5)设置本地分区索引为READY状态;
(6)提交当前事务。
4 .根据权利要求3所述的Opengauss平台下在线创建本地分区索引的方法,其特征在
于,所述等待所有对分区表执行DML的事务结束,包括:
(1)获取与分区表5级事务锁冲突的所有事务;
(2)遍历等待上述事务结束。
5 .根据权利要求1所述的Opengauss平台下在线创建本地分区索引的方法,其特征在
于,所述分别对每一个分区补全索引条目,包括:
(1)等待所有对分区表执行DML的事务结束;
(2)获取当前事务快照;
(3)获取分区表和本地分区索引的信息;
(4)获取所有分区oid,分别对每一个分区进行处理:
a . 获取分区信息和分区上的索引信息;
b. 扫描分区上索引的所有条目,并按TID排序;
c . 顺序扫描分区上的所有数据,与索引条目进行归并,找出索引中缺少对应条目的分
权 利 要 求 书
1/2 页
2
评论