[发明专利]一种在线重建索引的方法和装置在审
申请号: | 201310478786.3 | 申请日: | 2013-10-14 |
公开(公告)号: | CN103605657A | 公开(公告)日: | 2014-02-26 |
发明(设计)人: | 李海丰 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙) 44285 | 代理人: | 唐华明 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 在线 重建 索引 方法 装置 | ||
技术领域
本发明涉及数据库技术领域,特别是涉及一种在先重建索引的方法和装置。
背景技术
在数据库中,索引是对数据库基表中的一列或多列的值进行排序的一种结构,因此,使用索引可以快速检索数据库基表中的数据。通常,索引多采用B-Tree结构,在B-Tree结构中,位于索引页中的索引数据是按照树的形式来组织的,同时,每个层次的索引数据是按照顺序进行存储的。也就是说,当将索引数据插入到索引页中存储时,其必须插入到符合顺序要求的索引页中,而不能插入到其它的索引页中(即使其它索引页有足够的存储空间)。如果符合顺序要求的索引页的空闲空间不足,还会申请新的页面用于存储索引数据。
由于索引具有上述特性,因此,当频繁发生删除和插入索引数据的操作时,就很有可能造成索引树不平衡。例如,所有的索引数据离散地分布在多个索引页,并且,每个索引页中只存在极少量的索引数据。显然,这种结构的索引不仅会造成存储空间的浪费,还会降低对索引的扫描效率,进而进一步影响对数据库基表的检索速度。
为了解决这个问题,大多数数据库厂商都提供了重建索引的功能,而一般的重建索引是线下执行的,由于线下重建索引的方式需要在重建过程中断业务,因此,这种索引重建方式并不实用,特别是对于一些全天都要进行业务处理的应用来说,这种重建方式是不可接受的。为此,当前主流的数据库厂商还提供了在线重建索引的功能,即,在重建过程中不中断业务。
其中,一种在线重建索引的方法为:先创建源索引的目标索引(该目标索引与源索引具有相同的结构)和索引快照,其中,在创建过程中,阻塞对基表的写事务,创建完毕后释放阻塞。然后,将索引快照中的源索引数据迁移到目标索引中,而如果在源索引数据迁移过程中产生了新索引数据,则将新索引数据同时插入到源索引和目标索引中。最后,当将源索引中的所有源索引数据全部都迁移到目标索引上时,在线重建过程完毕,后续就可以使用目标索引。
但是,在实现本发明的过程中,本发明的发明人发现现有技术中至少存在如下问题:在将源索引数据迁移过程中产生的新索引数据插入目标索引中时,插入新索引数据的这个操作会打断源索引数据的迁移操作,而插入操作越多,被打断的次数也就越多。对于重建系统而言,就会增加系统随机IO的操作。另外,将新索引数据插入到源索引上,插入操作也会相应地增加系统开销。
发明内容
为了解决上述技术问题,本发明实施例提供了一种在线重建索引的方法和装置,以减少系统随机IO的操作以及系统开销。
本发明实施例公开了如下技术方案:
根据本发明实施例的第一方面,公开了一种在线重建索引的方法,包括:
为源索引创建索引快照、索引缓存和目标索引,并在创建过程中阻塞对数据库基表的写事务,其中,所述目标索引与所述源索引具有相同的结构;
按照索引页的先后顺序逐页地将所述源索引中的源索引数据迁移到所述目标索引中,并在迁移过程中通过索引快照对源索引中的无效源索引数据进行过滤;
将迁移过程中所产生的新索引数据存入所述索引缓存中;
在迁移过程中,如果所述索引缓存中存在正在处理的当前索引页所需的新索引数据,将所述新索引数据与当前索引页中的源索引数据一同迁移到所述目标索引中;或者,在源索引数据全部迁移完毕后,将所述索引缓存中的新索引数据迁移到所述目标索引中。
结合本发明的第一方面,本发明还具有第一种可能,即还包括:当在迁移过程中将新索引数据与当前索引页中的源索引数据一同迁移到所述目标索引中时,在迁移完毕后,检查所述索引缓存中是否还存在未存储在目标索引的新索引数据;
如果是,继续将所述未存储在目标索引的新索引数据迁移到所述目标索引中。
结合本发明的第一方面,以及本发明第一方面的第一种可能,本发明还具有第二种可能,即还包括:
在将所述索引缓存中的新索引数据全部存入到所述目标索引中之后,删除所述索引缓存。
结合本发明的第一方面,以及本发明第一方面的第一种可能,本发明还具有第三种可能,即还包括:
在将所述源索引中的源索引数据全部迁移到所述目标索引中之后,将所述源索引设置为不可用状态。
结合本发明的第一方面,本发明还具有第四种可能,即在索引重建过程中,通过如下方式查询索引数据:
在迁移过程中,在所述源索引和所述索引缓存中查询符合要求的索引数据;
在迁移完毕后,在目标索引中或者在所述目标索引和所述索引缓存中查询符合要求的索引数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310478786.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:新型多功能室内外空气交换净化器
- 下一篇:一种新型聚结分离滤油机