一种基于查询日志的数据库统计数据直方图生成方法

文档序号:6651757阅读:321来源:国知局
专利名称:一种基于查询日志的数据库统计数据直方图生成方法
技术领域
本发明涉及一种利用查询日志中所包含的查询结果行数信息进行数据库直方图 统计信息生成的方法。
背景技术
在数据库系统中,如何有效地生成准确的关于数据分布的统计信息是一个十分重 要的基础问题。这些信息被查询优化器用来估计查询计划中相关算子的选择度,估计其执 行代价,并选择最优的执行计划。如果统计数据出现误差,误差会在查询计划中呈指数级扩 散,导致实际执行的查询计划的性能急剧降低。直方图是最普遍的用来描述数据分布的手 段,在目前的商业数据库中被广泛采用。构建直方图需要对原始数据进行扫描或者抽样,对 数据排序并且形成合适的桶分区。对于大规模的数据库来讲,构建和维护直方图的代价却 是非常高昂的,对于多维直方图更是如此。在数据库查询日志中记录着每个查询结果的行数,利用这些信息可以推算数据分 布。在已有的利用查询日志进行直方图生成的方法中,都是采用增量式更新的方式,也即逐 个采用查询来修正直方图,由于缺乏优化目标函数定义,导致所生成的直方图的误差比较 大,同时随着查询的逐次到来,需要频繁调整直方图(合并或分裂)。

发明内容
本发明提出一种直方图生成方法,该方法基于数据库查询日志关于查询结果行数 的信息,利用最大熵思想,推导出数据密度分布,并以直方图形式表示出来。本发明方法的原理是对于一个查询Q,假定其属性形如< A < ,其结果行数 为RCnt,那么就可以知道在属性A的[a1; a2]区间的数据分布密度是P = RCnt/( - )。 如果有两个查询Q1和Q2,其属性分别为a1<A<a2,b1<A< b2,其结果行数分别为RCnt1, RCnt2,整个区间[^vbtl]总的行数为RCn、。各区间密度如图6所示,得到如下约束条件Oo1-Ei1) X P !+(B^b1) Xp2 = RCnt1(b2-a2) Xp3+ (B^b1) Xp2 = RCnt2(ara0) Xp0+ (Vei1) Xp1+ (Ei2Hd1) Xp2+ (b0_b2) Xp0 = RCnt0现有的约束条件不足以准确解出每个P的值,换言之,满足上述条件的P值可 以有无穷个,只能推断最可能出现的那种情况。按照最大熵的思想,就是在一切不确定中, 使得熵最大的状态是最可能出现的,而越均勻则熵越大。为此,定义目标函数,使得在满足 上述约束的情况下各个密度尽可能接近,也即使得下式最小Σ (Pi-P P2。利用最小二乘 法求解上式,得到每个区间的密度值,由于区间的数目非常多,合并密度差距过小的相邻区 间,再给出最终区间密度的直方图表示。本发明采用的技术方案如下一种基于查询日志的数据库统计数据直方图生成方法,包括以下步骤1)从数据库查询日志中提取查询集合,每个查询对应一个属性,将属性集的左右边界值构成一个数组;2)对数组进行排序,生成相邻点对构成的基本区间;3)对不同属性上的区间取笛卡尔积,结果称之为一个立方体;4)根据每个查询包含的结果行数与立方体的笛卡尔积,得到立方体的密度值;5)根据立方体的密度值生成直方图。所述步骤4)判断查询和立方体的覆盖关系,如果某一查询包含对应的立方体,即 查询覆盖立方体,将查询覆盖的立方体进行合并。所述步骤4)令每个立方体Cj的密度为Pj,体积为Sj, 1≤j≤(2n+l) dO每个查询Qi返回的元组数目为RCnti, 1 < i < n,满足如下的约束条件
权利要求
1.一种基于查询日志的数据库统计数据直方图生成方法,包括以下步骤1)从数据库查询日志中提取查询集合,每个查询对应一个属性,将属性集的左右边界 值构成一个数组;2)对数组进行排序,生成相邻点对构成的基本区间;3)对不同属性上的区间取笛卡尔积,结果称之为一个立方体;4)根据每个查询包含的结果行数与立方体的笛卡尔积,得到立方体的密度值;5)根据立方体的密度值生成直方图。
2.如权利要求1所述的方法,其特征在于,所述步骤4)判断查询和立方体的覆盖关系, 如果某一查询包含对应的立方体,即查询覆盖立方体,将查询覆盖的立方体进行合并。
3.如权利要求1所述的方法,其特征在于,所述步骤4)令每个立方体(^.的密度为Pj, 笛卡尔积为I,1彡j彡(2n+l)d,每个查询A包含的结果行数为RCnti, 1彡i彡n,满足如(2n+\)d下的约束条件
4.如权利要求3所述的方法,其特征在于,定义目标函数F:
5.如权利要求4所述的方法,其特征在于,利用最小二乘法求解目标函数,得到每个立 方体的密度值。
6.如权利要求1所述的方法,其特征在于,所述步骤5)在得到立方体的密度值后,根据 立方体的密度值,描绘一个立方体柱,代表这个空间的分布密度,生成直方图。
7.如权利要求1所述的方法,其特征在于,将相邻立方体密度差最小的两个进行合并, 直到合并后的立方体个数满足要求。
全文摘要
本发明提供一种基于查询日志的数据库统计数据直方图生成方法,包括以下步骤1)从数据库查询日志中提取查询集合,每个查询对应一个属性,将属性集的左右边界值构成一个数组;2)对数组进行排序,生成相邻点对构成的基本区间;3)对不同属性上的区间取笛卡尔积,结果称之为一个立方体;4)根据每个查询包含的结果行数与立方体的笛卡尔积,得到立方体的密度值;5)根据立方体的密度值生成直方图。本发明的方法基于数据库查询日志生成直方图,克服了传统数据库系统通过扫描原始数据生成直方图的代价过高的问题,以及现有利用查询日志进行增量式直方图生成方法的误差过大的问题。
文档编号G06F17/30GK102103638SQ201110034159
公开日2011年6月22日 申请日期2011年1月31日 优先权日2010年2月1日
发明者卢阳, 汪罕, 王潇, 陈立军 申请人:北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1