CN103605657A - 一种在线重建索引的方法和装置 - Google Patents
一种在线重建索引的方法和装置 Download PDFInfo
- Publication number
- CN103605657A CN103605657A CN201310478786.3A CN201310478786A CN103605657A CN 103605657 A CN103605657 A CN 103605657A CN 201310478786 A CN201310478786 A CN 201310478786A CN 103605657 A CN103605657 A CN 103605657A
- Authority
- CN
- China
- Prior art keywords
- index
- source
- index data
- data
- new
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
Abstract
本发明实施例公开了一种在线重建索引的方法和装置。其中,该方法包括:为源索引创建索引快照、索引缓存和目标索引,并在创建过程中阻塞对数据库基表的写事务;按照索引页的先后顺序逐页地将源索引中的源索引数据迁移到目标索引中,并在迁移过程中通过索引快照对源索引中的无效源索引数据进行过滤;将迁移过程中所产生的新索引数据存入索引缓存中;在迁移过程中,如果索引缓存中存在正在处理的当前索引页所需的新索引数据,将所述新索引数据与当前索引页中的源索引数据一同迁移到目标索引中;或者,在源索引数据全部迁移完毕后,将索引缓存中的新索引数据迁移到目标索引中。根据本发明实施例,可以减少系统随机IO的操作以及系统开销。
Description
技术领域
本发明涉及数据库技术领域,特别是涉及一种在先重建索引的方法和装置。
背景技术
在数据库中,索引是对数据库基表中的一列或多列的值进行排序的一种结构,因此,使用索引可以快速检索数据库基表中的数据。通常,索引多采用B-Tree结构,在B-Tree结构中,位于索引页中的索引数据是按照树的形式来组织的,同时,每个层次的索引数据是按照顺序进行存储的。也就是说,当将索引数据插入到索引页中存储时,其必须插入到符合顺序要求的索引页中,而不能插入到其它的索引页中(即使其它索引页有足够的存储空间)。如果符合顺序要求的索引页的空闲空间不足,还会申请新的页面用于存储索引数据。
由于索引具有上述特性,因此,当频繁发生删除和插入索引数据的操作时,就很有可能造成索引树不平衡。例如,所有的索引数据离散地分布在多个索引页,并且,每个索引页中只存在极少量的索引数据。显然,这种结构的索引不仅会造成存储空间的浪费,还会降低对索引的扫描效率,进而进一步影响对数据库基表的检索速度。
为了解决这个问题,大多数数据库厂商都提供了重建索引的功能,而一般的重建索引是线下执行的,由于线下重建索引的方式需要在重建过程中断业务,因此,这种索引重建方式并不实用,特别是对于一些全天都要进行业务处理的应用来说,这种重建方式是不可接受的。为此,当前主流的数据库厂商还提供了在线重建索引的功能,即,在重建过程中不中断业务。
其中,一种在线重建索引的方法为:先创建源索引的目标索引(该目标索引与源索引具有相同的结构)和索引快照,其中,在创建过程中,阻塞对基表的写事务,创建完毕后释放阻塞。然后,将索引快照中的源索引数据迁移到目标索引中,而如果在源索引数据迁移过程中产生了新索引数据,则将新索引数据同时插入到源索引和目标索引中。最后,当将源索引中的所有源索引数据全部都迁移到目标索引上时,在线重建过程完毕,后续就可以使用目标索引。
但是,在实现本发明的过程中,本发明的发明人发现现有技术中至少存在如下问题:在将源索引数据迁移过程中产生的新索引数据插入目标索引中时,插入新索引数据的这个操作会打断源索引数据的迁移操作,而插入操作越多,被打断的次数也就越多。对于重建系统而言,就会增加系统随机IO的操作。另外,将新索引数据插入到源索引上,插入操作也会相应地增加系统开销。
发明内容
为了解决上述技术问题,本发明实施例提供了一种在线重建索引的方法和装置,以减少系统随机IO的操作以及系统开销。
本发明实施例公开了如下技术方案:
根据本发明实施例的第一方面,公开了一种在线重建索引的方法,包括:
为源索引创建索引快照、索引缓存和目标索引,并在创建过程中阻塞对数据库基表的写事务,其中,所述目标索引与所述源索引具有相同的结构;
按照索引页的先后顺序逐页地将所述源索引中的源索引数据迁移到所述目标索引中,并在迁移过程中通过索引快照对源索引中的无效源索引数据进行过滤;
将迁移过程中所产生的新索引数据存入所述索引缓存中;
在迁移过程中,如果所述索引缓存中存在正在处理的当前索引页所需的新索引数据,将所述新索引数据与当前索引页中的源索引数据一同迁移到所述目标索引中;或者,在源索引数据全部迁移完毕后,将所述索引缓存中的新索引数据迁移到所述目标索引中。
结合本发明的第一方面,本发明还具有第一种可能,即还包括:当在迁移过程中将新索引数据与当前索引页中的源索引数据一同迁移到所述目标索引中时,在迁移完毕后,检查所述索引缓存中是否还存在未存储在目标索引的新索引数据;
如果是,继续将所述未存储在目标索引的新索引数据迁移到所述目标索引中。
结合本发明的第一方面,以及本发明第一方面的第一种可能,本发明还具有第二种可能,即还包括:
在将所述索引缓存中的新索引数据全部存入到所述目标索引中之后,删除所述索引缓存。
结合本发明的第一方面,以及本发明第一方面的第一种可能,本发明还具有第三种可能,即还包括:
在将所述源索引中的源索引数据全部迁移到所述目标索引中之后,将所述源索引设置为不可用状态。
结合本发明的第一方面,本发明还具有第四种可能,即在索引重建过程中,通过如下方式查询索引数据:
在迁移过程中,在所述源索引和所述索引缓存中查询符合要求的索引数据;
在迁移完毕后,在目标索引中或者在所述目标索引和所述索引缓存中查询符合要求的索引数据。
结合本发明的第一方面,本发明还具有第五种可能,即在源索引数据迁移完毕后,通过如下方式添加新索引数据:
判断在所述索引缓存和所述目标索引中是否存在要添加的新索引数据;如果在所述索引缓存和所述目标索引中都不存在要添加的新索引数据,将所述要添加的新索引数据存入目标索引中。
根据本发明实施例的第二方面,公开了一种在线重建索引的装置,包括:
创建单元,用于为源索引创建索引快照、索引缓存和目标索引,并在创建过程中阻塞对数据库基表的写事务,其中,所述目标索引用于所述源索引具有相同的结构;
源索引数据重建单元,用于按照索引页的先后顺序逐页地将所述索引快照中的源索引数据迁移到所述目标索引中,并在迁移过程中通过索引快照对源索引中的无效源索引数据进行过滤;
新索引数据缓存单元,用于将在迁移过程中产生的新索引数据存入所述索引缓存中;
新索引数据重建单元,用于在迁移过程中,如果所述索引缓存中存在正在处理的当前索引页所需的新索引数据,将所述新索引数据与当前索引页中的源索引数据一同迁移到所述目标索引中,或者,用于在源索引数据全部迁移完毕后,将所述索引缓存中的新索引数据迁移到所述目标索引中。
结合本发明的第二方面,本发明还具有第一种可能,即所述装置还包括:
检查单元,用于当在源索引数据迁移过程中将新索引数据与当前索引页中的源索引数据一同迁移到所述目标索引中时,在迁移到完毕后,检查所述索引缓存中是否还存在未存储在目标索引的新索引数据;
新索引数据补建单元,用于所述检查单元检查出所述索引缓存中还存在未存储在目标索引的新索引数据,继续将所述未存储在目标索引的新索引数据迁移到所述目标索引中。
结合本发明的第二方面,以及本发明第二方面的第一种可能,本发明还具有第二种可能,即所述装置还包括:
删除单元,用于在将所述索引缓存中的新索引数据全部存入到所述目标索引中之后,删除所述索引缓存。
结合本发明的第二方面,以及本发明第二方面的第一种可能,本发明还具有第三种可能,即所述装置还包括:
设置单元,用于在将所述源索引中的源索引数据全部迁移到所述目标索引中之后,将所述源索引设置为不可用状态。
由上述实施例可以看出,与现有技术相比,本发明的优点在于:
将在索引快照与目标索引之间的源索引数据迁移过程中产生的新索引数据保存到索引缓存中(而不是新索引和目标索引中),减少了因将新索引数据存入源索引而带来的系统开销。
而对于索引缓存中的新索引数据,一种方式是:在将索引快照中某一索引页的源索引数据迁移到目标索引时,如果此时索引缓存中存在该索引页有关的新索引数据,也该新索引数据与该索引页中的源索引数据一同迁移到目标索引中。另一种方式是,在将源索引中的源索引数据全部迁移完毕后,再将索引缓存中的新索引数据迁移到目标索引中。从而保证向目标索引插入新索引数据的操作会打断源索引数据的迁移操作,减少了系统随机IO的操作。
另外,在整个重建过程中,只需阻塞一次DML事务,阻塞时间短。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种在线重建索引的方法的一个实施例的流程图;
图2为本发明中一种将索引缓存中的新索引数据保存到目标索引的示意图;
图3为本发明中另一种将索引缓存中的新索引数据保存到目标索引的示意图;
图4为本发明一种在线重建索引的方法的另一个实施例的流程图;
图5为本发明一种在线重建索引的装置的一个实施例结构图;
图6为本发明一种在线重建索引的装置的另一个实施例结构图。
具体实施方式
本发明实施例提供了一种在线重建索引的方法和装置。本发明技术方案的关键在于,如果在将索引快照中的源索引数据迁移到目标索引的过程中产生了新索引数据,先将该新索引数据存入到索引缓存中(而不是存入源索引和目标索引中)。而对于索引缓存中的新索引数据,一种方式是:在将索引快照中某一索引页的源索引数据迁移到目标索引时,如果此时索引缓存中存在该索引页有关的新索引数据,也该新索引数据与该索引页中的源索引数据一同迁移到目标索引中。另一种方式是,在将源索引中的源索引数据全部迁移完毕后,再将索引缓存中的新索引数据迁移到目标索引中。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例进行详细描述。
实施例一
请参阅图1,其为本发明一种在线重建索引的方法的一个实施例的流程图,该方法包括以下步骤:
步骤101:为源索引创建索引快照、索引缓存和目标索引,并在创建过程中阻塞对数据库基表的写事务,其中,所述目标索引与所述源索引具有相同的结构;
一旦数据库管理员发现索引树出现了不平衡,就可以通过命令触发在线重建索引请求,数据库在接收到该请求后对指定的索引进行在线重建。
在进行重建之前,可以先检查一下当前是否存在基于索引对应的基表的写事务,如果存在,可等待该写事务结束后,然后再阻塞对数据库基表的任何写事务(而不会阻塞对数据库基表的读事务),为源索引创建索引快照、索引缓存和与源索引具有相同的结构的目标索引,创建完毕后释放对写事务的阻塞。
显然,通过上述阻塞操作,可以保证:当在迁移过程中出现写事务时,由该写事务产生的新索引数据全部都存入到索引缓存中,而不是源索引和目标索引中。另外,还可以保证:当由索引快照对源索引中的无效源索引数据进行过滤时,过滤后并迁移到目标索引中的源索引数据与重建索引前源索引中的源索引数据之间的一致性,即源索引数据是完全相同的。
另外,通过设置,使创建的目标索引处于不可用状态,即,不能对目标索引进行查询、插入和删除操作。
步骤102:按照索引页的先后顺序逐页将所述索引快照中的源索引数据迁移到所述目标索引中,并在迁移过程中通过索引快照对源索引中的无效源索引数据进行过滤;
索引页,即为索引数据存储的基本单位,数据库中未索引文件分配的磁盘空间可以从逻辑上划分成页(从0到n连续编号),每页的大小固定。逐个索引页地将索引快照中的源索引数据迁移到目标索引中。
步骤103:将迁移过程中所产生的新索引数据存入所述索引缓存中;
在将源索引中的源索引数据迁移到目标索引的同时,也会出现对数据库基表的DML事务,如写事务,而这些写事务就会引起对索引的操作,如插入或删除操作,进而产生新索引数据,一旦产生新索引数据,将这些新索引数据全部都存入到索引缓存中。
索引缓存由两个队列组成,即,新增元组队列和原有元组删除队列。其中,新增元组队列按照键值大小进行排序存储,而原有元组删除队列则按照被删除的原有元组的唯一标识进行排序,例如,该唯一标识可以为用于定位数据库基表中的元组的标识。
另外,索引缓存运行时,还需要处理下面的情况,即当索引缓存空间不足时,为了给新增元组提供存储空间,就需要释放部分元组的空间。这时,采用的方式是,把已迁移到目标索引的新增元组(和/或原有元组的删除标识)批量插入到源索引的原有元组上,并释放新增元组所占空间(由于源索引还需提供查询操作,所以需要存储这部分元组)。
步骤104:在迁移过程中,如果所述索引缓存中存在正在处理的当前索引页所需的新索引数据,将所述新索引数据与当前索引页中的源索引数据一同迁移到所述目标索引中;或者,在源索引数据迁移全部完毕后,将所述索引缓存中的新索引数据迁移到所述目标索引中。
例如,针对第一种方式,假设当前正在将源索引的第1索引页(第1索引页为正在处理的当前索引页)中的源索引数据迁移到目标索引的第1索引页中,查看索引缓存中是否存在源索引的第1索引页所需的新索引数据,如果存在,将该新索引数据与第1索引页内的源索引数据一同迁移到目标索引的第1索引页中,依次类推。其实现过程如图2所示。针对第二种方式,在将源索引中的源索引数据全部迁移到目标索引之后,再将索引缓存中存在的源索引的第1索引页所需的新索引数据迁移到目标索引的第1索引页中,将索引缓存中存在的源索引的第2索引页所需的新索引数据迁移到目标索引的第1索引页中,依此类推。其实现过程如图3所示。
由于索引快照中的源索引数据是以元组为单位有序排列的,我们把其迁移到目标索引时,只需按照其原有顺序迁移即可。当把索引快照中的一个个元组迁移到目的索引的索引页面时,会同时查看索引缓存中是否存在比待迁移元组的键值小的元组,如果没有,直接把该待迁移元组插入到目标索引中,如果有,则先将索引缓存中的元组插入到目标索引中,直到索引缓存中的元组的键值大于该待迁移元组的键值为止,然后再把索引快照中待迁移元组插入到目标索引中。
在把索引快照中待迁移元组插入到目标索引中时,先查看该待迁移元组是否在索引缓存的原有元组删除队列中,如果存在,在插入的同时为该待迁移元组打上一个删除标识。
在将索引缓存中的新索引数据全部存入到目标索引之后,可删除该索引缓存,以释放系统的存储空间。并且,此时通过设置使目标索引由不可用状态转变为可用状态,而在设置目标索引的可用状态过程中,需要短暂地阻塞DML事务,设置完毕后即可释放阻塞。
另外,在将源索引中的源索引数据迁移到目标索引的过程中,各种索引操作只能在源索引上,而不能在新索引上。而在将源索引中的源索引数据全部迁移到目标索引之后,源索引即为不可用,可将源索引删除,各种索引操作都只在新索引上。
由上述实施例可以看出,与现有技术相比,本发明的优点在于:
将在索引快照与目标索引之间的源索引数据迁移过程中产生的新索引数据保存到索引缓存中(而不是新索引和目标索引中),减少了因将新索引数据存入源索引而带来的系统开销。
而对于索引缓存中的新索引数据,一种方式是:在将索引快照中某一索引页的源索引数据迁移到目标索引时,如果此时索引缓存中存在该索引页有关的新索引数据,也该新索引数据与该索引页中的源索引数据一同迁移到目标索引中。另一种方式是,在将源索引中的源索引数据全部迁移完毕后,再将索引缓存中的新索引数据迁移到目标索引中。从而保证向目标索引插入新索引数据的操作会打断源索引数据的迁移操作,减少了系统随机IO的操作。
另外,在整个重建过程中,只需阻塞一次DML事务,阻塞时间短。
实施例二
在上述步骤104中,针对第一种方式,假设在将索引缓存中存在的源索引的第1索引页所需的新索引数据迁移到目标索引的第1索引页中之后,又有源索引的第1索引页所需的新索引数据存入到索引缓存中,如果不将这些新索引数据再迁移到目标索引中,必然会在线重建过程中遗漏索引数据。
针对这一问题,本实施例与实施例一不同之处在于,还进一步检查索引缓存中是否有遗漏的新索引数据(即,未存储到目标索引的新索引数据),并在确定遗漏的情况下,将遗漏的新索引数据补入目标索引中。请参阅图4,其为本发明一种在线重建索引的方法的另一个实施例的流程图,该方法包括以下步骤:
步骤401:为源索引创建索引快照、索引缓存和目标索引,并在创建过程中阻塞对数据库基表的写事务,其中,所述目标索引与所述源索引具有相同的结构;
步骤402:按照索引页的前后顺序逐页地将所述索引快照中的源索引数据迁移到所述目标索引中,并在迁移过程中通过索引快照对源索引中的无效源索引数据进行过滤;
步骤403:将迁移过程中所产生的新索引数据存入所述索引缓存中;
步骤404:在迁移过程中,如果所述索引缓存中存在正在处理的当前索引页所需的新索引数据,将所述新索引数据与当前索引页中的源索引数据一同迁移到所述目标索引中;
上述步骤的详细执行过程可以参见实施例一中的步骤101-104。
步骤405:检查所述索引缓存中是否还存在未存储在目标索引的新索引数据,如果是,进入步骤406,否则,结束流程;
步骤406:继续将所述未存储在目标索引的新索引数据迁移到所述目标索引中,结束流程。
此处,先查看索引缓存中是否存在目标索引的第1索引页所需的且也未存储在目标索引中的新索引数据,如果存在,将该部分新索引数据从索引缓存中迁移到目标索引中,再继续查看索引缓存中是否存在目标索引的第2索引页所需的且也未存储在目标索引中的新索引数据,如果存在,将该部分新索引数据从索引缓存中迁移到目标索引中,依此类推。
由上述实施例可以看出,与现有技术相比,本发明的优点在于:
将在索引快照与目标索引之间的源索引数据迁移过程中产生的新索引数据保存到索引缓存中(而不是新索引和目标索引中),减少了因将新索引数据存入源索引而带来的系统开销。
而对于索引缓存中的新索引数据,一种方式是:在将索引快照中某一索引页的源索引数据迁移到目标索引时,如果此时索引缓存中存在该索引页有关的新索引数据,也该新索引数据与该索引页中的源索引数据一同迁移到目标索引中。另一种方式是,在将源索引中的源索引数据全部迁移完毕后,再将索引缓存中的新索引数据迁移到目标索引中。从而保证向目标索引插入新索引数据的操作会打断源索引数据的迁移操作,减少了系统随机IO的操作。
另外,在整个重建过程中,只需阻塞一次DML事务,阻塞时间短。
在整个索引重建过程都是在线完成的,即,在索引重建的同时,也不中断业务,使系统仍然可以对索引进行查询、插入和删除。
其中,在将索引快照中的源索引数据迁移到目标索引的迁移过程中,查询、插入和删除处理具体如下:
插入处理:若索引是唯一索引,则会基于源索引和索引缓存进行唯一性验证,如果验证通过,将要插入的新索引数据存入到索引缓存中。
删除处理:删除分两种情况,第一种情况是要删除的索引在源索引中,那么只需在索引缓存上记录该索引的删除标记即可;第二种情况是要删除的索引是重建过程中新插入的索引,而该索引在索引缓存中,那么只需在索引缓存中直接打上删除标识即可。查询处理:需要从源索引和索引缓存两处获得索引数据,如果从源索引中获得索引数据后,还需要从索引缓存中查看该索引数据是否被删除。
在将索引快照中的源索引数据全部迁移到目标索引之后(此时源索引已不再可用),查询、插入和删除处理具体如下:
插入处理:若索引是唯一索引,则会基于目标索引,或者目标索引和索引缓存进行唯一性验证,如果验证通过,将要插入的新索引数据存入到目标索引中。
删除处理:删除分两种情况,第一种情况是要删除的索引在目标索引中,那么只需在目标索引上记录该索引的删除标记即可;第二种情况是要删除的索引在索引缓存中,那么只需在索引缓存中直接打上删除标识即可。
查询处理:需要从源索引和索引缓存两处获得索引数据,如果从源索引中获得索引数据后,还需要从索引缓存中查看该索引数据是否被删除。
实施例三
与上述一种在线重建索引的方法相对应,本发明实施例还提供了一种在线重建索引的装置。请参阅图5,其为本发明一种在线重建索引的装置的一个实施例结构图,该装置包括:创建单元501、源索引数据重建单元502、新索引数据缓存单元503和新索引数据重建单元504。下面结合该装置的工作原理进一步介绍其内部结构以及连接关系。
创建单元501,用于为源索引创建索引快照、索引缓存和目标索引,并在创建过程中阻塞对数据库基表的写事务,其中,所述目标索引用于所述源索引具有相同的结构;
源索引数据重建单元502,用于按照索引页的先后顺序逐页地将所述索引快照中的源索引数据迁移到所述目标索引中,并在迁移过程中通过索引快照对源索引中的无效源索引数据进行过滤;
新索引数据缓存单元503,用于将在迁移过程中产生的新索引数据存入所述索引缓存中;
新索引数据重建单元504,用于在迁移过程中,如果所述索引缓存中存在正在处理的当前索引页所需的新索引数据,将所述新索引数据与当前索引页中的源索引数据一同迁移到所述目标索引中,或者,用于在源索引数据全部迁移完毕后,将所述索引缓存中的新索引数据迁移到所述目标索引中。
优选的,如图6所示,该装置还包括:检查单元505和新索引数据补建单元506,其中,
检查单元505,用于当在源索引数据迁移过程中将新索引数据与当前索引页中的源索引数据一同迁移到所述目标索引中时,当新索引数据迁移到完毕后,检查所述索引缓存中是否还存在未存储在目标索引的新索引数据;
新索引数据补建单元506,用于所述检查单元检查出所述索引缓存中还存在未存储在目标索引的新索引数据,将所述未存储在目标索引的新索引数据迁移到所述目标索引中。
进一步优选的,所述装置还包括:删除单元,用于在将所述索引缓存中的新索引数据全部存入到所述目标索引中之后,删除所述索引缓存。
或者,进一步优选的,所述装置还包括:设置单元,用于在将所述源索引中的源索引数据全部迁移到所述目标索引中之后,将所述源索引设置为不可用状态。
由上述实施例可以看出,与现有技术相比,本发明的优点在于:
将在索引快照与目标索引之间的源索引数据迁移过程中产生的新索引数据保存到索引缓存中(而不是新索引和目标索引中),减少了因将新索引数据存入源索引而带来的系统开销。
而对于索引缓存中的新索引数据,一种方式是:在将索引快照中某一索引页的源索引数据迁移到目标索引时,如果此时索引缓存中存在该索引页有关的新索引数据,也该新索引数据与该索引页中的源索引数据一同迁移到目标索引中。另一种方式是,在将源索引中的源索引数据全部迁移完毕后,再将索引缓存中的新索引数据迁移到目标索引中。从而保证向目标索引插入新索引数据的操作会打断源索引数据的迁移操作,减少了系统随机IO的操作。
另外,在整个重建过程中,只需阻塞一次DML事务,阻塞时间短。
所述领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述到的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,可以采用软件功能单元的形式实现。
需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上对本发明所提供的一种在线重建索引的方法和装置进行了详细介绍,本文中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种在线重建索引的方法,其特征在于,包括:
为源索引创建索引快照、索引缓存和目标索引,并在创建过程中阻塞对数据库基表的写事务,其中,所述目标索引与所述源索引具有相同的结构;
按照索引页的先后顺序逐页地将所述源索引中的源索引数据迁移到所述目标索引中,并在迁移过程中通过索引快照对源索引中的无效源索引数据进行过滤;
将迁移过程中所产生的新索引数据存入所述索引缓存中;
在迁移过程中,如果所述索引缓存中存在正在处理的当前索引页所需的新索引数据,将所述新索引数据与当前索引页中的源索引数据一同迁移到所述目标索引中;或者,在源索引数据全部迁移完毕后,将所述索引缓存中的新索引数据迁移到所述目标索引中。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当在迁移过程中将新索引数据与当前索引页中的源索引数据一同迁移到所述目标索引中时,在迁移完毕后,检查所述索引缓存中是否还存在未存储在目标索引的新索引数据;
如果是,继续将所述未存储在目标索引的新索引数据迁移到所述目标索引中。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
在将所述索引缓存中的新索引数据全部存入到所述目标索引中之后,删除所述索引缓存。
4.根据权利要求1或2所述的方法,其特征在于,还包括:
在将所述源索引中的源索引数据全部迁移到所述目标索引中之后,将所述源索引设置为不可用状态。
5.根据权利要求1所述的方法,其特征在于,在索引重建过程中,通过如下方式查询索引数据:
在迁移过程中,在所述源索引和所述索引缓存中查询符合要求的索引数据;
在迁移完毕后,在目标索引中或者在所述目标索引和所述索引缓存中查询符合要求的索引数据。
6.根据权利要求1所述的方法,其特征在于,在源索引数据迁移完毕后,通过如下方式添加新索引数据:
判断在所述索引缓存和所述目标索引中是否存在要添加的新索引数据;如果在所述索引缓存和所述目标索引中都不存在要添加的新索引数据,将所述要添加的新索引数据存入目标索引中。
7.一种在线重建索引的装置,其特征在于,包括:
创建单元,用于为源索引创建索引快照、索引缓存和目标索引,并在创建过程中阻塞对数据库基表的写事务,其中,所述目标索引用于所述源索引具有相同的结构;
源索引数据重建单元,用于按照索引页的先后顺序逐页地将所述索引快照中的源索引数据迁移到所述目标索引中,并在迁移过程中通过索引快照对源索引中的无效源索引数据进行过滤;
新索引数据缓存单元,用于将在迁移过程中产生的新索引数据存入所述索引缓存中;
新索引数据重建单元,用于在迁移过程中,如果所述索引缓存中存在正在处理的当前索引页所需的新索引数据,将所述新索引数据与当前索引页中的源索引数据一同迁移到所述目标索引中;或者,用于在源索引数据全部迁移完毕后,将所述索引缓存中的新索引数据迁移到所述目标索引中。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
检查单元,用于当在源索引数据迁移过程中将新索引数据与当前索引页中的源索引数据一同迁移到所述目标索引中时,在迁移到完毕后,检查所述索引缓存中是否还存在未存储在目标索引的新索引数据;
新索引数据补建单元,用于所述检查单元检查出所述索引缓存中还存在未存储在目标索引的新索引数据,继续将所述未存储在目标索引的新索引数据迁移到所述目标索引中。
9.根据权利要求7或8所述的装置,其特征在于,所述装置还包括:
删除单元,用于在将所述索引缓存中的新索引数据全部存入到所述目标索引中之后,删除所述索引缓存。
10.根据权利要求7或8所述的装置,其特征在于,所述装置还包括:
设置单元,用于在将所述源索引中的源索引数据全部迁移到所述目标索引中之后,将所述源索引设置为不可用状态。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310478786.3A CN103605657A (zh) | 2013-10-14 | 2013-10-14 | 一种在线重建索引的方法和装置 |
EP14854786.2A EP3002687A4 (en) | 2013-10-14 | 2014-04-25 | METHOD AND DEVICE FOR RECREATING AN ONLINE INDEX |
PCT/CN2014/076185 WO2015054998A1 (zh) | 2013-10-14 | 2014-04-25 | 一种在线重建索引的方法和装置 |
US14/981,111 US20160132542A1 (en) | 2013-10-14 | 2015-12-28 | Online index rebuilding method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310478786.3A CN103605657A (zh) | 2013-10-14 | 2013-10-14 | 一种在线重建索引的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103605657A true CN103605657A (zh) | 2014-02-26 |
Family
ID=50123882
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310478786.3A Pending CN103605657A (zh) | 2013-10-14 | 2013-10-14 | 一种在线重建索引的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20160132542A1 (zh) |
EP (1) | EP3002687A4 (zh) |
CN (1) | CN103605657A (zh) |
WO (1) | WO2015054998A1 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015054998A1 (zh) * | 2013-10-14 | 2015-04-23 | 华为技术有限公司 | 一种在线重建索引的方法和装置 |
CN105373566A (zh) * | 2014-08-30 | 2016-03-02 | 华为技术有限公司 | 在线重建索引方法及装置 |
CN106407376A (zh) * | 2016-09-12 | 2017-02-15 | 杭州数梦工场科技有限公司 | 重建索引方法及装置 |
CN106897345A (zh) * | 2016-07-22 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 一种数据存储的方法及装置 |
WO2018036235A1 (zh) * | 2016-08-22 | 2018-03-01 | 中兴通讯股份有限公司 | 一种solr数据迁移方法和装置 |
CN108062358A (zh) * | 2017-11-28 | 2018-05-22 | 厦门市美亚柏科信息股份有限公司 | innodb引擎删除记录的离线恢复方法、存储介质 |
CN108376156A (zh) * | 2018-02-08 | 2018-08-07 | 上海达梦数据库有限公司 | 创建数据库索引的方法、装置、服务器及存储介质 |
CN110990377A (zh) * | 2019-11-21 | 2020-04-10 | 上海达梦数据库有限公司 | 一种数据装载方法、装置、服务器及存储介质 |
CN111857539A (zh) * | 2019-04-25 | 2020-10-30 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备和计算机程序产品 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11055264B2 (en) * | 2017-05-10 | 2021-07-06 | Dropbox, Inc. | Automatically coordinating application schema changes in a distributed data storage system |
US11768621B2 (en) * | 2021-12-06 | 2023-09-26 | Gong.Io Ltd. | Live data migration in document stores |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6591269B1 (en) * | 1999-05-19 | 2003-07-08 | Sybase, Inc. | Database system with methodology for online index rebuild |
US8195702B2 (en) * | 2007-07-30 | 2012-06-05 | Oracle International Corporation | Online index builds and rebuilds without blocking locks |
CN102955792A (zh) * | 2011-08-23 | 2013-03-06 | 崔春明 | 一种实时全文搜索引擎事务处理的实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103605657A (zh) * | 2013-10-14 | 2014-02-26 | 华为技术有限公司 | 一种在线重建索引的方法和装置 |
-
2013
- 2013-10-14 CN CN201310478786.3A patent/CN103605657A/zh active Pending
-
2014
- 2014-04-25 WO PCT/CN2014/076185 patent/WO2015054998A1/zh active Application Filing
- 2014-04-25 EP EP14854786.2A patent/EP3002687A4/en not_active Ceased
-
2015
- 2015-12-28 US US14/981,111 patent/US20160132542A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6591269B1 (en) * | 1999-05-19 | 2003-07-08 | Sybase, Inc. | Database system with methodology for online index rebuild |
US8195702B2 (en) * | 2007-07-30 | 2012-06-05 | Oracle International Corporation | Online index builds and rebuilds without blocking locks |
CN102955792A (zh) * | 2011-08-23 | 2013-03-06 | 崔春明 | 一种实时全文搜索引擎事务处理的实现方法 |
Non-Patent Citations (1)
Title |
---|
金喜波等: "《在数据库系统中应用索引重建技术》", 《中小企业管理与技术》 * |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015054998A1 (zh) * | 2013-10-14 | 2015-04-23 | 华为技术有限公司 | 一种在线重建索引的方法和装置 |
CN105373566B (zh) * | 2014-08-30 | 2018-01-23 | 华为技术有限公司 | 在线重建索引方法及装置 |
CN105373566A (zh) * | 2014-08-30 | 2016-03-02 | 华为技术有限公司 | 在线重建索引方法及装置 |
WO2016029748A1 (zh) * | 2014-08-30 | 2016-03-03 | 华为技术有限公司 | 在线重建索引方法及装置 |
EP3142021A1 (en) * | 2014-08-30 | 2017-03-15 | Huawei Technologies Co., Ltd. | Method and device for online index rebuilding |
EP3142021A4 (en) * | 2014-08-30 | 2017-05-17 | Huawei Technologies Co. Ltd. | Method and device for online index rebuilding |
CN106897345A (zh) * | 2016-07-22 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 一种数据存储的方法及装置 |
WO2018036235A1 (zh) * | 2016-08-22 | 2018-03-01 | 中兴通讯股份有限公司 | 一种solr数据迁移方法和装置 |
CN106407376A (zh) * | 2016-09-12 | 2017-02-15 | 杭州数梦工场科技有限公司 | 重建索引方法及装置 |
CN106407376B (zh) * | 2016-09-12 | 2019-12-20 | 杭州数梦工场科技有限公司 | 重建索引方法及装置 |
CN108062358A (zh) * | 2017-11-28 | 2018-05-22 | 厦门市美亚柏科信息股份有限公司 | innodb引擎删除记录的离线恢复方法、存储介质 |
CN108062358B (zh) * | 2017-11-28 | 2020-12-29 | 厦门市美亚柏科信息股份有限公司 | innodb引擎删除记录的离线恢复方法、存储介质 |
CN108376156A (zh) * | 2018-02-08 | 2018-08-07 | 上海达梦数据库有限公司 | 创建数据库索引的方法、装置、服务器及存储介质 |
CN108376156B (zh) * | 2018-02-08 | 2020-08-14 | 上海达梦数据库有限公司 | 创建数据库索引的方法、装置、服务器及存储介质 |
CN111857539A (zh) * | 2019-04-25 | 2020-10-30 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备和计算机程序产品 |
CN111857539B (zh) * | 2019-04-25 | 2024-04-12 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备和计算机可读介质 |
CN110990377A (zh) * | 2019-11-21 | 2020-04-10 | 上海达梦数据库有限公司 | 一种数据装载方法、装置、服务器及存储介质 |
CN110990377B (zh) * | 2019-11-21 | 2023-08-22 | 上海达梦数据库有限公司 | 一种数据装载方法、装置、服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3002687A4 (en) | 2016-07-20 |
WO2015054998A1 (zh) | 2015-04-23 |
US20160132542A1 (en) | 2016-05-12 |
EP3002687A1 (en) | 2016-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103605657A (zh) | 一种在线重建索引的方法和装置 | |
AU770289B2 (en) | Method and apparatus for concurrent DBMS table operations | |
US10275481B2 (en) | Updating of in-memory synopsis metadata for inserts in database table | |
CN108509462B (zh) | 一种同步活动事务表的方法及装置 | |
CN105718507A (zh) | 一种数据迁移方法和装置 | |
CN103020255A (zh) | 分级存储方法和装置 | |
CN110096509A (zh) | 大数据环境下实现历史数据拉链表存储建模处理的系统及方法 | |
US7844776B2 (en) | RAID capacity expansion handling method and system with concurrent data access capability | |
CN104268097B (zh) | 一种元数据处理方法及系统 | |
CN104461384A (zh) | 一种数据写入方法及存储设备 | |
US20180011897A1 (en) | Data processing method having structure of cache index specified to transaction in mobile environment dbms | |
CN104133970A (zh) | 一种数据空间管理方法及装置 | |
US10452496B2 (en) | System and method for managing storage transaction requests | |
CN115840731A (zh) | 文件处理方法、计算设备及计算机存储介质 | |
CN105573862B (zh) | 一种恢复文件系统的方法和设备 | |
CN114297196A (zh) | 元数据存储方法、装置、电子设备及存储介质 | |
CN112988696B (zh) | 文件整理方法、装置及相关设备 | |
CN114328018A (zh) | 快照的创建方法、计算设备及存储介质 | |
EP3082050A1 (en) | Mass data fusion storage method and system | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
CN105843807B (zh) | 一种数据删除方法、设备及平台 | |
CN111177091B (zh) | 基于xfs文件系统录像预分配存储方法、系统及存储介质 | |
CN114356232B (zh) | 数据读写方法和装置 | |
CN117539690B (zh) | 多磁盘数据的合并恢复方法、装置、设备、介质和产品 | |
CN112650447B (zh) | 一种ceph分布式块存储的备份方法、系统及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140226 |