索引值数目的估算方法和装置以及电子设备
技术领域
本发明涉及数据库技术领域,尤其涉及一种索引值数目的估算方法和装置以及电子设备。
背景技术
在数据库中,各种数据以表的形式存储,为了便于检索,为表数据建立索引,并以索引树的形式存储。在索引树中,中间节点用于存储索引数据的路由信息(即,该中间节点所包含的一定范围的索引值的存储位置),叶子节点则用于存储真正的索引值(key值),在每个叶子节点中存储多个索引值。
在数据查询时,用户给定搜索区间,查询该搜索区间内符合查询条件的索引值的个数,需要读取搜索区间内的数据,以获取具体的索引值的个数。但是,当搜索区间较大时,通常无法通过读取所有的数据块来实现精确计算。因此,现有技术中,一般采用随机采样的方式进行估算,或者,根据unique key(唯一索引)的个数进行估算。
随机采样的方式是,在搜索区间覆盖的所有叶子节点(树形结构中,用于存储索引数据的节点)中,随机选取数个叶子节点,计算每个叶子节点中符合查询条件的索引值的个数,然后计算这些索引值个数的平均数,然后,根据该平均数估算所有叶子节点中符合查询条件的索引值的个数。
根据unique key个数进行估算的方式,是把unique key的个数平均分摊到从根节点(root)到叶子节点(leaf)路径上的每一级节点上,也就是说,计算每一级节点的权重,然后从中选取部分节点,并以此估算符合查询条件的索引值个数。
发明人在实现本发明的过程中,发现现有技术至少存在如下问题:针对随机采样方式,当数据分布不平衡(即,不同的叶子节点中符合查询条件的索引值个数的差别非常大)时,随机选取的叶子节点可能不能够确保其代表性(即,该叶子节点中的索引值个数为个例,并不能够反映一般情况),因此导致最终的估算结果不准确;而针对根据unique key个数进行估算的方式,若索引树的形状呈高瘦状,当某一节点包含的子节点的个数非常少时,则这该节点分摊到的权重则非常大,导致该节点的选取代价值很高,从而一般不会被选中,若具有代表性的节点由于权重非常大而未被选中,则也将导致最终的估算结果不准确。
发明内容
本发明实施例提供一种索引值数目的估算方法和装置以及电子设备,以解决现有技术中,通过选取部分节点来进行估算的方式中由于所选取的节点不合理,而导致最终的估算结果不准确的缺陷,以提高估算的准确性。
为达到上述目的,本发明实施例提供了一种索引值数目的估算方法,包括:
获取用户输入的搜索区间及查询条件;
根据预先创建的索引数据的统计信息,在所述搜索区间覆盖的节点中选取样本节点;
获取所述样本节点中符合所述查询条件的索引值数目;
根据所述样本节点的索引值数目,估算符合所述查询条件的总的索引值数目。
本发明实施例还提供了一种索引值数目的估算装置,包括:
第一获取模块,用于获取用户输入的搜索区间及查询条件;
样本节点选取模块,用于根据预先创建的索引数据的统计信息,在所述搜索区间覆盖的节点中选取样本节点;
第二获取模块,用于获取所述样本节点中符合所述查询条件的索引值数目;
估算模块,用于根据所述样本节点的索引值数目,估算符合所述查询条件的总的索引值数目。
本发明实施例还提供一种电子设备,包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,以用于:
获取用户输入的搜索区间及查询条件;
根据预先创建的索引数据的统计信息,在所述搜索区间覆盖的节点中选取样本节点;
获取所述样本节点中符合所述查询条件的索引值数目;
根据所述样本节点的索引值数目,估算符合所述查询条件的总的索引值数目。
本发明实施例提供的索引值数目的估算方法和装置以及电子设备,通过预先创建的统计信息来选取具有代表性的样本节点,根据样本节点中符合查询条件的索引值数目来估算总的索引值数目,提高了估算的准确性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例提供的业务系统的系统框图;
图2为本发明提供的索引值数目的估算方法一个实施例的流程图;
图3为本发明提供的索引值数目的估算方法另一个实施例的流程图;
图4为本发明提供的索引值数目的估算方法又一个实施例的流程图;
图5为本发明提供的索引值数目的估算装置一个实施例的结构示意图;
图6为本发明提供的索引值数目的估算装置另一个实施例的结构示意图;
图7为本发明提供的电子设备实施例的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
针对现有技术中,在有些情况下索引值的数目估算不够准确的问题,特别是针对通过选取部分节点来进行估算的方式中,由于所选取的节点不合理(不具有代表性)而导致最终的估算结果不准确的问题。本申请提出了一种改进的索引值数目估算方法,其主要原理是:预先为索引数据创建统计信息,在数据查询时,根据预先创建的统计信息选取具有代表性的样本节点(即,选取索引值个数能够反映大多数节点的一般情况的节点),以提供参考或修正,从而进一步估算总的索引值数目。针对现有技术中对样本节点的选取,无论是采用随机采样的方式进行选取,还是根据unique key的方式进行选取,均能提供参考以选取出具有代表性的样本节点,从而提高估算的准确性。
本发明实施例提供的方法可应用于任何具有数据处理功能的业务系统。图1为本发明实施例提供的业务系统的系统框图,图1所示的结构仅仅是本发明的技术方案可以应用的业务系统的示例之一。如图1所示,业务系统中包括估算装置。该装置包括:第一获取模块、样本节点选取模块、第二获取模块和估算模块,可以用来执行下述图2、图3和图4所示的处理流程。在该业务系统中,当用户输入的搜索区间及查询条件后,首先,根据预先创建的索引数据的统计信息,在搜索区间覆盖的节点中选取样本节点,并获取样本节点中符合查询条件的索引值数目,然后,根据样本节点的索引值数目,估算符合查询条件的总的索引值数目,从而提高估算的准确性。
上述实施例是对本发明实施例的技术原理和示例性的应用框架的说明,下面通过多个实施例来进一步对本发明实施例具体技术方案进行详细描述。
实施例一
图2为本发明提供的索引值数目的估算方法一个实施例的流程图,该方法的执行主体可以为上述业务系统,也可以为具有数据处理能力的功能的各种服务器设备,或集成在这些服务器设备上的装置或芯片。如图2所示,该索引值数目的估算方法包括如下步骤:
S201,获取用户输入的搜索区间及查询条件。
在本发明实施例中,当用户进行数据查询时,首先需要输入针对索引的搜索区间及查询条件。例如,用户需要查询某个索引在给定的搜索区间范围内符合一定条件的索引值(key值)的个数。因此,需要首先获取该搜索区间及查询条件。
S202,根据预先创建的索引数据的统计信息,在搜索区间覆盖的节点中选取样本节点。
然后,根据预先创建的索引数据的统计信息,在搜索区间所覆盖的节点中选取具有代表性的节点作为样本节点。在本发明实施例中,统计信息为对数据表的索引数据的分布进行统计而生成,可以在建立数据表时创建,也可以在建立数据表之后,用户进行数据查询之前创建。
本发明实施例中,具有代表性的节点是指,该节点中的索引值个数能够反映大多数节点的一般情况。而预先创建的统计信息可以为选取样本节点提供参考或修正。
S203,获取样本节点中符合查询条件的索引值数目。
在选取样本节点后,根据用户输入的查询条件,获取样本节点中符合查询条件的索引值的数目。
S204,根据样本节点的索引值数目,估算符合查询条件的总的索引值数目。
在获取到样本节点中的索引值数目后,根据样本节点的个数在搜索区间所覆盖的所有节点中所占的比例,估算符合查询条件的总的索引值数目。例如,可以计算所有样本节点中的索引值数目的平均数,然后,用该平均数乘以搜索区间所覆盖的所有节点的个数,以估算符合查询条件的总的索引值数目。
本发明实施例提供的索引值数目的估算方法,通过预先创建的统计信息来选取具有代表性的样本节点,根据样本节点中符合查询条件的索引值数目来估算总的索引值数目,提高了估算的准确性。
实施例二
图3为本发明提供的索引值数目的估算方法另一个实施例的流程图。如图3所示,在上述图2所示实施例的基础上,本实施例提供的索引值数目的估算方法还可以包括以下步骤:
S301,对索引数据的分布进行统计,生成统计信息。
在本发明实施例中,首先,对索引数据的数值分布进行统计,以生成统计信息,该统计信息中记录着存储结构中每个节点所管理的索引值范围(key区间)以及key区间内的索引值(key值)个数。该统计信息可以在建立数据表时创建,也可以在建立数据表之后,用户进行数据查询之前创建。
另外,在本发明的实施例中,统计信息可以以树形结构(stat tree)存储,以便于进行数据查询,提高查询效率。如果数据表包含多个索引,则同一索引的统计信息可以连续存储;每个索引的统计信息中,相同高度的子树的信息可以连续存储,并按照索引值升序的方式排列。
S302,获取用户输入的搜索区间及查询条件。
S303,根据预先创建的索引数据的统计信息,在搜索区间覆盖的节点中选取样本节点。
在本发明实施例中,步骤S302至S303与上述图2所示实施例中的步骤S201至S202相同,参见上述描述,在此不再赘述。
在本发明实施例中,还可以读取统计信息中的数据,以判断统计信息是否包含匹配查询条件所需要的统计数据。
S304,当统计信息不包含匹配查询条件所需要的统计数据时,访问用于存储索引数据的索引树,计算样本节点中符合查询条件的索引值数目。
具体地,当统计信息不包含匹配查询条件所需要的统计数据时,统计信息仅作为从索引节点中选取具有代表性的样本节点的参考,此时,仍需访问用于存储索引数据的索引树,以读取数据,计算样本节点中符合查询条件的索引值数目。
S305,根据样本节点的索引值数目,估算符合查询条件的总的索引值数目。
在本发明实施例中,步骤S305与上述图2所示实施例中的步骤S204相同,参见上述描述,在此不再赘述。
本发明实施例提供的索引值数目的估算方法,通过预先创建的统计信息来选取具有代表性的样本节点,然后,读取索引树中的数据来计算样本节点中符合查询条件的索引值数目,并根据样本节点中的索引值数目来估算总的索引值数目,从而提高了估算的准确性。
实施例三
图4为本发明提供的索引值数目的估算方法又一个实施例的流程图。如图4所示,在上述图2或图3所示实施例的基础上,本实施例提供的索引值数目的估算方法还可以包括以下步骤:
S401,对索引数据的分布进行统计,生成统计信息。
S402,获取用户输入的搜索区间及查询条件。
S403,根据预先创建的索引数据的统计信息,在搜索区间覆盖的节点中选取样本节点。
在本发明实施例中,步骤S401至S403与上述图3所示实施例中的步骤S301至S303相同,参见上述描述,在此不再赘述。
在本发明实施例中,还可以读取统计信息中的数据,以判断统计信息是否包含匹配查询条件所需要的统计数据。
S404,当统计信息包含匹配查询条件所需要的统计数据时,根据统计数据,计算样本节点中符合查询条件的索引值数目。
具体地,当统计信息包含匹配查询条件所需要的统计数据时,可以直接使用该统计数据计算样本节点中符合查询条件的索引值数目。例如,用户在进行数据查询时输入的查询条件为查询某索引在指定搜索区间内的索引值为偶数的数目,如果,统计信息中恰好包含了该索引的索引值为偶数的统计数据,那么可以直接根据统计数据计算样本节点中符合查询条件的索引值数目,而无需读取索引树中的数据,从而大大减少了磁盘IO。
S405,根据样本节点的索引值数目,估算符合查询条件的总的索引值数目。
在本发明实施例中,步骤S405与上述图2所示实施例中的步骤S204相同,参见上述描述,在此不再赘述。
S406,将索引值数目的估算结果,写入统计信息。
在本发明的各个实施例中,当估算出符合查询条件的索引值数目后,还可以将估算结果写入到统计信息中,以修改统计信息,在后续的数据查询时,实现更加的参考效果。
本发明实施例提供的索引值数目的估算方法,通过预先创建的统计信息来选取具有代表性的样本节点,并根据统计信息中的统计数据直接计算样本节点中符合查询条件的索引值数目,然后,根据样本节点中的索引值数目来估算总的索引值数目,提高了估算的准确性。
实施例四
图5为本发明提供的索引值数目的估算装置一个实施例的结构示意图,可用于执行如图2所示的方法步骤。如图5所示,该装置可以包括:第一获取模块51、样本节点选取模块52、第二获取模块53和估算模块54。
其中,第一获取模块51用于获取用户输入的搜索区间及查询条件;样本节点选取模块52用于根据预先创建的索引数据的统计信息,在搜索区间覆盖的节点中选取样本节点;第二获取模块53用于获取样本节点中符合查询条件的索引值数目;估算模块54用于根据样本节点的索引值数目,估算符合查询条件的总的索引值数目。
在本发明实施例中,当用户进行数据查询时,首先需要输入针对索引的搜索区间及查询条件。例如,用户需要查询某个索引在给定的搜索区间范围内符合一定条件的索引值(key值)的个数。因此,需要首先由第一获取模块51获取该搜索区间及查询条件。
然后,样本节点选取模块52根据预先创建的索引数据的统计信息,在搜索区间所覆盖的节点中选取具有代表性的节点作为样本节点。在本发明实施例中,统计信息为对数据表的索引数据的分布进行统计而生成,可以在建立数据表时创建,也可以在建立数据表之后,用户进行数据查询之前创建。
本发明实施例中,具有代表性的节点是指,该节点中的索引值个数能够反映大多数节点的一般情况。而预先创建的统计信息可以为选取样本节点提供参考或修正。
在样本节点选取模块52选取样本节点后,第二获取模块53根据用户输入的查询条件,获取样本节点中符合查询条件的索引值的数目。
在第二获取模块53获取到样本节点中的索引值数目后,估算模块54根据样本节点的个数在搜索区间所覆盖的所有节点中所占的比例,估算符合查询条件的总的索引值数目。例如,可以计算所有样本节点中的索引值数目的平均数,然后,用该平均数乘以搜索区间所覆盖的所有节点的个数,以估算符合查询条件的总的索引值数目。
本发明实施例提供的索引值数目的估算装置,通过预先创建的统计信息来选取具有代表性的样本节点,根据样本节点中符合查询条件的索引值数目来估算总的索引值数目,提高了估算的准确性。
实施例五
图6为本发明提供的索引值数目的估算装置另一个实施例的结构示意图,可以用于执行如图3或图4所示的方法步骤。如图6所示,在上述图5所示实施例的基础上,本发明实施例提供的索引值数目的估算装置还可以包括:统计模块61。
该统计模块61可以用于在第一获取模块51获取用户输入的搜索区间及查询条件之前,对索引数据的分布进行统计,生成统计信息。
在本发明实施例中,首先,由统计模块61对索引数据的数值分布进行统计,以生成统计信息,该统计信息中记录着存储结构中每个节点所管理的索引值范围(key区间)以及key区间内的索引值(key值)个数。该统计信息可以在建立数据表时创建,也可以在建立数据表之后,用户进行数据查询之前创建。
另外,在本发明的实施例中,统计模块61生成的统计信息可以以树形结构(stattree)存储,以便于进行数据查询,提高查询效率。如果数据表包含多个索引,则同一索引的统计信息可以连续存储;每个索引的统计信息中,相同高度的子树的信息可以连续存储,并按照索引值升序的方式排列。
进一步地,本发明实施例提供的索引值数目的估算装置还可以包括:判断模块62。该判断模块62可以用于在第二获取模块53获取样本节点中符合查询条件的索引值数目之前,判断统计信息是否包含匹配查询条件所需要的统计数据。
更进一步地,第二获取模块53可以包括:第一获取单元531。该第一获取单元531可以用于当判断模块62判断出统计信息不包含匹配查询条件所需要的统计数据时,访问用于存储索引数据的索引树,计算样本节点中符合查询条件的索引值数目。
第二获取模块53还可以包括:第二获取单元532。该第二获取单元532可以用于当判断模块62判断出统计信息包含匹配查询条件所需要的统计数据时,根据该统计数据,计算样本节点中符合查询条件的索引值数目。
在本发明实施例中,当判断模块62判断出统计信息不包含匹配查询条件所需要的统计数据时,统计信息仅作为从索引节点中选取具有代表性的样本节点的参考,此时,由第一获取单元531访问用于存储索引数据的索引树,以读取数据,计算样本节点中符合查询条件的索引值数目。当判断模块62判断出统计信息包含匹配查询条件所需要的统计数据时,第二获取单元532可以直接使用该统计数据计算样本节点中符合查询条件的索引值数目。例如,用户在进行数据查询时输入的查询条件为查询某索引在指定搜索区间内的索引值为偶数的数目,如果,统计信息中恰好包含了该索引的索引值为偶数的统计数据,那么第二获取单元532可以直接根据统计数据计算样本节点中符合查询条件的索引值数目,而无需读取索引树中的数据,从而大大减少了磁盘IO。
另外,本发明实施例提供的索引值数目的估算装置还可以包括:修正模块63。该修正模块63可以用于将估算模块54估算出的索引值数目的估算结果,写入统计信息。
在本发明实施例中,当估算模块54估算出符合查询条件的索引值数目后,修正模块63可以将估算结果写入到统计信息中,以修改统计信息,在后续的数据查询时,实现更加的参考效果。
本发明实施例提供的索引值数目的估算装置,通过预先创建的统计信息来选取具有代表性的样本节点,根据统计信息中存储的数据内容的不同,可以读取索引树中的数据来计算样本节点中符合查询条件的索引值数目,也可以根据统计信息中的统计数据直接计算样本节点中符合查询条件的索引值数目,然后,根据样本节点中的索引值数目来估算总的索引值数目,从而提高了估算的准确性。
实施例六
以上描述了索引值数目的估算装置的内部功能和结构,该装置可实现为一种电子设备。图7为本发明提供的电子设备实施例的结构示意图。如图7所示,该电子设备包括存储器71和处理器72。
存储器71,用于存储程序。除上述程序之外,存储器71还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器71可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器72,与存储器71耦合,执行存储器71所存储的程序,以用于:
获取用户输入的搜索区间及查询条件;
根据预先创建的索引数据的统计信息,在搜索区间覆盖的节点中选取样本节点;
获取样本节点中符合查询条件的索引值数目;
根据样本节点的索引值数目,估算符合查询条件的总的索引值数目。
进一步,如图7所示,电子设备还可以包括:通信组件73、电源组件74、音频组件75、显示器76等其它组件。图7中仅示意性给出部分组件,并不意味着电子设备只包括图7所示组件。
通信组件73被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件73经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件73还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
电源组件74,为电子设备的各种组件提供电力。电源组件74可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。
音频组件75被配置为输出和/或输入音频信号。例如,音频组件75包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器71或经由通信组件73发送。在一些实施例中,音频组件75还包括一个扬声器,用于输出音频信号。
显示器76包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。