提高数据库中数据对象统计信息可靠性的方法及装置制造方法及图纸

技术编号:5212614 阅读:326 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种提高数据库中数据对象统计信息可靠性的方法及装置,接收数据对象,根据接收的数据对象信息以及预先存储的数据对象信息,获取数据对象绝对改变量以及数据对象相对改变量,并存储该接收的数据对象以及数据对象名称;判断累计的数据对象绝对改变量以及数据对象相对改变量是否超过预先设定的数据对象改变量阈值,如果是,调用预先设定的分析策略,对数据库中存储的数据对象进行可靠性扫描,获取与存储的数据对象名称相同的数据对象;调用分析程序对获取的数据对象进行处理,获取数据对象统计信息并更新存储数据对象统计信息的系统基表。应用本发明专利技术,可以降低数据库维护成本、提高数据库中数据对象统计信息的查询命中率。

【技术实现步骤摘要】

本专利技术涉及数据库技术,特别涉及一种提高数据库中数据对象统计信息可靠性的方法及装置
技术介绍
现在的数据库,无论是用于数据仓库或操作数据存储,都包含丰富的海量数据对象信息,因而,一方面,及时查找和展示用户需要的信息是一个巨大的挑战,另一方面,从海量数据信息中查找得到的信息的可靠性(数据库查询质量)对于用户以及数据库运营商来说也很重要。以下以目前应用广泛的oracle数据库为例,对查询过程作简要介绍。图1为现有oracle数据库中结构化查询语言(SQL,Structured QueryLanguage)语句的执行流程示意图,参见图1,该流程包括:步骤101,接收用户输入的SQL语句,进行语法语义检查(syntax check);本步骤中,检查此SQL语句的拼写是否符合语法,访问对象是否存在及该进行查询的用户是否具备相应的权限等。SQL语句分为数据定义语言(DDL,Data Define Language)语句和数据操作语言(DML,Data Manipulation Language)语句。其中,DML语句操作针对逻辑量,DDL操作针对物理量,详细描述可参见相关技术文献,在此不再赘述。步骤102,oracle数据库利用内部预先存储的算法对SQL语句进行解析(prase),生成解析树(parse tree),根据解析树生成执行计划;本步骤中,生成的执行计划包括表或索引的访问方式等。实际应用中,步骤102生成的执行计划的好坏(质量高低)直接决定了SQL语句执行效率的高低,而执行计划基本由基于成本的优化器(CBO,Cost-based Optimizer)根据解析得到的解析树中参数查询数据库系统基表中预先存储的数据对象统计信息,选择代价最小的访问路径,根据访问路径找到相应的数据对象,并将该数据对象信息返回给用户;如果根据得到的解析树中参数查询不到数据库系统基表中预先存储的数据对象统计信息,则从数据对象库存储的数据对象中逐个查询,直到获取该参数对应的数据对象并将该数据对象信息返回给用户,其中,系统基表存储的数据对象统计信息用于数据对象库存储的数据对象的索引或访问路径。根据CBO优化规则,为了能对应用SQL语句进行解析,产生准确高效的执行计划,oracle数据库从系统基表中获取相关数据库底层的数据对象统计信息,该统计信息是由最近一次对数据对象进行分析时记录在系统基表。因而,在该分析后,如果对oracle数据库中数据对象进行了操作并改变了该数据对象统计信息,则在查询时将导致系统基表中存储的该数据对象统计信息不可用。因此,数据库底层数据对象统计信息可靠性的高低,将直接影响CBO产生执行计划的好坏。当前oracle数据库系统中,一般通过以下两种技术方案来实现数据对象统计信息的可靠性。-->技术方案一:以时间维度为衡量标准,按照一定的时间间隔(每日、每周、每月等),制定oracle数据库的定时分析作业,在时间间隔到时,对数据库中存储的数据对象按照分析策略进行分析,获取相应的数据对象统计信息并对系统基表中存储的数据对象统计信息进行更新以保障查询时数据对象统计信息的相对准确。该以时间维度为衡量标准的技术方案适用于结构简单的单一型oracle数据库,其应用类型相对简单,数据库规模较小,无数据量激变。该技术方案应用较为广泛,是统计信息时效性的理论基础。但该技术方案使用定时分析技术,随着oracle数据库复杂度的增加,在不同类型的对象数据变化趋势差异明显的情况下,无法制定对所有对象数据均适用的时间间隔,使得系统基表中存储的数据对象统计信息得不到及时的更新,因而,在技术方案一的基础上,提出了下述技术方案二。技术方案二:结合实际应用,根据数据对象业务逻辑的不同,以oracle数据库中具体业务数据的变化趋势及业务数据绝对变化量等为标准,对各个数据对象,有针对性的制定分析策略。例如,以oracle数据库中业务数据每增加100W条记录为标准,对oracle数据库分析一次,获取相应的数据对象统计信息并更新系统基表。该技术方案在技术方案一的基础上,结合应用业务数据的变化趋势进行分析,适用于应用类型相对复杂但系统规模相对较小(数据对象相对较少)的oracle数据库。通过对不同业务类型的数据对象,设计不同的业务数据绝对变化量,并定制不同的数据对象分析策略分析相应的数据对象,来保证各数据对象统计信息的相对及时更新以及查询时的相对准确。步骤103,oracle数据库根据执行计划执行SQL语句查询并返回查询结果。如前所述,oracle数据库首先查询系统基表,判断系统基表中是否存储有SQL语句对应的数据对象统计信息,如果是,获取数据对象访问路径,根据访问路径找到相应的数据对象;否则,从存储的数据对象库中逐个查询,直到获取该SQL语句对应的数据对象。由上述可见,现有的oracle数据库,在数据对象较少的情况下,通过定期或根据数据对象绝对变化量,对系统基表存储的数据对象统计信息进行更新,可以保障各数据对象统计信息的相对准确以及查询的命中率,从而有效降低了查询所需的时间。但随着信息技术的迅猛发展,oracle数据库系统需要处理的业务数据量、信息量越来越庞大,应用oracle数据库系统的结构设计越来越复杂,oracle数据库规模也随之与日俱增的情况下,基于数据对象业务逻辑的差异制定的业务数据绝对变化量等标准,如果预先设定的业务数据绝对变化量较小,则需要频繁更新,系统资源消耗大,维护成本高;如果预先设定的业务数据绝对变化量较大,当oracle数据库发生变化时,例如,将新的数据对象加入到oracle数据库中,或者对原有oracle数据库中的数据对象进行操作使其对应的数据对象统计信息发生变化,这时,由于无法保证及时对系统基表进行更新,容易造成信息疏漏及索引不正确,oracle数据库根据该未更新的系统基表对用户输入的信息进行查询,查询命中率低,数据对象统计信息可靠性低,增加了查询所需的时间。-->
技术实现思路
有鉴于此,本专利技术的主要目的在于提出一种提高数据库中数据对象统计信息可靠性的方法,降低数据库维护成本、提高数据库中数据对象统计信息的查询命中率。本专利技术的另一目的在于提出一种提高数据库中数据对象统计信息可靠性的装置,降低数据库维护成本、提高数据库中数据对象统计信息的查询命中率。为达到上述目的,本专利技术提供了一种提高数据库中数据对象统计信息可靠性的方法,该方法包括:A、接收数据对象,根据接收的数据对象信息以及预先存储的数据对象信息,获取数据对象绝对改变量以及数据对象相对改变量,并存储该接收的数据对象以及数据对象名称;B、判断累计的数据对象绝对改变量以及数据对象相对改变量是否超过预先设定的数据对象改变量阈值,如果是,执行C,否则,返回执行步骤A;C、调用预先设定的分析策略,对数据库中存储的数据对象进行可靠性扫描,获取与存储的数据对象名称相同的数据对象;D、调用分析程序对获取的数据对象进行处理,获取数据对象统计信息并更新存储数据对象统计信息的系统基表。所述数据对象相对改变量为自数据库上一次更新后发生变化的数据对象绝对改变量与数据库上一次更新时存储的数据对象量的比值。所述数据对象相对改变量包括:相对物理改变量和相对逻辑改变量;所述数据对象绝对改变量包括:绝对物理改变本文档来自技高网
...

【技术保护点】
一种提高数据库中数据对象统计信息可靠性的方法,其特征在于,该方法包括:A、接收数据对象,根据接收的数据对象信息以及预先存储的数据对象信息,获取数据对象绝对改变量以及数据对象相对改变量,并存储该接收的数据对象以及数据对象名称;B、判断累计的数据对象绝对改变量以及数据对象相对改变量是否超过预先设定的数据对象改变量阈值,如果是,执行C,否则,返回执行步骤A;C、调用预先设定的分析策略,对数据库中存储的数据对象进行可靠性扫描,获取与存储的数据对象名称相同的数据对象;D、调用分析程序对获取的数据对象进行处理,获取数据对象统计信息并更新存储数据对象统计信息的系统基表。

【技术特征摘要】
1.一种提高数据库中数据对象统计信息可靠性的方法,其特征在于,该方法包括:A、接收数据对象,根据接收的数据对象信息以及预先存储的数据对象信息,获取数据对象绝对改变量以及数据对象相对改变量,并存储该接收的数据对象以及数据对象名称;B、判断累计的数据对象绝对改变量以及数据对象相对改变量是否超过预先设定的数据对象改变量阈值,如果是,执行C,否则,返回执行步骤A;C、调用预先设定的分析策略,对数据库中存储的数据对象进行可靠性扫描,获取与存储的数据对象名称相同的数据对象;D、调用分析程序对获取的数据对象进行处理,获取数据对象统计信息并更新存储数据对象统计信息的系统基表。2.如权利要求1所述的方法,其特征在于,所述数据对象相对改变量为自数据库上一次更新后发生变化的数据对象绝对改变量与数据库上一次更新时存储的数据对象量的比值。3.如权利要求2所述的方法,其特征在于,所述数据对象相对改变量包括:相对物理改变量和相对逻辑改变量;所述数据对象绝对改变量包括:绝对物理改变量、绝对逻辑改变量和结构改变量。4.如权利要求3所述的方法,其特征在于,所述相对逻辑改变量包括:插入相对改变量、更新相对改变量以及删除相对改变量;所述相对物理改变量包括:数据对象块相对改变量;所述绝对物理改变量包括:数据对象块绝对改变量;所述绝对逻辑改变量包括:插入绝对改变量以及删除绝对改变量;所述结构改变量为对系统基表执行增加/删除/修改字段操作以及添加新的索引信息导致的数据结构改变。5.如权利要求4所述的方法,其特征在于,所述插入相对改变量为自上次进行数据对象分析后,对数据对象进行插入操作的记录数与总的记录数的比值;所述更新相对改变量为自上次进行数据对象分析后,对数据库中原有数据对象进行更新操作的记录数与总的记录数的比值;所述删除相对改变量为自上次进行数据对象分析后,对数据库中原有数据对象进行删除操作的记录数与总的记录数的比值;所述数据对象块相对改变量为自上次进行数据对象分析后,数据对象块大小改变量与数据库中数据对象块总大小的比值。6.如权利要求5所述的方法,其特征在于,所述数据对象改变量阈值包括:数据对象绝对改变量阀值和数据对象相对改变量阀值;所述判断累计的数据对象绝对改变量以及数据对象相对改变量是否超过预先设定的数据对象改变量阈值包括:判断累计的数据对象绝对改变量是否超过预先设定的数据对象绝对改变量阈值、且累计的数据对象相对改变量是否超过预先设定的数据对象相对改变量阈值。7.如权利要求6所述的方法,其特征在于,所述判断累计的数据对象绝对改变量以及数据对象相对改...

【专利技术属性】
技术研发人员:王晓征肖爱元李杰毅
申请(专利权)人:中国移动通信集团浙江有限公司
类型:发明
国别省市:86[中国|杭州]

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

1