一种统计信息的收集方法及装置与流程

文档序号:15982145发布日期:2018-11-17 00:27阅读:196来源:国知局

本发明涉及数据库统计信息收集领域,更具体的说,是涉及一种统计信息的收集方法及装置。

背景技术

在oracle数据库中,统计信息是指用于描述oracle数据库中sql相关对象:表和索引的物理特性的信息,如表的行数、表所占的磁盘空间、索引的行数等。oracle数据库中的cbo(costbasedoptimizer)可以根据当前收集到的统计信息,计算出sql不同执行路径的成本,进而从中选择出一条成本最小的路径作为该sql的执行计划。由此可见,oracle数据库中统计信息的准确性,对cbo计算出成本最小的sql执行路径具有显著影响。

目前,常用的统计信息的收集方法主要是利用oracle数据库自带的统计信息自动收集功能来完成收集。然而,oracle数据库自带的统计信息自动收集功能只有在规定时间段内,才能够用于收集sql相关对象的统计信息。因此,当sql相关对象的统计信息在规定时间段外失效时,oracle数据库中的cbo却仍采用其在规定时间段内收集到的统计信息进行路径计算,从而导致计算出的sql执行路径并非最低成本的路径,严重影响了sql的执行效率。



技术实现要素:

有鉴于此,本发明提供了一种统计信息的收集方法及装置,实现了统计信息的即时收集,进而提高了sql的执行效率。

为实现上述目的,本发明提供如下技术方案:

一种统计信息的收集方法,包括:

在接收到数据加工完成指令时,获取待收集统计信息的表;

判断所述待收集统计信息的表是否满足预设收集条件,所述预设收集条件为所述待收集统计信息的表不为临时表,且所述待收集统计信息的表的统计信息未被锁定;

若所述待收集统计信息的表满足所述预设收集条件,按照预设收集策略,收集所述待收集统计信息的表的当前统计信息。

优选地,所述预设收集策略包括:

所述待收集统计信息的表为空表,且收集区域为子分区;

所述待收集统计信息的表为空表,且收集区域为分区;

所述待收集统计信息的表为空表,且收集区域为整表;

所述待收集统计信息的表为非空表,且收集区域为子分区;

所述待收集统计信息的表为非空表,且收集区域为分区;

其中,所述子分区属于所述分区,所述分区属于所述整表。

优选地,当所述预设收集策略为所述待收集统计信息的表为空表,且收集区域为子分区时,所述按照预设收集策略,收集所述待收集统计信息的表的当前统计信息,包括:

获取oracle数据库的配置表;

判断所述待收集统计信息的表的处理次数是否达到所述配置表的最大处理次数;

若所述待收集统计信息的表的处理次数达到所述配置表的最大处理次数,收集所述待收集统计信息的表的子分区的统计信息,以及所述子分区所属的分区的统计信息,并将所述子分区的统计信息和所述子分区所属的分区的统计信息作为所述当前统计信息;

若所述待收集统计信息的表的处理次数未达到所述配置表的最大处理次数,收集所述待收集统计信息的表的子分区的统计信息,并将所述子分区的统计信息作为所述当前统计信息。

优选地,当所述预设收集策略为所述待收集统计信息的表为空表,且收集区域为分区时,所述按照预设收集策略,收集所述待收集统计信息的表的当前统计信息,包括:

获取oracle数据库的配置表;

判断所述待收集统计信息的表的处理次数是否达到所述配置表的最大处理次数;

若所述待收集统计信息的表的处理次数达到所述配置表的最大处理次数,收集所述待收集统计信息的表的分区的统计信息,以及所述分区所属的整表的统计信息,并将所述分区的统计信息和所述分区所属的整表的统计信息作为所述当前统计信息;

若所述待收集统计信息的表的处理次数未达到所述配置表的最大处理次数,收集所述待收集统计信息的表的分区的统计信息,并将所述分区的统计信息作为所述当前统计信息。

优选地,当所述预设收集策略为所述待收集统计信息的表为空表,且收集区域为整表时,所述按照预设收集策略,收集所述待收集统计信息的表的当前统计信息,包括:

获取oracle数据库的配置表;

判断所述待收集统计信息的表的处理次数是否达到所述配置表的最大处理次数;

若所述待收集统计信息的表的处理次数达到所述配置表的最大处理次数,收集所述待收集统计信息的表的整表的统计信息,并将所述整表的统计信息作为所述当前统计信息。

优选地,当所述预设收集策略为所述待收集统计信息的表为非空表,且收集区域为子分区时,所述按照预设收集策略,收集所述待收集统计信息的表的当前统计信息,包括:

获取oracle数据库的配置表;

判断所述配置表中是否包含强制收集标识;

若所述配置表中包含所述强制收集标识,收集所述待收集统计信息的表的子分区的统计信息,并将所述子分区的统计信息作为所述当前统计信息;

若所述配置表中不包含所述强制收集标识,判断所述子分区的个数是否等于1;

若所述子分区的个数等于1,根据所述配置表的识别信息,判断所述待收集统计信息的表的初始统计信息是否失效;

若所述待收集统计信息的表的初始统计信息失效,收集所述待收集统计信息的表的子分区的统计信息,并将所述子分区的统计信息作为所述当前统计信息。

优选地,当所述预设收集策略为所述待收集统计信息的表为非空表,且收集区域为分区时,所述按照预设收集策略,收集所述待收集统计信息的表的当前统计信息,包括:

获取oracle数据库的配置表;

判断所述配置表中是否包含强制收集标识;

若所述配置表中包含所述强制收集标识,收集所述待收集统计信息的表的分区的统计信息,并将所述分区的统计信息作为所述当前统计信息;

若所述配置表中不包含所述强制收集标识,判断所述分区的个数是否等于1;

若所述分区的个数等于1,根据所述配置表的识别信息,判断所述待收集统计信息的表的初始统计信息是否失效;

若所述待收集统计信息的表的初始统计信息失效,收集所述待收集统计信息的表的分区的统计信息,并将所述分区的统计信息作为所述当前统计信息。

一种统计信息的收集装置,包括:

获取模块,用于在接收到数据加工完成指令时,获取待收集统计信息的表;

判断模块,用于判断所述待收集统计信息的表是否满足预设收集条件,所述预设收集条件为所述待收集统计信息的表不为临时表,且所述待收集统计信息的表的统计信息未被锁定;

收集模块,用于若所述待收集统计信息的表满足所述预设收集条件,按照预设收集策略,收集所述待收集统计信息的表的当前统计信息。

优选地,所述预设收集策略包括:

所述待收集统计信息的表为空表,且收集区域为子分区;

所述待收集统计信息的表为空表,且收集区域为分区;

所述待收集统计信息的表为空表,且收集区域为整表;

所述待收集统计信息的表为非空表,且收集区域为子分区;

所述待收集统计信息的表为非空表,且收集区域为分区;

其中,所述子分区属于所述分区,所述分区属于所述整表。

优选地,所述收集模块包括:

第一获取单元,用于当所述预设收集策略为所述待收集统计信息的表为空表,且收集区域为子分区时,获取oracle数据库的配置表;

第一判断单元,用于判断所述待收集统计信息的表的处理次数是否达到所述配置表的最大处理次数;

第一收集单元,用于若所述待收集统计信息的表的处理次数达到所述配置表的最大处理次数,收集所述待收集统计信息的表的子分区的统计信息,以及所述子分区所属的分区的统计信息,并将所述子分区的统计信息和所述子分区所属的分区的统计信息作为所述当前统计信息;

第二收集单元,用于若所述待收集统计信息的表的处理次数未达到所述配置表的最大处理次数,收集所述待收集统计信息的表的子分区的统计信息,并将所述子分区的统计信息作为所述当前统计信息。

优选地,所述收集模块包括:

第二获取单元,用于当所述预设收集策略为所述待收集统计信息的表为空表,且收集区域为分区时,获取oracle数据库的配置表;

第二判断单元,用于判断所述待收集统计信息的表的处理次数是否达到所述配置表的最大处理次数;

第三收集单元,用于若所述待收集统计信息的表的处理次数达到所述配置表的最大处理次数,收集所述待收集统计信息的表的分区的统计信息,以及所述分区所属的整表的统计信息,并将所述分区的统计信息和所述分区所属的整表的统计信息作为所述当前统计信息;

第四收集单元,用于若所述待收集统计信息的表的处理次数未达到所述配置表的最大处理次数,收集所述待收集统计信息的表的分区的统计信息,并将所述分区的统计信息作为所述当前统计信息。

优选地,所述收集模块包括:

第三获取单元,用于当所述预设收集策略为所述待收集统计信息的表为空表,且收集区域为整表时,获取oracle数据库的配置表;

第三判断单元,用于判断所述待收集统计信息的表的处理次数是否达到所述配置表的最大处理次数;

第五收集单元,用于若所述待收集统计信息的表的处理次数达到所述配置表的最大处理次数,收集所述待收集统计信息的表的整表的统计信息,并将所述整表的统计信息作为所述当前统计信息。

优选地,所述收集模块包括:

第四获取单元,用于当所述预设收集策略为所述待收集统计信息的表为非空表,且收集区域为子分区时,获取oracle数据库的配置表;

第四判断单元,用于判断所述配置表中是否包含强制收集标识;

第六收集单元,用于若所述配置表中包含所述强制收集标识,收集所述待收集统计信息的表的子分区的统计信息,并将所述子分区的统计信息作为所述当前统计信息;

第五判断单元,用于若所述配置表中不包含所述强制收集标识,判断所述子分区的个数是否等于1;

第六判断单元,用于若所述子分区的个数等于1,根据所述配置表的识别信息,判断所述待收集统计信息的表的初始统计信息是否失效;

第七收集单元,用于若所述待收集统计信息的表的初始统计信息失效,收集所述待收集统计信息的表的子分区的统计信息,并将所述子分区的统计信息作为所述当前统计信息。

优选地,所述收集模块包括:

第五获取单元,用于当所述预设收集策略为所述待收集统计信息的表为非空表,且收集区域为分区时,获取oracle数据库的配置表;

第七判断单元,用于判断所述配置表中是否包含强制收集标识;

第八收集单元,用于若所述配置表中包含所述强制收集标识,收集所述待收集统计信息的表的分区的统计信息,并将所述分区的统计信息作为所述当前统计信息;

第八判断单元,用于若所述配置表中不包含所述强制收集标识,判断所述分区的个数是否等于1;

第九判断单元,用于若所述分区的个数等于1,根据所述配置表的识别信息,判断所述待收集统计信息的表的初始统计信息是否失效;

第九收集单元,用于若所述待收集统计信息的表的初始统计信息失效,收集所述待收集统计信息的表的分区的统计信息,并将所述分区的统计信息作为所述当前统计信息。

经由上述的技术方案可知,与现有技术相比,本发明提供了一种统计信息的收集方法及装置,通过在接收到数据加工完成指令时,获取待收集统计信息的表,并判断该待收集统计信息的表是否满足预设收集条件,若满足,则按照预设收集策略,收集该待收集统计信息的表的当前统计信息,以实现每次对oracle数据库中的表进行了数据加工处理后,及时判断是否需要重新收集统计信息,以确保oracle数据库中统计信息的即时更新;可见,在接收到数据加工完成指令,且判断出待收集统计信息的表满足预设收集条件时,及时对待收集统计信息的表的最新统计信息进行收集,能够确保oracle数据库中cbo进行sql执行路径计算所采用的统计信息始终为最新的统计信息,进而保证了计算出的sql执行路径为最优路径,提高了sql的执行效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例提供的一种统计信息的收集方法的方法流程图;

图2为本发明实施例提供的另一种统计信息的收集方法的方法流程图;

图3为本发明实施例提供的另一种统计信息的收集方法的方法流程图;

图4为本发明实施例提供的另一种统计信息的收集方法的方法流程图;

图5为本发明实施例提供的另一种统计信息的收集方法的方法流程图;

图6为本发明实施例提供的另一种统计信息的收集方法的方法流程图;

图7为本发明实施例提供的一种统计信息的收集装置的结构示意图;

图8为本发明实施例提供的另一种统计信息的收集装置的结构示意图;

图9为本发明实施例提供的另一种统计信息的收集装置的结构示意图;

图10为本发明实施例提供的另一种统计信息的收集装置的结构示意图;

图11为本发明实施例提供的另一种统计信息的收集装置的结构示意图;

图12为本发明实施例提供的另一种统计信息的收集装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种统计信息的收集方法,请参见附图1,所述方法具体包括以下步骤:

s101:在接收到数据加工完成指令时,获取待收集统计信息的表;

具体的,数据加工完成指令是指当前所采用的应用系统对oracle数据库中已存储的表进行了数据加工处理,且该表中发生变化的数据所占百分比超过了oracle数据库内部预置百分比阈值(如10%)时,自动生成的一个指令。其中,当前所采用的应用系统主要用于对oracle数据库中已存储的表进行数据加工处理,如数据添加、数据合并等。

当oracle数据库中已存储的表发生了数据加工处理,且表中发生变化的数据所占百分比超过了oracle数据库内部预置百分比阈值时,会导致该表的统计信息也随之发生改变,因此需要对oracle数据库的统计信息进行即时更新。

待收集统计信息的表可以是依据oracle数据库中的配置表与dba视图,而获取到与当前所采用的应用系统相关的表。其中,oracle数据库中的配置表包括基本属性信息、待收集统计信息的表的相关参数信息以及统计信息的相关参数信息。

需要说明的是,获取到的待收集统计信息的表的个数可以是一个,也可以是多个。

s102:判断所述待收集统计信息的表是否满足预设收集条件,所述预设收集条件为所述待收集统计信息的表不为临时表,且所述待收集统计信息的表的统计信息未被锁定,若是,则执行s103,若否,则执行s104。

s103:按照预设收集策略,收集所述待收集统计信息的表的当前统计信息;

具体的,在判断出待收集统计信息的表满足预设收集条件,即待收集统计信息的表不为临时表,且该待收集统计信息的表的统计信息未被锁定时,证明该待收集统计信息的表的统计信息需要重新收集。此时,按照预设收集策略,对该待收集统计信息的表的当前统计信息进行收集,并将收集到的当前统计信息作为后续oracle数据库中cbo计算sql执行路径时所采用的统计信息,进而有效解决了因cbo采用失效的统计信息计算sql执行路径而导致计算出的sql执行路径并非最低成本的路径,严重影响sql执行效率的问题。

需要说明的是,当待收集统计信息的表为多个时,则将每一个待收集统计信息的表按照s102与s103执行,从而获得每一个待收集统计信息的表的当前统计信息。

临时表为一种数据量不大的表,临时表的统计信息可通过oracle数据库动态收集更新。

在实际应用中,可以通过api(applicationprogramminginterface,应用程序编程接口)实现对待收集统计信息的表的当前统计信息的收集操作。

预设收集策略可以是依据待收集统计信息的表的组成结构与表内数据量预先建立的,主要包括:“待收集统计信息的表为空表,且收集区域为子分区”,“待收集统计信息的表为空表,且收集区域为分区”,“待收集统计信息的表为空表,且收集区域为整表”,“待收集统计信息的表为非空表,且收集区域为子分区”,以及“待收集统计信息的表为非空表,且收集区域为分区”五种策略。

其中,待收集统计信息的表的组成结构包括三种,分别为:整表,由至少一个分区组成的整表,以及由至少一个子分区组成的整表。

表内数据量分为:“存有数据量”与“未存有数据量”两种。即非空表与空表。

收集区域是指待收集统计信息的表中发生了数据加工处理,且发生变化的数据所占百分比超过了oracle数据库内部预置百分比阈值(如10%)的区域,可以是子分区、分区以及整表中的任意一个。

s104:结束;

具体的,在判断出待收集统计信息的表不满足预设收集条件,即待收集统计信息的表满足“待收集统计信息的表为临时表”,以及“待收集统计信息的表的统计信息被锁定”这两种情况中的任意一种或两种时,证明该待收集统计信息的表的统计信息不需要重新收集,此时结束收集操作,oracle数据库中cbo仍采用初始存储的统计信息来计算sql执行路径。

其中,统计信息被锁定是指统计信息不再发生改变,因此不需要再进行收集。

本发明实施例所公开的一种统计信息的收集方法,通过在接收到数据加工完成指令时,获取待收集统计信息的表,并判断该待收集统计信息的表是否满足预设收集条件,若满足,则按照预设收集策略,收集该待收集统计信息的表的当前统计信息,以实现在每次对oracle数据库中的表进行了数据加工处理后,及时判断是否需要重新收集统计信息,以确保oracle数据库中统计信息的即时更新;可见,在接收到数据加工完成指令,且判断出待收集统计信息的表满足预设收集条件时,及时对待收集统计信息的表的最新统计信息进行收集,能够确保oracle数据库中cbo进行sql执行路径计算所采用的统计信息始终为最新的统计信息,进而保证了计算出的sql执行路径为最优路径,提高了sql的执行效率。

在上述附图1所对应实施例的基础上,本发明实施例公开了另一种统计信息的收集方法,请参见附图2,所述方法具体包括以下步骤:

s201:在接收到数据加工完成指令时,获取待收集统计信息的表。

s202:判断所述待收集统计信息的表是否满足预设收集条件,所述预设收集条件为所述待收集统计信息的表不为临时表,且所述待收集统计信息的表的统计信息未被锁定,若是,则执行s203,若否,则执行s204。

s203:当所述预设收集策略为所述待收集统计信息的表为空表,且收集区域为子分区时,获取oracle数据库的配置表,并执行s205;

具体的,由于oracle数据库的配置表包括基本属性信息、待收集统计信息的表的相关参数信息以及统计信息的相关参数信息,因此,当预设收集策略为“待收集统计信息的表为空表,且收集区域为子分区”时,通过获取oracle数据库的配置表,来获知oracle数据库中待收集统计信息的表的相关参数信息。

需要说明的是,当预设收集策略为“待收集统计信息的表为空表,且收集区域为子分区”时,待收集统计信息的表的组成结构为由至少一个子分区组成的整表。

收集区域为子分区时,该子分区的个数可以是一个或多个。

s204:结束。

s205:判断所述待收集统计信息的表的处理次数是否达到所述配置表的最大处理次数,若是,则执行s206,若否,则执行s207;

具体的,待收集统计信息的表的处理次数可以是指待收集统计信息的表被当前所采用的应用系统进行数据加工处理的次数。

s206:收集所述待收集统计信息的表的子分区的统计信息,以及所述子分区所属的分区的统计信息,并将所述子分区的统计信息和所述子分区所属的分区的统计信息作为所述当前统计信息;

具体的,若待收集统计信息的表的处理次数达到配置表的最大处理次数,则证明当前所采用的应用系统是最后一次对该待收集统计信息的表进行数据加工处理,此时,对该待收集统计信息的表中经过数据加工处理的子分区,以及该子分区所属的分区进行统计信息的收集,以获得最新的统计信息。

需要说明的是,当收集区域中的子分区的个数为多个时,收集每一个子分区的统计信息及其所属的分区的统计信息,作为当前统计信息。

s207:收集所述待收集统计信息的表的子分区的统计信息,并将所述子分区的统计信息作为所述当前统计信息;

具体的,若待收集统计信息的表的处理次数未达到配置表的最大处理次数,则证明当前所采用的应用系统不是最后一次对该待收集统计信息的表进行数据加工处理,此时,可仅对待收集统计信息的表中经过数据加工处理的子分区的统计信息进行收集。

本发明实施例所公开的一种统计信息的收集方法,通过在待收集统计信息的表满足预设收集条件,预设收集策略为待收集统计信息的表为空表,且收集区域为子分区时,判断待收集统计信息的表的处理次数是否达到获取到的配置表中的最大处理次数,若达到,则收集待收集统计信息的表的子分区的统计信息,以及该子分区所属的分区的统计信息,作为当前统计信息,若未达到,则仅收集待收集统计信息的表的子分区的统计信息,作为当前统计信息;可见,在预设收集策略为待收集统计信息的表为空表,且收集区域为子分区时,将待收集统计信息的表的处理次数达到配置表的最大处理次数作为执行收集操作的依据,可以在待收集统计信息的表完成最后一次数据加工处理时,快速收集到最新的统计信息,进而确保了统计信息的实时性。

在上述附图1所对应实施例的基础上,本发明实施例公开了另一种统计信息的收集方法,请参见附图3,所述方法具体包括以下步骤:

s301:在接收到数据加工完成指令时,获取待收集统计信息的表。

s302:判断所述待收集统计信息的表是否满足预设收集条件,所述预设收集条件为所述待收集统计信息的表不为临时表,且所述待收集统计信息的表的统计信息未被锁定,若是,则执行s303,若否,则执行s304。

s303:当所述预设收集策略为所述待收集统计信息的表为空表,且收集区域为分区时,获取oracle数据库的配置表,并执行s305;

具体的,由于oracle数据库的配置表包括基本属性信息、待收集统计信息的表的相关参数信息以及统计信息的相关参数信息,因此,当所预设收集策略为“待收集统计信息的表为空表,且收集区域为分区”时,通过获取oracle数据库的配置表,来获知oracle数据库中待收集统计信息的表的相关参数信息。

需要说明的是,当预设收集策略为“待收集统计信息的表为空表,且收集区域为分区”时,待收集统计信息的表的组成结构为由至少一个分区组成的整表。

收集区域为分区时,该分区的个数可以是一个或多个。

s304:结束。

s305:判断所述待收集统计信息的表的处理次数是否达到所述配置表的最大处理次数,若是,则执行s306,若否,则执行s307;

具体的,待收集统计信息的表的处理次数可以是指待收集统计信息的表被当前所采用的应用系统进行数据加工处理的次数。

s306:收集所述待收集统计信息的表的分区的统计信息,以及所述分区所属的整表的统计信息,并将所述分区的统计信息和所述分区所属的整表的统计信息作为所述当前统计信息;

具体的,若待收集统计信息的表的处理次数达到配置表的最大处理次数,则证明当前所采用的应用系统是最后一次对该待收集统计信息的表进行数据加工处理,此时,对该待收集统计信息的表中经过数据加工处理的分区,以及该分区所属的整表进行统计信息的收集,以获得最新的统计信息。

需要说明的是,当收集区域中的分区的个数为多个时,收集每一个分区的统计信息及其所属的整表的统计信息,作为当前统计信息。

s307:收集所述待收集统计信息的表的分区的统计信息,并将所述分区的统计信息作为所述当前统计信息;

具体的,若待收集统计信息的表的处理次数未达到配置表的最大处理次数,则证明当前所采用的应用系统不是最后一次对该待收集统计信息的表进行数据加工处理,此时,可仅对待收集统计信息的表中经过数据加工处理的分区的统计信息进行收集。

本发明实施例所公开的一种统计信息的收集方法,通过在待收集统计信息的表满足预设收集条件,预设收集策略为待收集统计信息的表为空表,且收集区域为分区时,判断待收集统计信息的表的处理次数是否达到获取到的配置表中的最大处理次数,若达到,则收集待收集统计信息的表的分区的统计信息,以及该分区所属的整表的统计信息,作为当前统计信息,若未达到,则仅收集待收集统计信息的表的分区的统计信息,作为当前统计信息;可见,在预设收集策略为待收集统计信息的表为空表,且收集区域为分区时,将待收集统计信息的表的处理次数达到配置表的最大处理次数作为执行收集操作的依据,可以在待收集统计信息的表完成最后一次数据加工处理时,快速收集到最新的统计信息,进而确保了统计信息的实时性。

在上述附图1所对应实施例的基础上,本发明实施例公开了另一种统计信息的收集方法,请参见附图4,所述方法具体包括以下步骤:

s401:在接收到数据加工完成时,获取待收集统计信息的表。

s402:判断所述待收集统计信息的表是否满足预设收集条件,所述预设收集条件为所述待收集统计信息的表不为临时表,且所述待收集统计信息的表的统计信息未被锁定,若是,则执行s403,若否,则执行s404。

s403:当所述预设收集策略为所述待收集统计信息的表为空表,且收集区域为整表时,获取oracle数据库的配置表,并执行s405;

具体的,由于oracle数据库的配置表包括基本属性信息、待收集统计信息的表的相关参数信息以及统计信息的相关参数信息,因此,当所预设收集策略为“待收集统计信息的表为空表,且收集区域为整表”时,通过获取oracle数据库的配置表,来获知oracle数据库中待收集统计信息的表的相关参数信息。

需要说明的是,当预设收集策略为“待收集统计信息的表为空表,且收集区域为整表”时,待收集统计信息的表的组成结构为整表。

s404:结束。

s405:判断所述待收集统计信息的表的处理次数是否达到所述配置表的最大处理次数,若是,则执行s406,若否,则执行s407;

具体的,待收集统计信息的表的处理次数可以是指待收集统计信息的表被当前所采用的应用系统进行数据加工处理的次数。

s406:收集所述待收集统计信息的表的整表的统计信息,并将所述整表的统计信息作为所述当前统计信息;

具体的,若待收集统计信息的表的处理次数达到配置表的最大处理次数,则证明当前所采用的应用系统是最后一次对该待收集统计信息的表进行数据加工处理,此时,直接对该待收集统计信息的表中经过数据加工处理的整表进行统计信息的收集,以获得最新的统计信息。

s407:结束。

本发明实施例所公开的一种统计信息的收集方法,通过在待收集统计信息的表满足预设收集条件,预设收集策略为待收集统计信息的表为空表,且收集区域为整表时,判断待收集统计信息的表的处理次数是否达到获取到的配置表中的最大处理次数,若达到,则收集待收集统计信息的表的整表的统计信息,作为当前统计信息;可见,在预设收集策略为待收集统计信息的表为空表,且收集区域为整表时,将待收集统计信息的表的处理次数达到配置表的最大处理次数作为执行收集操作的依据,可以在待收集统计信息的表完成最后一次数据加工处理时,快速收集到整表的最新统计信息,进而确保了统计信息的实时性。

在上述附图1所对应实施例的基础上,本发明实施例公开了另一种统计信息的收集方法,请参见附图5,所述方法具体包括以下步骤:

s501:在接收到数据加工完成指令时,获取待收集统计信息的表。

s502:判断所述待收集统计信息的表是否满足预设收集条件,所述预设收集条件为所述待收集统计信息的表不为临时表,且所述待收集统计信息的表的统计信息未被锁定,若是,则执行s503,若否,则执行s504。

s503:当所述预设收集策略为所述待收集统计信息的表为非空表,且收集区域为子分区时,获取oracle数据库的配置表,并执行s505;

具体的,由于oracle数据库的配置表包括基本属性信息、待收集统计信息的表的相关参数信息以及统计信息的相关参数信息,因此,当所预设收集策略为“待收集统计信息的表为非空表,且收集区域为子分区”时,通过获取oracle数据库的配置表,来获知oracle数据库中待收集统计信息的表的相关参数信息。

需要说明的是,当预设收集策略为“待收集统计信息的表为非空表,且收集区域为子分区”时,待收集统计信息的表的组成结构为由至少一个子分区组成的整表。

s504:结束。

s505:判断所述配置表中是否包含强制收集标识,若是,则执行s506,若否,则执行s507。

s506:收集所述待收集统计信息的表的子分区的统计信息,并将所述子分区的统计信息作为所述当前统计信息;

具体的,若配置表中包含强制收集标识,则证明待收集统计信息的表必须进行统计信息的收集。此时,直接将该待收集统计信息的表中经过数据加工处理的子分区进行统计信息的收集,以获得最新的统计信息。

s507:判断所述子分区的个数是否等于1,若是,则执行s508,若否,则执行s509。

s508:根据所述配置表的识别信息,判断所述待收集统计信息的表的初始统计信息是否失效,若是,则执行s510,若否,则执行s511;

具体的,若子分区的个数等于1,证明待收集统计信息的表中经过数据加工处理的区域仅为一个子分区。此时,需要对oracle数据库中之前已存储的待收集统计信息的表的初始统计信息是否失效进行判断,以进一步确定是否需要重新收集统计信息。

其中,配置表的识别信息可以是指统计信息的相关参数信息中的收集周期、最大阈值、oracle相关的dba视图等信息。

s509:结束;

具体的,若子分区的个数大于1,证明待收集统计信息的表中经过数据加工处理的区域为多个子分区,即证明该待收集统计信息的表为数据量庞大的表,当该待收集统计信息的表中有多个子分区进行数据加工处理时,对整表的统计信息影响不大,因此不需要对其进行统计信息的收集。

s510:收集所述待收集统计信息的表的子分区的统计信息,并将所述子分区的统计信息作为所述当前统计信息。

s511:结束;

具体的,当判断出待收集统计信息的表的初始统计信息未失效后,也不需要对其进行统计信息的收集。

本发明实施例所公开的一种统计信息的收集方法,通过在待收集统计信息的表满足预设收集条件,预设收集策略为待收集统计信息的表为非空表,且收集区域为子分区时,判断配置表中是否包含强制收集标识,若包含,则收集待收集统计信息的表的子分区的统计信息,作为所述当前统计信息,若不包含,则在判断出子分区的个数等于1,且待收集统计信息的表的初始统计信息失效后,收集待收集统计信息的表的子分区的统计信息,作为当前统计信息;可见,在预设收集策略为待收集统计信息的表为非空表,且收集区域为子分区时,将配置表中是否包含强制收集标识、收集区域中子分区的个数是否等于1,以及待收集统计信息的表的初始统计信息是否失效,作为执行收集操作的依据,可以准确判断出待收集统计信息的表的统计信息是否需要重新收集,以提高收集效率,确保统计信息的实时性。

在上述附图1所对应实施例的基础上,本发明实施例公开了另一种统计信息的收集方法,请参见附图6,所述方法具体包括以下步骤:

s601:在接收到数据加工完成指令时,获取待收集统计信息的表。

s602:判断所述待收集统计信息的表是否满足预设收集条件,所述预设收集条件为所述待收集统计信息的表不为临时表,且所述待收集统计信息的表的统计信息未被锁定,若是,则执行s603,若否,则执行s604。

s603:当所述预设收集策略为所述待收集统计信息的表为非空表,且收集区域为分区时,获取oracle数据库的配置表,并执行s605;

具体的,由于oracle数据库的配置表包括基本属性信息、待收集统计信息的表的相关参数信息以及统计信息的相关参数信息,因此,当所预设收集策略为“待收集统计信息的表为非空表,且收集区域为分区”时,通过获取oracle数据库的配置表,来获知oracle数据库中待收集统计信息的表的相关参数信息。

需要说明的是,当预设收集策略为“待收集统计信息的表为非空表,且收集区域为分区”时,待收集统计信息的表的组成结构为由至少一个分区组成的整表。

s604:结束。

s605:判断所述配置表中是否包含强制收集标识,若是,则执行s606,若否,则执行s607。

s606:收集所述待收集统计信息的表的分区的统计信息,并将所述分区的统计信息作为所述当前统计信息;

具体的,若配置表中包含强制收集标识,则证明待收集统计信息的表必须进行统计信息的收集。此时,直接将该待收集统计信息的表中经过数据加工处理的分区进行统计信息的收集,以获得最新的统计信息。

s607:判断所述分区的个数是否等于1,若是,则执行s608,若否,则执行s609。

s608:根据所述配置表的识别信息,判断所述待收集统计信息的表的初始统计信息是否失效,若是,则执行s610,若否,则执行s609;

具体的,若分区的个数等于1,证明待收集统计信息的表中经过数据加工处理的区域仅为一个分区。此时,需要对oracle数据库中之前已存储的待收集统计信息的表的初始统计信息是否失效进行判断,以进一步确定是否需要重新收集统计信息。

其中,配置表的识别信息可以是指统计信息的相关参数信息中的收集周期、最大阈值、oracle相关的dba视图等信息。

s609:结束;

具体的,若分区的个数大于1,证明待收集统计信息的表中经过数据加工处理的区域为多个分区,即证明该待收集统计信息的表为数据量庞大的表,当该待收集统计信息的表中有多个分区进行数据加工处理时,对整表的统计信息影响不大,因此不需要对其进行统计信息的收集。

s610:收集所述待收集统计信息的表的分区的统计信息,并将所述分区的统计信息作为所述当前统计信息。

s611:结束;

具体的,当判断出待收集统计信息的表的初始统计信息未失效后,也不需要对其进行统计信息的收集。

本发明实施例所公开的一种统计信息的收集方法,通过在待收集统计信息的表满足预设收集条件,预设收集策略为待收集统计信息的表为非空表,且收集区域为分区时,判断配置表中是否包含强制收集标识,若包含,则收集待收集统计信息的表的分区的统计信息,作为所述当前统计信息,若不包含,则在判断出分区的个数等于1,且待收集统计信息的表的初始统计信息失效后,收集待收集统计信息的表的分区的统计信息,作为当前统计信息;可见,在预设收集策略为待收集统计信息的表为非空表,且收集区域为分区时,将配置表中是否包含强制收集标识、收集区域中分区的个数是否等于1,以及待收集统计信息的表的初始统计信息是否失效,作为执行收集操作的依据,可以准确判断出待收集统计信息的表的统计信息是否需要重新收集,以提高收集效率,确保统计信息的实时性。

本发明实施例公开了一种统计信息的收集装置,请参见附图7,包括:

获取模块701,用于在接收到数据加工完成指令时,获取待收集统计信息的表;

判断模块702,用于判断所述待收集统计信息的表是否满足预设收集条件,所述预设收集条件为所述待收集统计信息的表不为临时表,且所述待收集统计信息的表的统计信息未被锁定;

收集模块703,用于若所述待收集统计信息的表满足所述预设收集条件,按照预设收集策略,收集所述待收集统计信息的表的当前统计信息。

需要说明的是,预设收集策略可以是依据待收集统计信息的表的组成结构与表内数据量预先建立的,主要包括:“待收集统计信息的表为空表,且收集区域为子分区”,“待收集统计信息的表为空表,且收集区域为分区”,“待收集统计信息的表为空表,且收集区域为整表”,“待收集统计信息的表为非空表,且收集区域为子分区”,以及“待收集统计信息的表为非空表,且收集区域为分区”五种策略。

其中,待收集统计信息的表的组成结构包括三种,分别为:整表,由至少一个分区组成的整表,以及由至少一个子分区组成的整表。

表内数据量分为:“存有数据量”与“未存有数据量”两种。即非空表与空表。

收集区域是指待收集统计信息的表中发生数据加工处理,且发生变化的数据所占百分比超过了oracle内部预置百分比阈值(如10%)的区域,可以是子分区、分区以及整表中的任意一个。

本发明实施例所公开的一种统计信息的收集装置,通过获取模块701在接收到数据加工完成指令时,获取待收集统计信息的表,判断模块702判断该待收集统计信息的表是否满足预设收集条件,若满足,则收集模块703按照预设收集策略,收集该待收集统计信息的表的当前统计信息,以实现每次对oracle数据库中的表进行了数据加工处理后,及时判断是否需要重新收集统计信息,以确保oracle数据库中统计信息的即时更新;可见,在接收到数据加工完成指令,且判断出待收集统计信息的表满足预设收集条件时,及时对待收集统计信息的表的最新统计信息进行收集,能够确保oracle数据库中cbo进行sql执行路径计算所采用的统计信息始终为最新的统计信息,进而保证了计算出的sql执行路径为最优路径,提高了sql的执行效率。

本发明实施例提供的各个模块的工作过程,请参照附图1所对应的方法流程图,具体工作过程不再赘述。

在上述附图7所对应实施例的基础上,本发明实施例公开了另一种统计信息的收集装置,请参见附图8,包括:

获取模块701,判断模块702,收集模块703;

其中,所述收集模块703包括:

第一获取单元7031,用于当所述预设收集策略为所述待收集统计信息的表为空表,且收集区域为子分区时,获取oracle数据库的配置表;

第一判断单元7032,用于判断所述待收集统计信息的表的处理次数是否达到所述配置表的最大处理次数;

第一收集单元7033,用于若所述待收集统计信息的表的处理次数达到所述配置表的最大处理次数,收集所述待收集统计信息的表的子分区的统计信息,以及所述子分区所属的分区的统计信息,并将所述子分区的统计信息和所述子分区所属的分区的统计信息作为所述当前统计信息;

第二收集单元7034,用于若所述待收集统计信息的表的处理次数未达到所述配置表的最大处理次数,收集所述待收集统计信息的表的子分区的统计信息,并将所述子分区的统计信息作为所述当前统计信息。

本发明实施例所公开的一种统计信息的收集装置,通过在待收集统计信息的表满足预设收集条件,预设收集策略为待收集统计信息的表为空表,且收集区域为子分区时,第一判断单元7032判断待收集统计信息的表的处理次数是否达到第一获取单元7031获取到的配置表中的最大处理次数,若达到,则第一收集单元7033收集待收集统计信息的表的子分区的统计信息,以及该子分区所属的分区的统计信息,作为当前统计信息,若未达到,则第二收集单元7034收集待收集统计信息的表的子分区的统计信息,作为当前统计信息;可见,在预设收集策略为待收集统计信息的表为空表,且收集区域为子分区时,将待收集统计信息的表的处理次数达到配置表的最大处理次数作为执行收集操作的依据,可以在待收集统计信息的表完成最后一次数据加工处理时,快速收集到最新的统计信息,进而确保了统计信息的实时性。

本发明实施例提供的各个模块的工作过程,请参照附图2所对应的方法流程图,具体工作过程不再赘述。

在上述附图7所对应实施例的基础上,本发明实施例公开了另一种统计信息的收集装置,请参见附图9,包括:

获取模块701,判断模块702,收集模块703;

其中,所述收集模块703包括:

第二获取单元7035,用于当所述预设收集策略为所述待收集统计信息的表为空表,且收集区域为分区时,获取oracle数据库的配置表;

第二判断单元7036,用于判断所述待收集统计信息的表的处理次数是否达到所述配置表的最大处理次数;

第三收集单元7037,用于若所述待收集统计信息的表的处理次数达到所述配置表的最大处理次数,收集所述待收集统计信息的表的分区的统计信息,以及所述分区所属的整表的统计信息,并将所述分区的统计信息和所述分区所属的整表的统计信息作为所述当前统计信息;

第四收集单元7038,用于若所述待收集统计信息的表的处理次数未达到所述配置表的最大处理次数,收集所述待收集统计信息的表的分区的统计信息,并将所述分区的统计信息作为所述当前统计信息。

本发明实施例所公开的一种统计信息的收集方法,通过在待收集统计信息的表满足预设收集条件,预设收集策略为待收集统计信息的表为空表,且收集区域为分区时,第二判断单元7036判断待收集统计信息的表的处理次数是否达到第二获取单元7035获取到的配置表中的最大处理次数,若达到,则第三收集单元7037收集待收集统计信息的表的分区的统计信息,以及该分区所属的整表的统计信息,作为当前统计信息,若未达到,则第四收集单元7038收集待收集统计信息的表的分区的统计信息,作为当前统计信息;可见,在预设收集策略为待收集统计信息的表为空表,且收集区域为分区时,将待收集统计信息的表的处理次数达到配置表的最大处理次数作为执行收集操作的依据,可以在待收集统计信息的表完成最后一次数据加工处理时,快速收集到最新的统计信息,进而确保了统计信息的实时性。

本发明实施例提供的各个模块的工作过程,请参照附图3所对应的方法流程图,具体工作过程不再赘述。

在上述附图7所对应实施例的基础上,本发明实施例公开了另一种统计信息的收集装置,请参见附图10,包括:

获取模块701,判断模块702,收集模块703;

其中,所述收集模块703包括:

第三获取单元7039,用于当所述预设收集策略为所述待收集统计信息的表为空表,且收集区域为整表时,获取oracle数据库的配置表;

第三判断单元70310,用于判断所述待收集统计信息的表的处理次数是否达到所述配置表的最大处理次数;

第五收集单元70311,用于若所述待收集统计信息的表的处理次数达到所述配置表的最大处理次数,收集所述待收集统计信息的表的整表的统计信息,并将所述整表的统计信息作为所述当前统计信息。

本发明实施例所公开的一种统计信息的收集装置,通过在待收集统计信息的表满足预设收集条件,预设收集策略为待收集统计信息的表为空表,且收集区域为整表时,第三判断单元70310判断待收集统计信息的表的处理次数是否达到第三获取单元7039获取到的配置表中的最大处理次数,若达到,则第五收集单元70311收集待收集统计信息的表的整表的统计信息,作为当前统计信息;可见,在预设收集策略为待收集统计信息的表为空表,且收集区域为整表时,将待收集统计信息的表的处理次数达到配置表的最大处理次数作为执行收集操作的依据,可以在待收集统计信息的表完成最后一次数据加工处理时,快速收集到整表的最新统计信息,进而确保了统计信息的实时性。

本发明实施例提供的各个模块的工作过程,请参照附图4所对应的方法流程图,具体工作过程不再赘述。

在上述附图7所对应实施例的基础上,本发明实施例公开了另一种统计信息的收集装置,请参见附图11,包括:

获取模块701,判断模块702,收集模块703;

其中,所述收集模块703包括:

第四获取单元70312,用于当所述预设收集策略为所述待收集统计信息的表为非空表,且收集区域为子分区时,获取oracle数据库的配置表;

第四判断单元70313,用于判断所述配置表中是否包含强制收集标识;

第六收集单元70314,用于若所述配置表中包含所述强制收集标识,收集所述待收集统计信息的表的子分区的统计信息,并将所述子分区的统计信息作为所述当前统计信息;

第五判断单元70315,用于若所述配置表中不包含所述强制收集标识,判断所述子分区的个数是否等于1;

第六判断单元70316,用于若所述子分区的个数等于1,根据所述配置表的识别信息,判断所述待收集统计信息的表的初始统计信息是否失效;

第七收集单元70317,用于若所述待收集统计信息的表的初始统计信息失效,收集所述待收集统计信息的表的子分区的统计信息,并将所述子分区的统计信息作为所述当前统计信息。

本发明实施例所公开的一种统计信息的收集装置,通过在待收集统计信息的表满足预设收集条件,预设收集策略为待收集统计信息的表为非空表,且收集区域为子分区时,第四判断单元70313判断配置表中是否包含强制收集标识,若包含,则第六收集单元70314收集待收集统计信息的表的子分区的统计信息,作为所述当前统计信息,若不包含,则在第五判断单元70315判断出子分区的个数等于1,且第六判断单元70316判断出待收集统计信息的表的初始统计信息失效后,第七收集单元70317收集待收集统计信息的表的子分区的统计信息,作为当前统计信息;可见,在预设收集策略为待收集统计信息的表为非空表,且收集区域为子分区时,将配置表中是否包含强制收集标识、收集区域中子分区的个数是否等于1,以及待收集统计信息的表的初始统计信息是否失效,作为执行收集操作的依据,可以准确判断出待收集统计信息的表的统计信息是否需要重新收集,以提高收集效率,确保统计信息的实时性。

本发明实施例提供的各个模块的工作过程,请参照附图5所对应的方法流程图,具体工作过程不再赘述。

在上述附图7所对应实施例的基础上,本发明实施例公开了另一种统计信息的收集装置,请参见附图12,包括:

获取模块701,判断模块702,收集模块703;

其中,所述收集模块703包括:

第五获取单元70318,用于当所述预设收集策略为所述待收集统计信息的表为非空表,且收集区域为分区时,获取oracle数据库的配置表;

第七判断单元70319,用于判断所述配置表中是否包含强制收集标识;

第八收集单元70320,用于若所述配置表中包含所述强制收集标识,收集所述待收集统计信息的表的分区的统计信息,并将所述分区的统计信息作为所述当前统计信息;

第八判断单元70321,用于若所述配置表中不包含所述强制收集标识,判断所述分区的个数是否等于1;

第九判断单元70322,用于若所述分区的个数等于1,根据所述配置表的识别信息,判断所述待收集统计信息的表的初始统计信息是否失效;

第九收集单元70323,用于若所述待收集统计信息的表的初始统计信息失效,收集所述待收集统计信息的表的分区的统计信息,并将所述分区的统计信息作为所述当前统计信息。

本发明实施例所公开的一种统计信息的收集装置,通过在待收集统计信息的表满足预设收集条件,预设收集策略为待收集统计信息的表为非空表,且收集区域为分区时,第七判断单元70319判断配置表中是否包含强制收集标识,若包含,则第八收集单元70320收集待收集统计信息的表的分区的统计信息,作为所述当前统计信息,若不包含,则在第八判断单元70321判断出分区的个数等于1,且第九判断单元70322判断出待收集统计信息的表的初始统计信息失效后,第九收集单元70323收集待收集统计信息的表的分区的统计信息,作为当前统计信息;可见,在预设收集策略为待收集统计信息的表为非空表,且收集区域为分区时,将配置表中是否包含强制收集标识、收集区域中分区的个数是否等于1,以及待收集统计信息的表的初始统计信息是否失效,作为执行收集操作的依据,可以准确判断出待收集统计信息的表的统计信息是否需要重新收集,以提高收集效率,确保统计信息的实时性。

本发明实施例提供的各个模块的工作过程,请参照附图6所对应的方法流程图,具体工作过程不再赘述。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1