具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
图1是根据本发明的数据仓库中的索引统计信息处理方法的第一实施例的流程图。如图1所示,该数据仓库中的索引统计信息处理方法包括:
步骤S101,获取数据仓库中的索引统计信息。
数据仓库,英文名称Data Warehouse,简称DW或DWH,数据仓库是为企业所有级别的决策制度过程提高支持的所有类型数据的战略。它是单个数据存储,成语分析性报告和决策支持的目的而创建,为企业提供需要业务智能来知道业务流程改进和监督时间、成本、质量和控制。
索引统计信息是在数据仓库创建有关列中值的分布情况的统计信息。创建统计信息后,数据库引擎对列值进行排序,并根据这些值创建一个“直方图”。直方图指定有多少行精确匹配每个间隔值,有多少行在间隔范围内,以及间隔中值的密度大小或重复值的发生率。
获取数据仓库中的用户关注的索引统计信息,即取出数据仓库中用户关注的一部分索引统计信息进行处理。这样可以更快的判断出索引统计信息是否准确、是否需要更新。
步骤S102,检测索引统计信息的预估行数,其中,预估行数是索引统计信息中成员值总数与索引统计信息中成员值密度的比值,成员值总数用于表示成员值的总数量。
在数据仓库中,预估行数是索引统计信息中成员值总数与索引统计信息中成员值密度的比值。例如,在取10行索引统计信息,在这10行索引统计信息种有3个唯一值,唯一值即为索引统计信息中成员值中互不相同的值。那么成员值密度为0.3。如果知道成员值密度和成员值总数,即可以计算出预估行数,再检测出索引统计信息的预估行数。
步骤S103,获取处理时间段内索引统计信息的数据总数,其中,处理时间段是预先对索引统计信息进行设置的处理时间周期。
设置对索引统计信息的处理周期,在数据仓库中获取处理周期内的索引统计信息。例如,如数据仓库里e_session会话表,要检测其聚簇索引,假设发现其统计信息里不存在本批次所处理时间段内的数据,那么我们会发起一个查询,统计一下处理时间段内在E_Session表里是否真的没有数据,如果是有数据的,则证明统计信息是不准确的,需要做更新操作,这里所发起的查询即为查询,其Sql语句举例如下:SELECTCOUNT(*)FROM E_Session WHERE updatetime BETWEENProcessBeginTime ANDProcessEndTime。Sql语句意义为:选取数据进入E_Session表的时间(updatetime)在时间段(ProcessBeginTime到ProcessEndTime之间)一共有多少数据记录。获取数据进入E_Session表的时间(updatetime)在时间段(ProcessBeginTime到ProcessEndTime之间)内索引统计信息的数据总数。
步骤S104,通过预估行数与数据总数的差值,判断索引统计信息是否需要进行更新。
将预估行数与处理时间段内索引统计信息的数据总数进行比较,得到一个差值,判断此差值是否在预设阈值内,如果此差值在预设阈值内,则说明索引统计信息准确,索引统计信息不需要进行更新。如果此差值不在预设阈值内,则说明索引统计信息不准确,索引统计信息需要进行更新。对数据仓库中的索引统计信息,差值在一个量级范围内,就算差异不大。例如,预估行数是100,处理时间段内索引统计信息的数据总数是1000000000,则此差异很大,说明索引统计信息需要进行更新。如果预估行数是2000000000,处理时间段内索引统计信息的数据总数是3000000000,在一个量级范围内,差异不大,说明索引统计信息不需要进行更新。通过比较将预估行数与处理时间段内索引统计信息的数据总数差值,及时判断出索引统计信息是否准确,是否需要更新。
步骤S105,在索引统计信息需要进行更新的情况下,对索引统计信息进行更新。
通过预估行数与处理时间段内索引统计信息的数据总数的比较,在判定索引统计信息需要进行更新的情况下,对索引统计信息进行更新。常见对索引统计信息更新方式有全扫描方式,即对数据仓库进行一次全扫描,对整个数据仓库中数据进行更新,从而达到了对索引统计信息的更新。但耗时长,占用内存大。根据采样率对数据仓库进行更新,即在数据仓库中,根据采样率对数据仓库进行采样,得到抽样出来的统计信息,将抽样出来的统计信息对索引统计信息进行更新。例如,采样率为1%,抽取数据仓库中1%的统计信息,将这1%的统计信息对索引统计信息进行更新。如果索引统计信息仍然不准确,取采样率为10%对数据仓库进行抽样,将这10%的统计信息对索引统计信息再进行更新。循环更新并检测,知道检测到索引统计信息准确不需要更新为止。
通过本发明提供的数据仓库中的索引统计信息处理方法,采用获取数据仓库中的索引统计信息;检测该索引统计信息的预估行数,其中,该预估行数是该索引统计信息中成员值总数与该索引统计信息中成员值密度的比值,该成员值总数用于表示成员值的总数量;获取处理时间段内该索引统计信息的数据总数,其中,该处理时间段是预先对该索引统计信息进行设置的处理时间周期;通过该预估行数与该数据总数的差值,判断该索引统计信息是否需要进行更新;以及在该索引统计信息需要进行更新的情况下,对该索引统计信息进行更新。解决了由于数据仓库的索引统计信息不能及时更新,造成索引统计信息不准确的问题,达到了让数据仓库的索引统计信息及时进行更新,使索引统计信息更加准确的效果。
图2是根据本发明的数据仓库中的索引统计信息处理方法的第二实施例的流程图。如图2所示,该数据仓库中的索引统计信息处理方法包括:
步骤S201,获取数据仓库中的索引统计信息。
该步骤同上述步骤S101。
步骤S202,选取处理时间段中索引统计信息里的直方图,其中,处理时间段是预先对索引统计信息进行设置的处理时间周期。
设置对索引统计信息的处理周期,选取处理时间段中索引统计信息里的直方图,即是在数据仓库中获取处理时间段中索引统计信息成员值的数据。
步骤S203,检测索引统计信息的直方图数据。
步骤S204,通过直方图数据,获取索引统计信息的预估行数。
在数据仓库中,通过获取的直方图的数据,确定统计信息成员值的密度和统计信息的成员值总数,通过统计信息的成员值总数与统计信息成员值的密度的比值得到索引统计信息的预估行数。
步骤S205,获取处理时间段内索引统计信息的数据总数,其中,处理时间段是预先对索引统计信息进行设置的处理时间周期。
该步骤同上述步骤S103。
步骤S206,通过预估行数与数据总数的差值,判断索引统计信息是否需要进行更新。
该步骤同上述步骤S104。
步骤S207,在索引统计信息需要进行更新的情况下,对索引统计信息进行更新。
该步骤同上述步骤S105。
通过本发明提供的数据仓库中的索引统计信息处理方法,采用了获取数据仓库中的索引统计信息;选取处理时间段中索引统计信息里的直方图,其中,处理时间段是预先对索引统计信息进行设置的处理时间周期;检测索引统计信息的直方图数据;通过直方图数据,获取索引统计信息的预估行数;获取处理时间段内索引统计信息的数据总数,其中,处理时间段是预先对索引统计信息进行设置的处理时间周期;通过预估行数与数据总数的差值,判断索引统计信息是否需要进行更新。在索引统计信息需要进行更新的情况下,对索引统计信息进行更新。解决了由于数据仓库的索引统计信息不能及时更新,造成索引统计信息不准确的问题,达到了让数据仓库的索引统计信息及时进行更新,使索引统计信息更加准确的效果。
图3是根据本发明的数据仓库中的索引统计信息处理方法的第三实施例的流程图。如图3所示,该数据仓库中的索引统计信息处理方法包括:
步骤S301,获取数据仓库中的索引统计信息。
该步骤同上述步骤S101。
步骤S302,检测索引统计信息的预估行数,其中,预估行数是索引统计信息中成员值总数与索引统计信息中成员值密度的比值,成员值总数用于表示成员值的总数量。
该步骤同上述步骤S102。
步骤S303,获取处理时间段内索引统计信息的数据总数,其中,处理时间段是预先对索引统计信息进行设置的处理时间周期。
该步骤同上述步骤S103。
步骤S304,判断预估行数与数据总数的差值是否超过预设阈值。
步骤S305,如果预估行数与数据总数的差值超过预设阈值,判定索引统计信息不准确,需要对索引统计信息进行更新。
在数据仓库中,预估行数与处理时间段内索引统计信息的数据总数的差值超过预设阈值,在此的预设阈值是指预先设定的一个数据量级。在此判断差值就是判断预估行数与处理时间段内索引统计信息的数据总数是否在一个量级上。如预估行数为十万,处理时间段内索引统计信息的数据总数为百万,不都在一个量级上,则说明差值大。判定索引统计信息不准确,需要对索引统计信息进行更新。如预估行数与处理时间段内索引统计信息的数据总数都在十万量级或百万量级,都在一个量级上,则说明差值不大。判定索引统计信息准确,不需要对索引统计信息进行更新。
步骤S306,在索引统计信息需要进行更新的情况下,对索引统计信息进行更新。
该步骤同上述步骤S105。
通过本发明提供的数据仓库中的索引统计信息处理方法,采用了获取数据仓库中的索引统计信息;检测索引统计信息的预估行数,其中,预估行数是索引统计信息中成员值总数与索引统计信息中成员值密度的比值,成员值总数用于表示成员值的总数量;获取处理时间段内索引统计信息的数据总数,其中,处理时间段是预先对索引统计信息进行设置的处理时间周期;判断预估行数与数据总数的差值是否超过预设阈值;如果预估行数与数据总数的差值超过预设阈值,判定索引统计信息不准确,需要对索引统计信息进行更新;如果预估行数与数据总数的差值没有超过预设阈值,判定索引统计信息准确,不需要对索引统计信息进行更新。在索引统计信息需要进行更新的情况下,对索引统计信息进行更新。解决了由于数据仓库的索引统计信息不能及时更新,造成索引统计信息不准确的问题,达到了让数据仓库的索引统计信息及时进行更新,使索引统计信息更加准确的效果。
图4是根据本发明的数据仓库中的索引统计信息处理方法的第四实施例的流程图。如图4所示,该数据仓库中的索引统计信息处理方法包括:
步骤S401,获取数据仓库中的索引统计信息。
该步骤同上述步骤S101。
步骤S402,检测索引统计信息的预估行数,其中,预估行数是索引统计信息中成员值总数与索引统计信息中成员值密度的比值,成员值总数用于表示成员值的总数量。
该步骤同上述步骤S102。
步骤S403,获取处理时间段内索引统计信息的数据总数,其中,处理时间段是预先对索引统计信息进行设置的处理时间周期。
该步骤同上述步骤S103。
步骤S404,通过预估行数与数据总数的差值,判断索引统计信息是否需要进行更新。
该步骤同上述步骤S101。
步骤S405,检测数据仓库的采样率。
在数据仓库中,采样率是对数据仓库采样的百分比。检测出数据仓库中预先设置的采样率。如果数据仓库没有预先设置采样率,即检测出数据仓库中默认的采样率。
步骤S406,通过采样率对数据仓库进行采样。
通过数据仓库中预先设置的采样率或数据仓库中默认的采样率对数据仓库进行采样。例如,采样率为10%,即对数据仓库中的统计信息按照采样率为10%进行采样。
步骤S407,将采样率对数据仓库进行采样抽取出的统计信息对索引统计信息进行更新。
通过采样率对数据仓库进行采样后,得到采样抽取出的统计信息,将采样抽取出的统计信息对不准确的索引统计信息进行更新。这样实现了对数据仓库的索引统计信息及时进行更新,使统计信息更加准确。
通过本发明提供的数据仓库中的索引统计信息处理方法,采用了获取数据仓库中的索引统计信息;检测索引统计信息的预估行数,其中,预估行数是索引统计信息中成员值总数与索引统计信息中成员值密度的比值,成员值总数用于表示成员值的总数量;获取处理时间段内索引统计信息的数据总数,其中,处理时间段是预先对索引统计信息进行设置的处理时间周期;通过预估行数与数据总数的差值,判断索引统计信息是否需要进行更新;检测数据仓库的采样率。通过采样率对数据仓库进行采样;将采样率对数据仓库进行采样抽取出的统计信息对索引统计信息进行更新。解决了由于数据仓库的索引统计信息不能及时更新,造成索引统计信息不准确的问题,达到了让数据仓库的索引统计信息及时进行更新,使索引统计信息更加准确的效果。
图5是根据本发明的数据仓库中的索引统计信息处理方法的第五实施例的流程图。如图5所示,该数据仓库中的索引统计信息处理方法包括:
步骤S501,获取数据仓库中的索引统计信息。
该步骤同上述步骤S101。
步骤S502,检测索引统计信息的预估行数,其中,预估行数是索引统计信息中成员值总数与索引统计信息中成员值密度的比值,成员值总数用于表示成员值的总数量。
该步骤同上述步骤S102。
步骤S503,获取处理时间段内索引统计信息的数据总数,其中,处理时间段是预先对索引统计信息进行设置的处理时间周期。
该步骤同上述步骤S103。
步骤S504,通过预估行数与数据总数的差值,判断索引统计信息是否需要进行更新。
该步骤同上述步骤S104。
步骤S505,在索引统计信息需要进行更新的情况下,对索引统计信息进行更新。
该步骤同上述步骤S105。
步骤S506,检测更新后的索引统计信息的预估行数。
步骤S507,获取处理时间段内更新后的索引统计信息的数据总数。
步骤S508,通过预估行数与数据总数的差值,判断更新后的索引统计信息是否需要进行更新。
步骤S509,在更新后的索引统计信息需要更新的情况下,按照全扫描的方式对更新后的索引统计信息进行更新或按照数据仓库的采样率递增的方式对更新后的索引统计信息进行更新。
在更新后的索引统计信息需要更新的情况下,按照全扫描或采样率递增的方式索引统计信息进行更新。全扫描方式是对整个数据仓库进行扫描更新。采样率递增的方式如第一次采样率取10%对数据仓库进行更新,结果检测索引统计信息仍然不准确,第二次即采样率取20%对数据仓库进行更新,继续检测索引统计信息是否准确。这样循环检测索引统计信息是否准确,是否需要更新,在需要更新的情况下,采取不同方式对索引统计信息进行更新。实现了及时对数据仓库的索引统计信息进行更新,保证了统计信息的准确性。
通过本发明提供的数据仓库中的索引统计信息处理方法,采用了获取数据仓库中的索引统计信息;检测索引统计信息的预估行数,其中,预估行数是索引统计信息中成员值总数与索引统计信息中成员值密度的比值,成员值总数用于表示成员值的总数量;获取处理时间段内索引统计信息的数据总数,其中,处理时间段是预先对索引统计信息进行设置的处理时间周期;通过预估行数与数据总数的差值,判断索引统计信息是否需要进行更新;在索引统计信息需要进行更新的情况下,对索引统计信息进行更新;检测更新后的索引统计信息的预估行数;获取处理时间段内更新后的索引统计信息的数据总数;通过预估行数与数据总数的差值,判断更新后的索引统计信息是否需要进行更新。解决了由于数据仓库的索引统计信息不能及时更新,造成索引统计信息不准确的问题,达到了让数据仓库的索引统计信息及时进行更新,使索引统计信息更加准确的效果。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图6是根据本发明的数据仓库中的索引统计信息处理装置的第一实施例的示意图。如图6所示,该数据仓库中的索引统计信息处理装置包括:第一获取单元10,检测单元20,第二获取单元30,判断单元40和更新单元50。
第一获取单元10,用于获取数据仓库中的索引统计信息。
检测单元20,用于检测索引统计信息的预估行数,其中,预估行数是索引统计信息中成员值总数与索引统计信息中成员值密度的比值,成员值总数用于表示成员值的总数量。
第二获取单元30,用于获取处理时间段内索引统计信息的数据总数,其中,处理时间段是预先对索引统计信息进行设置的处理时间周期。
判断单元40,用于通过预估行数与数据总数的差值,判断索引统计信息是否需要进行更新。
更新单元50,用于在索引统计信息需要进行更新的情况下,对索引统计信息进行更新。
通过本发明提供的数据仓库中的索引统计信息处理装置,该装置包括:第一获取单元10,用于获取数据仓库中的索引统计信息;检测单元20,用于检测索引统计信息的预估行数,其中,预估行数是索引统计信息中成员值总数与索引统计信息中成员值密度的比值,成员值总数用于表示成员值的总数量;第二获取单元30,用于获取处理时间段内索引统计信息的数据总数,其中,处理时间段是预先对索引统计信息进行设置的处理时间周期;判断单元40,用于根据预估行数与数据总数的差值,判断索引统计信息是否需要进行更新;更新单元50,用于在索引统计信息需要进行更新的情况下,对索引统计信息进行更新。解决了由于数据仓库的索引统计信息不能及时更新,造成索引统计信息不准确的问题,达到了让数据仓库的索引统计信息及时进行更新,使索引统计信息更加准确的效果。
图7是根据本发明的数据仓库中的索引统计信息处理装置的第二实施例的示意图。如图7所示,该数据仓库中的索引统计信息处理装置包括:第一获取单元10,检测单元20,第二获取单元30,判断单元40和更新单元50。其中检测单元20包括:第一获取模块201、第一检测模块202和第二获取模块203。
第一获取单元10,检测单元20,第二获取单元30,判断单元40和更新单元50的作用与上述实施例中作用相同,在此不再赘述。
第一获取模块201,用于获取处理时间段中索引统计信息里的直方图,其中,处理时间段是预先对索引统计信息进行设置的处理时间周期。
第一检测模块202,用于检测索引统计信息的直方图数据。
第二获取模块203,用于根据直方图数据,获取索引统计信息的预估行数。
图8是根据本发明的数据仓库中的索引统计信息处理装置的第三实施例的示意图。如图8所示,该数据仓库中的索引统计信息处理装置包括:第一获取单元10,检测单元20,第二获取单元30,判断单元40和更新单元50。其中判断单元40包括:第一判断模块401和第二判断模块402。
第一获取单元10,检测单元20,第二获取单元30,判断单元40和更新单元50的作用与上述实施例中作用相同,在此不再赘述。
第一判断模块401,用于判断预估行数与数据总数的差值是否超过预设阈值。
第二判断模块402,用于在预估行数与数据总数的差值超过预设阈值时,判定索引统计信息不准确,需要对索引统计信息进行更新。在预估行数与数据总数的差值没有超过预设阈值时,判定索引统计信息准确,不需要对索引统计信息进行更新。
图9是根据本发明的数据仓库中的索引统计信息处理装置的第四实施例的示意图。如图9所示,该数据仓库中的索引统计信息处理装置包括:第一获取单元10,检测单元20,第二获取单元30,判断单元40和更新单元50。其中更新单元50包括:第二检测模块501、采样模块502和第一更新模块503。
第一获取单元10,检测单元20,第二获取单元30,判断单元40和更新单元50的作用与上述实施例中作用相同,在此不再赘述。
第二检测模块501,用于检测数据仓库的采样率。
采样模块502,用于通过采样率对数据仓库进行采样。
第一更新模块503,用于将采样率对数据仓库进行采样抽取出的统计信息对索引统计信息进行更新。
图10是根据本发明的数据仓库中的索引统计信息处理装置的第五实施例的示意图。如图10所示,该数据仓库中的索引统计信息处理装置包括:第一获取单元10,检测单元20,第二获取单元30,判断单元40和更新单元50。其中更新单元50包括:第三检测模块504、第三获取模块505、第三判断模块506和第二更新模块507。
第一获取单元10,检测单元20,第二获取单元30,判断单元40和更新单元50的作用与上述实施例中作用相同,在此不再赘述。
第三检测模块504,用于检测更新后的索引统计信息的预估行数。
第三获取模块505,用于获取处理时间段内更新后的索引统计信息的数据总数。
第三判断模块506,用于通过预估行数与数据总数的差值,判断更新后的索引统计信息是否需要进行更新。
第二更新模块507,用于在更新后的索引统计信息需要更新的情况下,按照全扫描的方式对更新后的索引统计信息进行更新或按照数据仓库的采样率递增的方式对更新后的索引统计信息进行更新。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。