一种关系型数据库基数估计处理方法、装置以及设备制造方法及图纸

技术编号:38102551 阅读:4 留言:0更新日期:2023-07-06 09:21
本说明书实施例公开了关系型数据库基数估计处理方法、装置以及设备。包括:确定指定的数据库表所包含的第一属性集合;根据第一属性集合内的属性之间的关联性,从第一属性集合内划分出多个属性子集合,包括子集合内属性关联性弱的第二属性子集合、子集合内属性关联性强且与第二属性子集合关联性强的第三属性子集合、子集合内属性关联性强且与其他属性子集合关联性弱的第四属性子集合;通过对第二属性子集合进行横向和/或纵向的切分,进行频率分布统计;从第三属性子集合内,划分出多个与第二属性子集合关联性相对弱的属性次级子集合,将属性次级子集合和第四属性子集合建模为多变量函数;根据频率分布统计结果和建模得到多变量函数,进行基数估计。进行基数估计。进行基数估计。

【技术实现步骤摘要】
一种关系型数据库基数估计处理方法、装置以及设备


[0001]本说明书涉及数据库
,尤其涉及一种关系型数据库基数估计处理方法、装置以及设备。

技术介绍

[0002]基数,指数据库表中满足查询条件的元组的数量。基数估计是查询优化器的重要组成部分。基数估计会被应用于基于代价的优化方案以及查询计划选择部分。目前的基数估计方案分为两大类:传统型基数估计与学习型基数估计。
[0003]传统型基数估计包括直方图、采样等方案。基于直方图的基数估计将数据划分为不同的桶,而后统计桶中样本出现的频率,并假设桶内数据均匀分布。基于采样的方案,使用不同的采样方式对数据进行采样,以采样到的数据作为总体数据的代表。
[0004]学习型基数估计可分为查询驱动与数据驱动两类。查询驱动的基数估计使用带标签的查询作为训练数据,使用MLP、LSTM、XGB树等作为其网络结构,典型代表有MSCN、E2E等。数据驱动的基数估计在独立性假设的前提下,使用数据库中的元组作为训练数据,捕获数据库中元组的分布以及属性间的依赖关系。数据驱动的基数估计依据其使用的模型可分为两大类:自回归模型及概率图模型。自回归模型使用自回归网络(MADE、ResMADE等)作为其网络结构,典型代表有Naru。概率图模型使用和积网络或贝叶斯网络作为其网络结构,典型代表有DeepDB、BayesCard等。
[0005]但是,目前的基数估计方案对数据关联性考虑不足,从而可能影响基数估计结果的准确性,进而会影响关系型数据库下选择查询计划或者优化方案的可靠性。/>
技术实现思路

[0006]本说明书一个或多个实施例提供一种关系型数据库基数估计处理方法、装置、设备以及存储介质,用以解决如下技术问题:目前的基数估计方案对数据关联性考虑不足,从而可能影响基数估计结果的准确性,进而会影响关系型数据库下选择查询计划或者优化方案的可靠性。
[0007]为解决上述技术问题,本说明书一个或多个实施例是这样实现的:
[0008]本说明书一个或多个实施例提供的一种关系型数据库基数估计处理方法,包括:
[0009]确定指定的数据库表所包含的第一属性集合;
[0010]根据所述第一属性集合内的属性之间的关联性,从所述第一属性集合内划分出多个属性子集合,其中包括子集合内属性关联性弱的第二属性子集合、子集合内属性关联性强且与所述第二属性子集合关联性强的第三属性子集合、子集合内属性关联性强且与其他属性子集合关联性弱的第四属性子集合;
[0011]通过对所述第二属性子集合进行横向和/或纵向的切分,进行频率分布统计;
[0012]从所述第三属性子集合内,划分出多个与所述第二属性子集合关联性相对弱的属性次级子集合,将所述属性次级子集合和所述第四属性子集合建模为多变量函数;
[0013]根据所述频率分布统计的结果,以及建模得到所述多变量函数,对所述指定的数据库表进行基数估计。
[0014]本说明书一个或多个实施例提供的一种关系型数据库基数估计处理装置,包括:
[0015]属性集合初确定模块,确定指定的数据库表所包含的第一属性集合;
[0016]属性集合再划分模块,根据所述第一属性集合内的属性之间的关联性,从所述第一属性集合内划分出多个属性子集合,其中包括子集合内属性关联性弱的第二属性子集合、子集合内属性关联性强且与所述第二属性子集合关联性强的第三属性子集合、子集合内属性关联性强且与其他属性子集合关联性弱的第四属性子集合;
[0017]弱关联集合处理模块,通过对所述第二属性子集合进行横向和/或纵向的切分,进行频率分布统计;
[0018]强关联集合处理模块,从所述第三属性子集合内,划分出多个与所述第二属性子集合关联性相对弱的属性次级子集合,将所述属性次级子集合和所述第四属性子集合建模为多变量函数;
[0019]数据库表基数估计模块,根据所述频率分布统计的结果,以及建模得到所述多变量函数,对所述指定的数据库表进行基数估计。
[0020]本说明书一个或多个实施例提供的一种关系型数据库基数估计处理设备,包括:
[0021]至少一个处理器;以及,
[0022]与所述至少一个处理器通信连接的存储器;其中,
[0023]所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
[0024]确定指定的数据库表所包含的第一属性集合;
[0025]根据所述第一属性集合内的属性之间的关联性,从所述第一属性集合内划分出多个属性子集合,其中包括子集合内属性关联性弱的第二属性子集合、子集合内属性关联性强且与所述第二属性子集合关联性强的第三属性子集合、子集合内属性关联性强且与其他属性子集合关联性弱的第四属性子集合;
[0026]通过对所述第二属性子集合进行横向和/或纵向的切分,进行频率分布统计;
[0027]从所述第三属性子集合内,划分出多个与所述第二属性子集合关联性相对弱的属性次级子集合,将所述属性次级子集合和所述第四属性子集合建模为多变量函数;
[0028]根据所述频率分布统计的结果,以及建模得到所述多变量函数,对所述指定的数据库表进行基数估计。
[0029]本说明书一个或多个实施例提供的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
[0030]确定指定的数据库表所包含的第一属性集合;
[0031]根据所述第一属性集合内的属性之间的关联性,从所述第一属性集合内划分出多个属性子集合,其中包括子集合内属性关联性弱的第二属性子集合、子集合内属性关联性强且与所述第二属性子集合关联性强的第三属性子集合、子集合内属性关联性强且与其他属性子集合关联性弱的第四属性子集合;
[0032]通过对所述第二属性子集合进行横向和/或纵向的切分,进行频率分布统计;
[0033]从所述第三属性子集合内,划分出多个与所述第二属性子集合关联性相对弱的属
性次级子集合,将所述属性次级子集合和所述第四属性子集合建模为多变量函数;
[0034]根据所述频率分布统计的结果,以及建模得到所述多变量函数,对所述指定的数据库表进行基数估计。
[0035]本说明书一个或多个实施例采用的上述至少一个技术方案能够达到以下有益效果:在处理属性级数据时,根据属性之间的关联性,将属性划分为多个内部关联性较强、部分与部分之间关联性较弱的部分与关联性较弱的部分,这样的划分结果更符合原数据的关联性结构,使得基数估计模型更能捕获属性间的关联度,模型的准确度更高,模型受关联性的影响更低,从而有助于获得更准确的基数估计结果,有助于提高选择查询计划或者优化方案的可靠性。
附图说明
[0036]为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种关系型数据库基数估计处理方法,包括:确定指定的数据库表所包含的第一属性集合;根据所述第一属性集合内的属性之间的关联性,从所述第一属性集合内划分出多个属性子集合,其中包括子集合内属性关联性弱的第二属性子集合、子集合内属性关联性强且与所述第二属性子集合关联性强的第三属性子集合、子集合内属性关联性强且与其他属性子集合关联性弱的第四属性子集合;通过对所述第二属性子集合进行横向和/或纵向的切分,进行频率分布统计;从所述第三属性子集合内,划分出多个与所述第二属性子集合关联性相对弱的属性次级子集合,将所述属性次级子集合和所述第四属性子集合建模为多变量函数;根据所述频率分布统计的结果,以及建模得到所述多变量函数,对所述指定的数据库表进行基数估计。2.如权利要求1所述的方法,所述确定指定的数据库表所包含的第一属性集合之前,所述方法还包括:确定指定的关系型数据库内的多张数据库表;根据所述多张数据库表之间的连接关系建立连接树,所述连接树中的各节点分别表示对应的数据库表,所述节点之间若存在边则表示对应的数据库表之间存在连接关系;确定所述节点之间的关联性是否足够强,若是,则将对应的节点进行合并;在所述合并后的连接树内指定节点,将所指定的节点表示的数据库表作为所述指定的数据库表。3.如权利要求2所述的方法,所述确定所述节点之间的关联性是否足够强,若是,则将对应的节点进行合并,具体包括:确定对两个所述节点分别表示的数据库表进行全外连接得到的全外连接表;从所述全外连接表内采集至少部分元组,确定所述分别表示的数据库表之间的随机依赖系数,以反映对应的两个节点之间的关联性;若所述随机依赖系数高于设定阈值,则将所述对应的两个节点进行合并,将所述全外连接表作为所述合并后得到的节点所表示的数据库表。4.如权利要求1所述的方法,所述根据所述第一属性集合内的属性之间的关联性,从所述第一属性集合内划分出多个属性子集合,具体包括:分别确定所述第一属性集合内的两两属性之间的关联性,将关联性足够强的两两属性划分至同一个属性子集合内;若所述第一属性集合内的属性,与已划分出的子集合内属性关联性足够强的属性子集合之间的关联性足够强,则将该属性合并入该属性子集合内,以此类推,得到划分完成的子集合内属性关联性足够强的多个属性子集合,根据所述多个属性子集合之间的关联性,区分得到所述第三属性子集合、所述第四属性子集合;将所述第一属性集合内剩余的属性划分至同一个属性子集合内,作为所述第二属性子集合。5.如权利要求1所述的方法,所述对所述第二属性子集合进行横向和纵向的切分,具体包括:通过针对所述第二属性子集合对应的元组进行聚类,将所述第二属性子集合横向切分
为多个属性次级子集合;判断所述属性次级子集合内的属性之间的关联性是否足够弱,若是,则对该属性次级子集合进行纵向切分,将所述属性划分开,以便对所述纵向切分后得到的仅包含单个属性的属性次级子集合进行频率分布统计。6.如权利要求1所述的方法,所述第三属性子集合有多个;所述从所述第三属性子集合内,划分出多个与所述第二属性子集合关联性相对弱的属性次级子集合,具体包括:从第一个第三属性子集合内,划分出多个与所述第二属性子集合关联性相对弱的属性次级子集合;从第二个第三属性子集合内,划分出多个与所述第二属性子集合和所述第一个第三属性子集合关联性相对弱的属性次级子集合;以此类推,完成对各第三属性子集合的划分,得到所述各第三属性子集合分别对应的属性次级子集合。7.如权利要求1所述的方法,所述将所述属性次级子集合和所述第四属性子集合建模为多变量函数,具体包括:将包含多个属性的各所述属性次级子集合,以及包含多个属性的所述第四属性子集合分别建模为多变量函数。8.如权利要求1所述的方法,还包括:以所述第一属性集合作为属性根节点,根据将所述第一属性集合划分为多个所述属性子集合,以及将至少部分所述属性子集合划分为所述属性次级子集合的划分层次,建立相应的属性连接树;所述对所述指定的数据库表进行基数估计,具体包括:对所述属性连接树自底向上地确定并迭代各节点的估计结果直至所述属性根节点,输出对所述指定的数据库表的基数估计结果。9.如权利要求8所述的方法,所述迭代各节点的估计结果,具体包括:对于同一个节点的下一层子节点,若所述下一层子节点包含的属性相同,则通过将所述下一层子节点分别的估计结果相加,得到所述同一个节点的估计结果,若所述下一层子节点包含的属性不同,则通过将所述下一层子节点分别的估计结果相乘,得到所述同一个节点的估计结果。10.如权利要求8或9所述的方法,所述对所述属性连接树自底向上地确定并迭代各节点的估计结果直至所述属性根节点之前,所述方法还包括:设定所述属性连接树中的属性关联性足够弱的叶节点之间条件独立。11.一种关系型数据库基数估计处理装置,包括:属性集合初确定模块,确定指定的数据库表所包含的第一属性集合;属性集合再划分模块,根据所述第一属性集合内的属性之间的关联性,从所述第一属性集合内划分出多个属性子集合,其中包括子集合内属性关联性弱的第二属性子集合、子集合内属性关联性强且与所述第二属性子集合关联性强的第三属性子集合、子集合内属性关联性强且与其他属性子集合关...

【专利技术属性】
技术研发人员:巩李成徐泉清聂铁铮杨传辉申德荣
申请(专利权)人:北京奥星贝斯科技有限公司
类型:发明
国别省市:

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

1