具体实施方式
为了提供查询优化器有益的统计信息,统计被更新。然而,更新统计导致数据库能力和处理资源耗尽。在某些情况下,因为资源被提供给更新统计,因此这种更新阻碍了其他操作的性能。
本文描述的原理包括在数据库的数据分布已被确定在统计上保持不变时,用于利用较少工作且基于样本估计统计更新统计的机制。该机制确定数据库中的什么数据已经改变的足够以值得更新统计,而不是仅基于样本估计统计。这些原理包括用于增量式更新数据库的方法。这种方法包括对数据库中的数据库列的行进行采样以生成第一样本,随后在生成第一样本之后,对数据库列的修改的行的子集进行采样以生成第二样本,基于第一样本和第二样本确定数据库列是否发生分布变化,并且响应于确定存在分布变化而更新关于数据库列的数据库统计。修改的行可包括删除的行、插入的行、更新的行或其组合。
在下面的描述中,出于解释的目的,为了提供本系统和方法的全面理解,提出了许多具体细节。然而,对本领域技术人员来说显而易见的是,可在没有这些具体细节的情况下实践本装置、提供和方法。说明书中提及的“示例”或类似语言意味着描述的特定的特征、结构或特性被包括在至少一个示例中,但不必在其他示例中。
图1是根据本文描述的原理的网络上的数据库(100)的示例的示意图。在此示例中,客户设备(104)与网络(102)通信,网络(102)通信与数据库(100)通信。
客户设备(104)可以是用户使用来与数据库(100)通信的任何适当的设备。客户设备(104)笔记本电脑、个人计算机、台式机、电话、电子输入板、电子设备、任何类型的客户端设备或其组合。
用户可以在客户设备(104)的监视器上显示的搜索查询域中输入搜索查询。基于搜索查询术语,查询计划生成器生成多个查询计划,多个查询计划可用于搜索数据库(100)以从数据库的内容中找到适当的搜索结果。查询计划优化器选择查询计划优化器确定将用最短的时间搜索数据库内容的多个查询计划中的一个。查询计划优化器至少部分地基于存储在数据库(100)中和描述数据库内容的统计做出决定以选择查询计划。例如,数据库(100)可存储直方图、行计数、唯一条目计数、其它统计或其组合,以描述数据库(100)中的列信息。此统计使查询计划优化器免于重新计算关于列中的数据的摘要信息。
在数据库的数据存在很小的变换时,关于数据库列的统计可基于样本被估计,以避免数据可使用大量的资源来更新大量的统计。数据库(100)包括更新系统(106),更新系统(106)在适当的时候更新描述数据库列的至少之一的统计的至少之一。更新统计的适当时间是在统计分布具有统计改变时。
更新系统(106)可随时间的变化让数据的样本进入数据库的列,并且将样本相互比较。如果样本展现大的统计差异,则更新系统(106)可确定更新统计是适当的,而不是基于样本估计统计。进一步,更新系统(106)还可确定用于总结样本之间的大的统计差异的置信度的水平。预定的置信度阈值可包括95%置信度或在更新系统将使统计之一更新前被超越的一些其他置信度水平。
虽然此示例已经参照数据库、查询计划生成器、查询计划优化器、更新系统以及其它部件的具体位置进行了描述,但是这些部件可以位于根据本文描述的原理的任何适当的位置。例如,更细系统可以位于网络部件而不是数据库上,或位于客户设备上。另外,查询计划生成器和查询计划优化器也可以位于网络部件而不是数据库上,或位于客户设备上。
图2是根据本文描述的原理的数据库列(202)的样本(200)的示例的示意图。在此示例中,数据库列(202)存储信息的多个行(204)。数据库可包括额外的信息列。数据库列的行(204)可包括任何适当数量的行。在某些示例中,数据库列(202)可包括从仅几行到数亿行。
数据库还包括与行关联的统计,例如行的数量、唯一条目技术、其他统计或其组合。这些统计可以与查询计划优化器一起使用,该查询计划优化器选择将占用最短时间来执行的查询计划。
通过计算唯一条目计数、一系列列值上的不相交区间的行计数的值对的更新统计表来执行直方图收集。更新统计表是耗时操作,并且使用来自数据库的存储器、中央处理单元和输入/输出的大量资源,因为其使用“分组依据”(“group-by”)操作以及“分类”(“sort”)操作以计算列的唯一条目计数。数据库管理系统利用抽样以便减少该操作的成本。相应地,这减少了输入的大小并且改善了相应时间。
更新系统在第一天从数据库列取出行的样本(200)。样本(200)可以是来自数据库列(202)的行的随机样本。取出样本(200)可包括将选中行的值拷贝到同一列中。在某些示例中,样本包括来自数据库列(202)的所有行的至少1%。例如,如果数据库列具有成百万行,则样本表将包括至少上万行,该至少上万行包含从数据库列(202)的选中行拷贝的值。在一些示例中,样本包括数据库列的行的多于1%。
更新系统可基于样本(200)计算描述数据库列的至少一些统计。例如,更新系统可基于样本估计唯一条目计数统计。
虽然此示例已经参照数据库列中行的具体数量和样本的大小进行了描述,但是可根据本文描述的原理使用任何适当数量的行和样本大小。进一步,更新系统可取出多个数据库列的样本并基于它们相应的样本估计抽样的数据库列的每一个的统计。
图3是根据本文描述的原理的唯一条目计数估计器(300)的示例的示意图。在此示例中,更新系统的唯一条目计数估计器(300)基于样本(200,图2)估计唯一条目计数。唯一条目计数表示样本(200,图2)中的唯一值。例如,样本(200,图2)中的三行包括值11。因此,11构成一个唯一条目计数。一行包括值342。因此,342构成一个唯一条目计数。两行包括值654。因此,654构成一个唯一条目计数。进一步,一行包括值56。因此,56构成一个唯一条目计数。结果,在图3的示例中,唯一条目计数值是4。
图4A是根据本文描述的原理的布隆(bloom)过滤器(400)的示例的示意图。在此示例中,布隆过滤器(400)是包括表示样本(200,图2)的行的寄存器位图(402)的数据结构。寄存器中的每一个表示来自样本值的二进制值。如果在样本的行中存在大于0的值,则相应的布隆过滤器寄存器将存储值1。另一方面,如果样本行具有0值,那么相应的布隆过滤器寄存器将存储0。除了位图(402),布隆过滤器还包括表示来自样本的唯一条目计数的计数器(404)。例如,样本包括具有唯一值11的三个条目计数。因此,计数器之一保持值3。另外,样本包括654的两个条目计数,因此,另一个计数器保持值2。进一步,样本还包括一个唯一值342和56,因此,其他两个计数器(404)值1以表示这些唯一条目计数。布隆过滤器的计数器(404)表示样本的数据分布。
图4B是根据本文描述的原理的直方图(450)的示例的示意图。在此示例中,直方图(405)也表示样本的数据分布。样本的数据本分成值范围。第一值范围(451)覆盖从0到50,第二值范围(452)覆盖从大于50到300,第三值范围(453)覆盖从大于300到100。每个值范围(451、452、453)的第一列(454)表示样本中的总行数,其包括适当的值范围内的值。每个值范围(451、452、453)的第二列(455)表示适当的值范围内的那些行的唯一条目计数。在此示例中,更新系统基于直方图的分布,参考直方图(450)以确定数据库列的分布。直方图的分布表示样本的分布。
图5是根据本文描述的原理的来自数据库列(504)的样本(502)的删除行(500)的示例的示意图。在此示例中,随时间的流逝抽样第一样本。例如,第一样本可以在第一天采集,并且可在一小时、几个小时、一天、几天、一周、、其他时间段或其组合之后分析第一样本的改变。在时间流逝期间,当数据库列(504)中的行(500)被删除或额外行被插入时,数据库列(504)经历改变。这种改变可在更新过程在数据库列(504)上执行时发生。另外,这种改变可在用户人工插入或删除数据库列中的行(500)时产生。被删除的图5的示例中的每一行被用箭头(506)标记。数据库列(504)的行(508)被用插入行替代,所以,因为第一样本(502)被采集,尽管行(508)被删除,但行(508)出现改变的值。
对应于数据库列(504)的删除的行的已经包括在样本(502)中的行的每一个被从样本(502)删除。在此示例中,样本(502)的行(512、514、516)被从样本(502)中删除以反映数据库列(504)中的改变。
图6是根据本文描述的原理的添加插入(600)到的数据库列(604)的样本(602)的示例的示意图。在此示例中,仅采集数据库列(604)删除的行的随机样本。行的值在样本表中表示。在此示例中,样本(602)包括三行,其中三行中的两行具有大于0的值。具有大于0的值的行的每一个被插入到之前被修改以反映数据库列(604)的删除行的样本中。在此示例中,仅样本行(606)被插入到样本中。随着样本现在反映从样本原始采集到删除和插入的发生,因此样本现在分类为第二样本(608)。
图7是根据本文描述的原理的布隆过滤器(700)的示例的示意图。在此示例中,在来自第二样本(608,图6)的行计数的值大于0时,布隆过滤器(700)的位图(702)的寄存器保持“1”。因为样本中的行中的一个被删除,因此其对应的寄存器保持“0”值。计数器(704)也表示第二样本(608,图6)中发现的唯一条目计数。
更新系统比较布隆过滤器的分布以确定分布差异的存在。例如,更新系统可比较来自表示第二样本(608,图6)的布隆过滤器(700,图7)的计数器的唯一条目计数的分布与表示第一样本(200,图2)的布隆过滤器(400,图4A)的计数器的唯一条目计数的分布。此处,分布是不同的,因为布隆过滤器(400,图4A)有不同的唯一条目计数。响应于发现分布差异,例如唯一条目计数的改变,更新系统确定对第一样本(200,图2)估计的统计被更新。在其他示例中,布隆过滤器的比较未产生统计分布变化,则更新系统确定基于样本继续估计统计。在某些示例中,更新系统使用来自布隆过滤器的位图的行计数来确定是否发生分布改变。
图8是根据本文描述的原理的直方图(800)的示例的示意图。在此示例中,直方图(800)表示更新的样本的分布。更新系统比较图4B(450,图4B)中的直方图的分布与图8中直方图(800)的分布。更新系统可比较唯一计数条目分布、行计数的分布、每直方图区间的各频率的频率、整个直方图统计、直方图中描述的其他统计或其组合。如果选择的统计的分布中存在变化,更新系统确定更新数据库列的统计。
虽然上面已经参照使用布隆过滤器来确定第一样本和第二样本之间的分布变化描述了各示例,但是可使用任何适当的机制来确定分布变化。例如,概要表可用于替代布隆过滤器或与布隆过滤器组合来确定样本之间的分布变化。在某些示例中,其他机制用于替代概要表和布隆过滤器或与概要表和布隆过滤器组合。另外,虽然上面已经参照不同的样本大小、删除行的具体数量以及插入行的具体数量描述了各示例,但是可根据本文描述的原理使用其他任何适当的样本大小、删除行的数量或插入行的数量。
图9是根据本文描述的原理用于增量式地更新数据库统计的方法的示例的示意图。在此示例中,方法(900)包括对数据库中的数据库列的行进行采样(902)以生成第一样本,在生成第一样本后,对数据库的修改的行的子集进行采样(904)以生成第二样本,基于第一样本和第二样本确定(906)数据库列是否发生分布变化,以及响应于确定存在分布变化而更新关于数据库列的数据库统计。修改的行可包括删除的行、插入的行、更新的行或其组合。更新可被表示为其后伴随新的值的插入的旧的值的删除。
该方法可包括具有总体表T,其中表T是数据库列。样本表S表示样本,其中S满足条件基数|S|可以是至少min(1,000,000,|T|的1%)。在第一天,表T被表示为T1且在第一天样本表被表示为S1。唯一条目计数被用S1估计。在第二天,T1被更新产生表T2,其中T2=T1-d1+i1,其中d1表示总体中的删除且i1表示总体中的插入。相应地,S2=S1-ds1+is1,其中ds1表示样本表中的删除且is1表示样本表中的插入。在第i天,样本表被由Si=Si-1-dsi+isi,i=2,3,…,n,给定。因此,Si反映第i天数据的分布。
在第一天,更新系统建立表S1,且基于表S1估计唯一条目计数。进一步,更新系统为S1(每列一个布隆过滤器)的行建立计数布隆过滤器。针对具有高频率的值,计数器可溢出。此外,更新系统可为这些值保持独立的概要表。更新系统在计数布隆过滤器和概要表上存留S1。
在第二天,更新系统从S1删除行。这些行被表示为ds1。更新系统还从表T采集行的随机样本。该随机样本是is1,其被添加到S1以生成S2。随机样本由T1中避免删除的样本的观察数据和插入的观察数据的样本组成。在第(i-1)天和第i天之间发生的插入的数量可通过更新系统跟踪和存储。因此,来自表T1的随机样本提供对插入的访问。如果更新系统跟踪更新之间的插入部分,则插入样本可被按剩余的数据分布的比例绘制。
此外,在第二天,针对ds1的每一行,更新系统减去布隆过滤器和概要表中的相应的计数器至较低的值。同样地,针对is1的每一行,更新系统增加布隆过滤器和概要表中的相应的计数器至较高的值。计数布隆过滤器为频率提供新的值并且概要表提供斜交元件的新列表。更新系统还在计数布隆过滤器和概要表上存留S2。
更新系统提出假设的推理测试,以增量式地更新第i天的唯一条目计数。零假设为未改变偏斜统计。如果零假设被拒绝,使得第i-1天和第i天之间斜交中存在改变,那么更新统计确定从数据库列重新更新统计。另一方面,如果零假设不被拒绝,其建议数据分布未改变,则更新系统基于增量数据集(其是来自超级集的样本)更新唯一条目计数。更确切地,使{x11,x12,…,x1n}是从Si-1的列X得到的随机样本,并且{x21,x22,…,x2n}是从Si的列X得到的随机样本。基于随机样本,更新系统测试来自两个随机样本的偏斜度的差异。如果偏斜度中不存在95%的置信度水平的统计差异,则即便一系列的删除和插入,数据分布也将保持不变。在该示例中,更新系统基于从Si-1到Si的增量数据(第i-1天和第i天之间的变化)来增量式地估计唯一条目计数。第i-1天的增量数据不是Si,但样本从超级集(Ti,2)产生。
增量式地更新统计可包括多个条件。如果行计数与唯一条目计数的比例在增量样本中的更新循环上保持不变,那么唯一条目计数可线性地伸缩以找到Si中的唯一条目计数。进一步,如果存在从Si-1到Si的偏斜度的变化,那么更新系统可在样本Si上启动具有线性加权组合估计器的唯一条目数。另外,如果增量样本非常大,即比|T|的0.1%大很多,则可根据本文描述的原理使用布隆过滤器实现方式。
在某些示例中,可将列X的值分为多个直方图的区间,并且该可用于增量式地估计唯一条目数计数的方案可应用于单个区间。例如,直方图区间可以包括200个区间,所以估计器仅与样本大小的1/200一起工作。可以通过统计测试确定置信度水平。可以使用直方图、布隆过滤器、另一机制或其组合执行测试。可以使用行计数、唯一条目计数、其他统计数据或其组合确定置信度水平。统计测试可以包括参数测试、非参数测试、其他类型的测试或其组合。
比较包括在更新(插入和删除)前的时间段(t-1)采样,以及在更新后的时间段(t)采样。考虑到在连续的两个时间段中的随机样本Si-1和andSi,使得fi-1和fi表示如下定义的频率:正好出现了“i”次的观测数据(可为认为是“类”)的跟踪的频率的量。唯一条目计数计算与频率(f)的分布相关。量的变化引起分布中出现偏斜度。置信引擎估计偏斜度变化程度,以确定是否批准重新计算唯一条目计数。在置信引擎的实现方式中,做出了下列假设:1)在时段ti-1,ti,中发生删除和插入;2)采样的数据为高斯分布;3)提取独立的样本。
针对参数的测试,使x11,x21,....,xn1是来自大小为n的正态分布的随机样本,并且是来自大小为m的正态分布的随机样本,其中和是未知的,来自时段tt-1,tt。还假设样本是独立的。
提出假设H0:μ1=μ2versusH1:μ1≠μ2。测试可被修改以测试是否H0:μ1-μ2=0versusH1:μ1-μ2≠0。由于总体方差是未知的,我们可以通过他们的样本替换他们估计和可以使用下列公式计算样本方差:
用于测试假设的逻辑统计为由给定的统计平均值之差。平均值之差的方差是:
假设总体方差是相向等,即样本方差被合并以产生对总体方差的综合估计。 方差σ2通过综合样本方差估计:
测试统计被给出为:
两个样本的t–测试适用于小样本大小。在总体方差与相等时,可使用t-统计是适当的。该假设的验证涉及执行方差齐性检验测试。如果两个总体的方差是不相等的,则修改t–测试。该测试也被公认为贝伦斯-费舍尔(Behrens-Fisher)测试。t–测试对于比较独立的样本也是有效的。
成对的t–测试是用于比较两个不同时间分布变化的统计测试,假设样本在这两个时段相关。测试典型地包括获采样本变化之前和之后时段对象上的测量结果。假设可以被表达为H0:μb=μaversusH1:μb≠μa。在一些示例中,测试可以被重写为H0:μD=0versusH1:μD≠0,其中μD=μb-μa。用于测试假设的测试统计是:
其中并且sD是之前的统计平均值和之后的统计平均值之间的差值的标准偏差。由于之前和之后的平均值是相关的,因此
两个正相关的随机变量的差的方差小于两个独立的随机变量的差的方差,并且类似的,如果随机变量是负相关的,那么差的方差将趋向于更大。因此成对差的t-统计调整测量结果之间的相关性。为了确定与频率相关的样本之间的统计显著性,将计算的t-统计数据的绝对值与tn-1,α/2给出的理论t-分布的百分点相比较。如果t≤-tα/2或者t≥tα/2,则指示两面测试的变化存在巨大的差异。对于单面测试,可适当的调整否定区域以得出相关推论。
可替代地,不依赖于采样数据的正常假设的非参数测试可被称为柯尔莫哥洛夫-斯米尔诺夫测试(Kolmogorov-Smirnov,K-S测试),其用来确定两个数据集是否存在显著差异。KS测试具有关于数据分布不用进行假设的优点。两个样本的KS测试是非参数假设测试,其可用来估计在每个数据集的数据范围内两个样本数据向量Si-1和Si分布的累积分布函数(CDF)的差异。其中数据是数据集的元组。
两面测试使用了两个数据向量分布的CDF之间的最大绝对差值。其中测试统计为
其中为x1值小于或等于x的比例。为x2值小于或等于x(分布中的一个元组)的比例。测试统计数据D*用于计算样本Si-1和Si差异显著性的置信度水平。上面描述的这些测试可以被很容易的应用到考虑中的直方图区间的行计数(RC)。
虽然已经参照具体测试对确定置信度水平进行了描述,但是根据本文描述的原理,可以使用任何适当的测试。进一步的,虽然已经参照使用具体的统计对确定置信度水平进行了描述,但是可以使用任何适当的统计。
图10是根据本文描述的原理的更新系统(1000)的示例的示意图。更新系统(1000)包括采样引擎(1002)、确定引擎(1004)以及更新引擎(1006)。在此示例中,所述更新系统(1000)进一步包括置信度引擎(1008)、布隆过滤器引擎(1010),减量引擎(1012)以及增量引擎(1014)。引擎(1002、1004、1006、1008、1010、1012、1014)指的是执行指定功能的硬件和程序指令组合。每个引擎(1002、1004、1006、1008、1010、1012、1014)可以包括处理器和内存。所述程序指令存储在存储器中,并且使处理器执行引擎的指定功能。
采样引擎(1002)对数据库列进行采样,或者对数据库列的一部分进行采样,以生成样本。所述确定引擎(1004)确定在不同的时间采样的样本之间是否发生了统计分布变化。如果确定引擎(1004)确定存在分布变化,则更新引擎(1006)更新关于数据库列的至少一个统计,例如唯一条目计数。否则,所述更新系统(1000)将基于最新的样本估计统计数据。
更新系统具有分布变化存在的确定,置信度引擎(1008)确定置信度水平。只有在置信度水平高于预定阈值时的情况下,例如95%的置信度水平,更新引擎(1006)才可更新统计。
布隆过滤器引擎(1010)基于最初的样本建立布隆过滤器并且填充布隆过滤器的寄存器。减量引擎(1012)减去布隆过滤器的计数器,以反映数据库列的删除的行。增量引擎(1014)增加对应于样本中的插入的行的计数器。
图11是根据本文描述的原理的更新系统(1100)的示例的示意图。在此示例中,所述更新系统(1100)包括与存储器资源(1104)通信的处理资源(1102)。处理资源(1102)包括至少一个处理器,以及用于处理程序化指令的其他资源。存储器资源(1104)通常表示能够存储数据(例如更新系统(1100)使用的程序化指令或数据结构)的任何存储器。存储在存储器资源(1104)中示出的程序化指令包括列采样器(1106)、唯一条目计数估计器(1108)、布隆过滤器生成器(1110)、布隆过滤器填充器(1112)、删除行确定器(1114)、修改的行采样器(1116)、插入跟踪器(1118)、布隆过滤器减量器(1120)、布隆过滤器增量器(1122)、偏斜度比较器(1124)、唯一条目计数更新器(1126)以及搜索查询计划优化器(1128)。
存储器资源(1104)包括计算机可读存储介质,计算机可读存储介质包含使任务由处理资源(1102)执行的计算机可读程序代码。计算机可读存储介质可以是有形的和/或非瞬态的存储介质。计算机可读存储介质可以是非传输存储介质的任何适当的存储介质。计算机可读存储介质类型的非穷尽列表包括:非易失性存储器、易失性存储器、随机存取存储器、基于忆阻器的存储器、只写存储器、快闪存储器、电可擦除可编程只读存储器、磁存储介质、其它类型的存储器或其组合。
列采样器(1106)表示程序化指令,在执行时,使处理资源(1102)对数据库的列进行采样。唯一条目计数估计器(1108)表示程序化指令,在执行时,使处理资源(1102)基于用列采样器(1106)提取的样本估计唯一条目计数。
布隆过滤器生成器(1110)表示程序化指令,在执行时,使处理资源(1102)建立布隆过滤器。布隆过滤器填充器(1112)表示程序化指令,在执行时,使处理资源(1102)基于样本的总数,填充布隆过滤器的寄存器。删除行确定器(1114)表示程序化指令,在执行时,使处理资源(1102)确定反映在样本中的从数据库列中删除的行的数量。修改行采样器(1116)表示程序化指令,在执行时,使处理资源(1102)对数据库列中修改的行进行采样。修改的行可包括删除的行,插入的行,更新的行或其组合。插入跟踪器(1118)表示程序化指令,在执行时,使处理资源(1102)跟踪数据库列中的插入。
布隆过滤器减量器(1120)表示程序化指令,在执行时,使处理资源(1102)减去与样本中删除的行对应的布隆过滤器的计数器。布隆过滤器增量器(1122)表示程序化指令,在执行时,使处理资源(1102)增加与样本中插入的行对应的布隆过滤器的计数器。
偏斜度比较(1124)表示程序化指令,在执行时,使处理资源(1102)比较不同样本之间的分布的偏斜度。唯一条目计数更新器(1126)表示程序化指令,在执行时,如果偏斜度比较(1124)基于布隆过滤器和/或直方图的唯一计数确定样本中存在统计分布变化,则使处理资源(1102)从数据库列更新唯一条目计数。否则,估计唯一条目数(1108)会基于样本继续估计所述唯一条目数。搜索查询计划优化器(1128)表示程序化指令,在执行时,使处理资源(1102)基于最新的唯一条目计数选择查询计划。
进一步,存储器资源(1104)可以是安装包的一部分。响应于安装该安装包,存储器资源(1104)的程序化指令可以从安装包的源下载,例如便携式介质、服务器、远程网络位置、其它位置或其组合。兼容本发明描述的原理的便携式存储介质包括DVD、CD、闪存、便携式磁盘、磁盘、光盘、其它形式的便携式存储器或其组合。在其它例子中,程序指令已被安装。此处,存储器资源可以包括集成的存储器,例如硬盘驱动器、固态硬盘驱动器等等。
在一些例子中,所述处理资源(1102)和存储器资源(1104)可以位于同一的物理不见,例如服务器或网络部件。存储器资源(1104)可以是物理部件的主存储器、高速缓存、寄存器、非易失性存储器或物理部件的存储器结构的其他部分。可替代地,存储器资源(1104)可以通过网络与处理资源(1102)通信。进一步,当程序化指令位于本地时,数据结构,例如库且可以通过网络连接从远程位置访问。因此,更新系统(1100)可以在用户设备、服务器、服务器集合或其组合上实现。
图11的更新系统(1100)可以是通用计算机的一部分。然而,在可替代的示例中,更新系统(1100)可以是专用集成电路的一部分。
图12是根据本文描述的原理的增量式地更新数据库统计的过程的流程图(1200)的示例的示意图。在此示例中,过程包括:在第一天,对数据库列进行采样(1202)以生成第一样本,并且基于第一样本估计(1204)唯一条目计数。过程还包括基于第一样本填充(1206)布隆过滤器计数器且记录布隆过滤器计数器中的唯一条目计数。过程进一步包括:修改(1208)行,例如删除、插入或更新行,在第二天,自第一样本生成后,在从数据库列删除的第一样本中,在第二天对数据库列的修改的行采样(1210),以定位修改行中的插入。由于样本中的删除行,与较低频率对应的布隆过滤器中的计数器被减去(1212)。同样地,由插入行引起的与增加的频率对应的计数器被增加(1214)到较高的值。
过程还包括确定(1216)表示不同样本的布隆过滤器之间是否存在统计分布变化。如果确定不存在分布变化,则过程估计(1218)样本上的列的唯一条目计数。另一方面,如果确定存在分布变化,则过程完全更新(1220)数据库列中的唯一条目计数。
虽然上面已经参照生成第一样本和生成第二样本之间的具体时间期间描述了各示例,但根据本文描述的原理可使用任何适当的期间。进一步,虽然上面已经参照用于确定分布变化的具体机制描述了各示例,但根据本文描述的原理可使用使用用于确定分布变化的任何适当机制。
虽然已经参照具体的直方图描述了该示例,但根据本文描述的原理可使用任何适当类型的直方图。进一步,虽然已经参照具体的布隆过滤器描述了该示例,但根据本文描述的原理可使用任何适当类型的布隆过滤器。另外,虽然上面已经参照具体的统计描述了各示例,但根据本文描述的原理可使用任何适当类型的统计。
已经提供前面的描述仅用于说明和描述描述的原理的示例。该描述目的不在于穷举或将这些原理限制到公开的任何精确的形式。根据上述教导,许多修改和变形是可能的。