一种统计信息的收集方法及装置制造方法及图纸

技术编号:19480123 阅读:25 留言:0更新日期:2018-11-17 10:32
本申请提供了一种统计信息的收集方法及装置,通过在接收到数据加工完成指令时,获取待收集统计信息的表,并判断待收集统计信息的表是否满足预设收集条件,若满足,则按照预设收集策略,收集该待收集统计信息的表的当前统计信息,以实现每次对Oracle数据库中的表进行了数据加工处理后,及时对Oracle数据库中统计信息进行即时更新;可见,在接收到数据加工完成指令,且判断出待收集统计信息的表满足预设收集条件时,及时对待收集统计信息的表的最新统计信息进行收集,能够确保CBO进行SQL执行路径计算所采用的统计信息始终为最新的统计信息,进而保证了计算出的SQL执行路径为最优路径,提高了SQL的执行效率。

【技术实现步骤摘要】
一种统计信息的收集方法及装置
本专利技术涉及数据库统计信息收集领域,更具体的说,是涉及一种统计信息的收集方法及装置。
技术介绍
在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数据库的配置表;第一判断单元,用于判断所述待收集统计信息的表的处理次数是否达到所述配置表的最大处理次数;第一收集单元,用于若所述待收集统计信息的表的处理次数达到所述配置表的最大处理次数,收集所述待收集统计信息的表的子分区的统计信息,以及所述子分区所属的分区的统计信息,并将所述子分区的统计信息和所述子分区所属的分区的统计信息作为所述当前统计信息;第二收集单元,用于若所述待收集统计信息的表的处理次数未达到所本文档来自技高网...

【技术保护点】
1.一种统计信息的收集方法,其特征在于,包括:在接收到数据加工完成指令时,获取待收集统计信息的表;判断所述待收集统计信息的表是否满足预设收集条件,所述预设收集条件为所述待收集统计信息的表不为临时表,且所述待收集统计信息的表的统计信息未被锁定;若所述待收集统计信息的表满足所述预设收集条件,按照预设收集策略,收集所述待收集统计信息的表的当前统计信息。

【技术特征摘要】
1.一种统计信息的收集方法,其特征在于,包括:在接收到数据加工完成指令时,获取待收集统计信息的表;判断所述待收集统计信息的表是否满足预设收集条件,所述预设收集条件为所述待收集统计信息的表不为临时表,且所述待收集统计信息的表的统计信息未被锁定;若所述待收集统计信息的表满足所述预设收集条件,按照预设收集策略,收集所述待收集统计信息的表的当前统计信息。2.根据权利要求1所述的收集方法,其特征在于,所述预设收集策略包括:所述待收集统计信息的表为空表,且收集区域为子分区;所述待收集统计信息的表为空表,且收集区域为分区;所述待收集统计信息的表为空表,且收集区域为整表;所述待收集统计信息的表为非空表,且收集区域为子分区;所述待收集统计信息的表为非空表,且收集区域为分区;其中,所述子分区属于所述分区,所述分区属于所述整表。3.根据权利要求2所述的收集方法,其特征在于,当所述预设收集策略为所述待收集统计信息的表为空表,且收集区域为子分区时,所述按照预设收集策略,收集所述待收集统计信息的表的当前统计信息,包括:获取Oracle数据库的配置表;判断所述待收集统计信息的表的处理次数是否达到所述配置表的最大处理次数;若所述待收集统计信息的表的处理次数达到所述配置表的最大处理次数,收集所述待收集统计信息的表的子分区的统计信息,以及所述子分区所属的分区的统计信息,并将所述子分区的统计信息和所述子分区所属的分区的统计信息作为所述当前统计信息;若所述待收集统计信息的表的处理次数未达到所述配置表的最大处理次数,收集所述待收集统计信息的表的子分区的统计信息,并将所述子分区的统计信息作为所述当前统计信息。4.根据权利要求2所述的收集方法,其特征在于,当所述预设收集策略为所述待收集统计信息的表为空表,且收集区域为分区时,所述按照预设收集策略,收集所述待收集统计信息的表的当前统计信息,包括:获取Oracle数据库的配置表;判断所述待收集统计信息的表的处理次数是否达到所述配置表的最大处理次数;若所述待收集统计信息的表的处理次数达到所述配置表的最大处理次数,收集所述待收集统计信息的表的分区的统计信息,以及所述分区所属的整表的统计信息,并将所述分区的统计信息和所述分区所属的整表的统计信息作为所述当前统计信息;若所述待收集统计信息的表的处理次数未达到所述配置表的最大处理次数,收集所述待收集统计信息的表的分区的统计信息,并将所述分区的统计信息作为所述当前统计信息。5.根据权利要求2所述的收集方法,其特征在于,当所述预设收集策略为所述待收集统计信息的表为空表,且收集区域为整表时,所述按照预设收集策略,收集所述待收集统计信息的表的当前统计信息,包括:获取Oracle数据库的配置表;判断所述待收集统计信息的表的处理次数是否达到所述配置表的最大处理次数;若所述待收集统计信息的表的处理次数达到所述配置表的最大处理次数,收集所述待收集统计信息的表的整表的统计信息,并将所述整表的统计信息作为所述当前统计信息。6.根据权利要求2所述的收集方法,其特征在于,当所述预设收集策略为所述待收集统计信息的表为非空表,且收集区域为子分区时,所述按照预设收集策略,收集所述待收集统计信息的表的当前统计信息,包括:获取Oracle数据库的配置表;判断所述配置表中是否包含强制收集标识;若所述配置表中包含所述强制收集标识,收集所述待收集统计信息的表的子分区的统计信息,并将所述子分区的统计信息作为所述当前统计信息;若所述配置表中不包含所述强制收集标识,判断所述子分区的个数是否等于1;若所述子分区的个数等于1,根据所述配置表的识别信息,判断所述待收集统计信息的表的初始统计信息是否失效;若所述待收集统计信息的表的初始统计信息失效,收集所述待收集统计信息的表的子分区的统计信息,并将所述子分区的统计信息作为所述当前统计信息。7.根据权利要求2所述的收集方法,其特征在于,当所述预设收集策略为所述待收集统计信息的表为非空表,且收集区域为分区时,所述按照预设收集策略,收集所述待收集统计信息的表的当前统计信息,包括:获取Oracle数据库的配置表;判断所述配置表中是否包含强制收集标识;若所述配置表中包含所述强制收集标识,收集所述待收集统计信息的表的分区的统计信息,并将所述分区的统计信息作为所述当前统计信息;若所述配置表中不包含所述强制收集标识,判断所述分区的个数是否等于1;若所述分区的个数等于1,根据所述配置表的识别信息,判断所述待收集统计信息的表的初始统计信息是否失效;若所述待收集统计信息的表的初始统计信息失效,收集所述待收集统计信息的表的分区的统计信息,并将所述分区的统计信息作为所述当前统计信息。8.一种统计信息的收集装置,其特征在于,包括:获取模块,用于在接收到数据加工完成指令时,获取待收集统计...

【专利技术属性】
技术研发人员:裴炜裕易金华黄志鸿雷立动廖旺胜
申请(专利权)人:中国银行股份有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1