在线创建索引的实现方法与流程

文档序号:26589809发布日期:2021-09-10 20:32阅读:来源:国知局

技术特征:
1.一种在线创建索引的实现方法,其特征在于所述的方法包括如下步骤:步骤a、根据数据库中原表索引的定义,创建与索引相对应的实体索引表;步骤b、生成索引表的元数据信息,将索引表的状态设为“维护”,并同步当前索引表的状态信息到各个服务进程中,且当前状态的索引表只接受插入、删除和更新的sql感知;步骤c、读取扫描原表中的记录数据并同步至索引表中,且在同步过程中,如索引表中没有此前插入原表的数据,则将数据插入索引表中,反之则不做进一步处理;继续读取扫描原表,直至同步完成;步骤d、读取扫描同步后的索引表中的数据,如索引表存在原表中不存在的数据,则作为无效数据删除,反之则继续读取扫描同步后的索引表中的数据,直至无效数据删除完成,索引表创建完成。2.根据权利要求1所述的在线创建索引的实现方法,其特征在于:所述的方法还包括步骤e、将索引表的状态更新为“有效”,并同步当前索引表的状态信息到各个服务进程中,此时查询的sql可使用该索引。3.根据权利要求1所述的在线创建索引的实现方法,其特征在于:所述步骤b中插入的sql感知为在原表上插入数据时,同时向索引表中插入同样的数据;删除的sql感知为在原表上删除数据时,同时删除索引表中的相同数据;如索引表中无对应的数据,则不作处理;更新的sql感知为在原表上更新数据时,如索引表中具有对应的数据需要同时更新,则先删除索引表中的原数据,然后再插入新的数据;如删除时索引表中无对应的数据,则直接向索引表中插入新的数据。4.根据权利要求1或3所述的在线创建索引的实现方法,其特征在于:所述步骤b中插入、删除与更新的数据为实时交易记录数据。5.根据权利要求1所述的在线创建索引的实现方法,其特征在于:所述步骤b将索引表的状态设为“维护”后,如有正在处理的关联sql,进行重新编译,重新执行并插入或更新至索引表中;如同步之前已经处理的sql,则不再插入或更新至索引表中。6.根据权利要求1所述的在线创建索引的实现方法,其特征在于:所述步骤c中为将原表在一个时刻的历史记录同步至索引表中,且如索引表中没有此前插入原表的数据,则将数据插入索引表中,在插入成功后,继续扫描原表中的记录数据,反之则回滚事务继续判断索引表中是否有此前插入原表的数据。7.根据权利要求1所述的在线创建索引的实现方法,其特征在于:所述步骤d中如索引表存在原表中不存在的数据,则作为无效数据删除,在删除成功后则继续同步后的索引表中的数据,反之则回滚事务继续判断索引表中是否存在原表中不存在的数据。8.根据权利要求1所述的在线创建索引的实现方法,其特征在于:所述步骤a中如创建索引表失败,则删除当前索引表,重复步骤a重新创建新索引表。9.根据权利要求1所述的在线创建索引的实现方法,其特征在于:所述步骤b中如索引表的状态设为“维护”后,同步当前索引表的状态信息到各个服务进程时失败时,或者步骤c中如读取扫描原表中的记录数据并同步至索引表中时失败时,则均首先等待所有sql事务终止,然后将索引表的状态设为“失效”,最后删除当前索引表,重复步骤a重新创建新索引表。

技术总结
本发明公开了一种在线创建索引的实现方法,属一种数据库索引表创建方法,该方法首先根据数据库中原表索引的定义,创建与索引相对应的实体索引表;然后生成索引表的元数据信息,将索引表的状态设为“维护”,并同步索引表的状态信息到各个服务进程中,且当前状态的索引表只接受插入、删除和更新的SQL感知等;本发明以索引原表为一张单独表为前提,通过增加索引原表的“维护”状态,以分阶段维护索引的方式来实现索引表在线创建而不影响交易,且通过历史数据同步再删除无效数据的方式,确保索引表与原表的数据一致,使得SQL On HBase数据库在线创建索引的过程中无需锁表,且不依赖于临时表或日志,亦不影响数据库交易正常进行。亦不影响数据库交易正常进行。亦不影响数据库交易正常进行。


技术研发人员:杨永锋
受保护的技术使用者:北京易鲸捷信息技术有限公司
技术研发日:2021.08.16
技术公布日:2021/9/9
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1