一种处理增量索引合并失败的方法及装置的制造方法

文档序号:9350010阅读:250来源:国知局
一种处理增量索引合并失败的方法及装置的制造方法
【技术领域】
[0001]本公开涉及数据库技术领域,尤其涉及一种处理增量索引合并失败的方法及装置。
【背景技术】
[0002]近年来,数据库得到越来越广泛的应用,其中索引作为数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
[0003]在数据库中,索引相对于数据库的SQL语句执行得更快。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。当数据库中有大量记录时,若要对数据库进行查询,若采用非索引的方式搜索,需要将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,会消耗大量数据库系统时间,导致大量磁盘I/O操作;若采用索引的方式搜索,在索引中找到符合查询条件的索引值,可快速找到数据库中对应的记录。
[0004]数据库中增加新的数据,不仅需要更新数据库本身,还需要更新与数据库对应的索引。新增加的索引会根据新增加的数据而产生,为了使索引与更新后的数据库相匹配,需要同步更新索引,即将新增加的索引合并到总索引中。在合并的过程中,会有一定的概率发生合并错误的情况。现有技术中,需要监测工具对合并过程进行实时监测,若发生合并失败的状况,会根据监测到的问题,重新建立新的索引。在此过程中,大部分将新增加的索引合并到总索引的操作是会成功的。若每次合并过程都加入监测工具,监测工具实时的监控合并的过程,会占用较多的系统资源,影响数据库更新的效率。

【发明内容】

[0005]本发明提供一种处理增量索引合并失败的方法及装置,用在不需要监测工具来实时监测合并的过程的情况下,处理发生合并增量索引和总索引合并失败的情况。
[0006]根据本公开实施例的第一方面,提供一种处理增量索引合并失败的方法,在服务器端,包括:
[0007]执行将增量索引合并到总索引的处理;
[0008]判断所述处理是否失败;
[0009]在所述处理失败时,重新执行所述处理;
[0010]当重新执行的所述处理失败时,重新创建所述增量索引。
[0011]本公开的实施例提供的技术方案可以包括以下有益效果:无需监测工具来实时监测合并的过程,就可以处理增量索引合并失败的问题,降低了系统资源的消耗的同时,提高了总索引更新的效率。
[0012]在一个实施例中,在所述处理失败时,重新执行所述处理,包括:
[0013]在所述处理失败时,将所述总索引回滚到合并所述增量索引前的起始状态;
[0014]重新将所述增量索引合并到所述总索引。
[0015]本公开的实施例提供的技术方案可以包括以下有益效果:保证了总索引始终维持在正确的状态下,保证了总索引的所有数据的可靠性和准确性。
[0016]在一个实施例中,所述重新将所述增量索引合并到所述总索引,包括:
[0017]重新执行至少一次将所述增量索引合并到所述总索引的处理,其中:
[0018]在每重新执行一次之后,判断本次执行是否成功,当本次执行失败时,继续重新执行所述处理,直到执行成功时结束、或者直到重新执行的失败次数达到预设阈值时,停止重新执行所述处理。
[0019]本公开的实施例提供的技术方案可以包括以下有益效果:在无需监测工具进行实时监控的情况下,通过本实施例的方法推断出将增量索引合并到总索引失败的原因,系统无需承担监测工具进行实时监测所消耗的系统资源,保证了系统的高效运行效率。
[0020]在一个实施例中,所述当重新执行的所述处理失败时,重新创建所述增量索引,包括:
[0021]当所述重新执行的失败次数达到预设阈值时,重新创建所述增量索引。
[0022]本公开的实施例提供的技术方案可以包括以下有益效果:判断重新执行的失败次数是否达到预设阈值的数值,使用预设阈值时,可以避免系统进行额外的合并操作,同时不至于因为执行合并操作太少,导致错过正确的增量索引。
[0023]在一个实施例中,在重新创建所述增量索引之前,包括如下步骤S51:
[0024]在步骤S51中,删除所述增量索引。
[0025]本公开的实施例提供的技术方案可以包括以下有益效果:在根据生成原增量索引的数据,重新创建一个新的增量索引之前,删除原增量索引,可以避免不同增量索引之间的相互干扰,使索引更新系统运行更稳定。
[0026]根据本公开实施例的第二方面,提供一种处理增量索引合并失败的装置,在服务器端,包括:
[0027]合并模块,用于执行将增量索引合并到总索引的处理;
[0028]判断模块,用于判断所述处理是否失败;
[0029]重执模块,用于在所述处理失败时,重新执行所述处理;
[0030]重建模块,用于当重新执行的所述处理失败时,重新创建所述增量索引。
[0031 ] 在一个实施例中,所述合并模块,包括:
[0032]回滚子模块,用于在所述处理失败时,将所述总索引回滚到合并所述增量索引前的起始状态;
[0033]合并子模块,用于重新将所述增量索引合并到所述总索引。
[0034]在一个实施例中,所述合并子模块,还用于重新执行至少一次将所述增量索引合并到所述总索引的处理,其中:在每重新执行一次之后,判断本次执行是否成功,当本次执行失败时,继续重新执行所述处理,直到执行成功时结束、或者直到重新执行的失败次数达到预设阈值时,停止重新执行所述处理。
[0035]在一个实施例中,所述重建模块,包括:
[0036]重建子模块,用于当所述重新执行的失败次数达到预设阈值时,重新创建所述增量索引。
[0037]在一个实施例中,所述装置还包括:
[0038]删除模块,用于在所述重建模块重新创建所述增量索引之前,删除所述增量索引。
[0039]本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
[0040]下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
【附图说明】
[0041]附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0042]图1为本发明一示例性实施例示出的一种处理增量索引合并失败的方法流程图;
[0043]图2为本发明一示例性实施例示出的一种处理增量索引合并失败的方法流程图;
[0044]图3为本发明一示例性实施例示出的一种处理增量索引合并失败的方法流程图;
[0045]图4为本发明一示例性实施例示出的一种处理增量索引合并失败的方法流程图;
[0046]图5为本发明一示例性实施例示出的一种处理增量索引合并失败的方法流程图;
[0047]图6为本发明一示例性实施例示出的一种处理增量索引合并失败的装置框图;
[0048]图7为本发明一示例性实施例示出的一种处理增量索引合并失败的装置框图;
[0049]图8为本发明一示例性实施例示出的一种处理增量索引合并失败的装置框图;
[0050]图9为本发明一示例性实施例示出的一种处理增量索引合并失败的装置框图;
【具体实施方式】
[0051]以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
[0052]数据库中增加新的数据,不仅需要更新数据库本身,还需要更新与数据库对应的索引。新增加的索引会根据新增加的数据而产生,为了使索引与更新后的数据库相匹配,需要同步更新索引,即将新增加的索引合并到总索引中。索引与数据库之间的关系,相当于一本书的目录与正文之间关系。所有索引数据分布在多个服务器下对应数据库中的多个分表中,索引分片是在每个服务器单独进行,根据分片总数,将该服务器数据均匀的分布到各个索引分片中。
[0053]当数据库中有大量记录时,对数据库中数据进行查询有两种方式。第一种搜索的方式是搜索整个数据库,将查询条件与数据库中的所有数据进行逐一对比,然后返回符合查询条件的数据;第二种搜索的方式是在搜索引擎中建立索引,在索引中找到符合查询条件的记录,再根据索引与数据库的对应关系,快捷的查询到数据库中对应的记录。采用第一种查询方式,会消耗大量数据库系统资源,同时造成大量磁盘I/O操作;采用第二种方式,虽然索引本身也占据一定的物理存储空间,但是在查询数据时,可以大大加快检索速度,避免大量不必要的磁盘I/O操作。
[0054]图1是根据一示例性实施例示出的一种处理增量索引合并失败的方法流程图,如图1所示,该处理增量索引合并失败的方法用于服务器端,包括以下步骤S11-S14:
[0055]在步骤Sll中,执行将增量索引合并到总索引的处理;
[0056]在步骤S12中,判断所述处理是否失败;
[0057]在步骤S13中,在所述处理失败时,重新执行所述处理;
[0058]在步骤S14中,当重新执行的所述处理失败时,重新创建所述增量索引。
[0059]在一个实施例中,当数据库中的增加新的数据时,索引也需要实时的做出相应的变更。将变更的索引数据存储在增量索引中,当该增量索引满足预设的条件的时候,尝试将该增量索引合并到总索引中,在合并的过程中是依此将增量索引中的信息写入总索引中的,在这个过程中,可能会出现据合并错误的情况。在没有监测工具来实时监测合并过程的情况下,只需要判断总索引是否完整且正确的接收了增量索引中的内容,即判断增量索引合并是否成功。在合并成功的情况下,开始下一轮的合并增量索引的过程,即根据新的数据生成新的增量索引,尝试将新的索引合并到总索引中;在合并失败的情况下,首先将总索引回滚到合并该增量索引之前的状态,然后重新合并该增量索引到总索引中。当增量索引合并到总索引的失败次数达到预设阈值时,不再重新执行增量索引合并到总索引的处理,根据生成原增量索引的信息创建一个新的增量索引。
[0060]本公开的实施例提供的技术方案可以包括以下有益效果:无需监测工具来实时监测增量索引与总索引合并的过程,就可以处理增量索引合并失败的问题,降低了系统资源的消耗的同时,提高了总索引更新的效率。
[0061]在一个实施例中,如图2所示,还包括如下步骤S21-S22:
[0062]在步骤S21中,在所述处理失败时,将所述总索引回滚到合并所述增量索引前的起始状态;
[006
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1