当前位置: 首页 > 专利查询>宁夏大学专利>正文

基于因果推理的数据库基数估计方法、设备及存储介质技术

技术编号:38379044 阅读:8 留言:0更新日期:2023-08-05 17:38
本发明专利技术提供一种基于因果推理的数据库基数估计方法、设备及存储介质,属于数据库领域查询优化技术领域。包括:将查询集

【技术实现步骤摘要】
基于因果推理的数据库基数估计方法、设备及存储介质


[0001]本专利技术涉及数据库领域查询优化
,尤其涉及一种基于因果推理的数据库基数估计方法、设备及存储介质。

技术介绍

[0002]基数估计是数据库管理系统查询优化器的核心。基数估计为优化器提供查询可能返回的行数,从而引导优化器选择最佳的查询计划,并直接影响甚至决定查询效率。现有技术提出基于直方图的基数估计方法,通过直方图对数据分布进行近似表示,但需要假设数据列间分布独立,进而利用概率乘法进行基数估计。该方法优点在于能够进行快速计算,但需要依赖于属性值独立性假设,并且不能捕捉多列之间的相关性。

技术实现思路

[0003]有鉴于此,本专利技术提供一种基于因果推理的数据库基数估计方法、设备及存储介质,通过因果推理模型提升基数估计准确度,提升基数估计效率。
[0004]本专利技术实施例解决其技术问题所采用的技术方案是:
[0005]一种基于因果推理的数据库基数估计方法,包括:
[0006]步骤S1,将查询集

中每一个查询通过SQL命令explain analyze打印成对应的物理计划树,然后将各个所述物理计划树规范化,并将所得的规范化记录存储至集合Δ',其中,所述查询集

中所有所述查询所需调用的表的范围覆盖数据库所有的表,所述查询集

中所有所述查询所需调用的表属性的范围覆盖数据库所有的表属性,所述规范化记录包含所述查询的物理计划树标识、所述物理计划树中各个物理算子的算子标识;
[0007]步骤S2,基于所述集合Δ'中各所述规范化记录构造素材图G
final
,其中,所述素材图G
final
中的顶点用于表示物理算子、边用于表示两端物理算子之间的关系,所述素材图G
final
中具有相同算子属性的两个物理算子之间的边为双向边,所述算子属性包括表及表属性;
[0008]步骤S3,将所述素材图G
final
中的顶点变量化,得到因果概率图G
prob

[0009]步骤S4,利用所述因果概率图G
prob
对给定的新查询进行因果式基数估计。
[0010]较优地,所述步骤S1将查询集

中每一个查询通过SQL命令explain analyze打印成对应的物理计划树,然后将各个所述物理计划树规范化,并将所得的规范化记录存储至集合Δ'包括:
[0011]步骤S11,利用SQL命令explain analyze,将所述查询集

中每一个所述查询打印成对应的物理计划树;
[0012]步骤S12,将各个所述物理计划树规范化,其中,单个所述物理计划树规范化所得所述结果记作:
[0013](Qid,{oid({t},{col},p,c1,c2)},{(oid
i
,oid
j
)})
[0014]其中,Qid为所述物理计划树的唯一标识,{oid({t},{col},{p},c1,c2)}表示所述
物理计划树中的算子集合,所述算子集合中的单个物理算子oid({t},{col},{p},c1,c2)用于表示所述物理计划树中的节点,oid({t},{col},{p},c1,c2)中,oid为物理算子的唯一标识,{t}、{col}为物理算子隶属的表集合和表属性集合,c1表示通过数据库本身的基数估计方法得到的基数,c2表示利用explain analyze所得的真实基数,{p}表示谓词集合;对于叶子算子,{t}中包含1个表,{col}中包含1个列;对于连接算子,{t}中最多包含2个表,{col}中最多包含2个列;{(oid
i
,oid
j
)}为算子关系集合,(oid
i
,oid
j
)表示所述物理计划树中算子i与算子j之间具有连接关系,单个子树中最多具有2个叶子算子;
[0015]步骤S13,将生成的所述规范化记录存储至所述集合Δ';
[0016]较优地,所述步骤S2基于所述集合Δ'中各所述规范化记录构造素材图G
final
包括:
[0017]步骤S21,首先取出Δ'中第一个元素(Qid,{oid({t},{col},p,c1,c2)},{(oid
i
,oid
j
)})转换为成第一有向无环图作为初始素材图G
sed
,其中,转换方式是将{(oid
i
,oid
j
)}转换为{<oid
i
,oid
j
>},使所述算子i所在顶点指向所述算子j所在顶点,此时,所述G
sed
中的叶子顶点入度为0、中间顶点入度不为0;
[0018]步骤S22,取出Δ'中第二个元素对所述G
sed
进行扩展,将所述第二个元素按照步骤S21方式转换为第二有向无环图加入至所述G
sed
,再将所述第二有向无环图中各叶子顶点与所述G
sed
中各原有顶点进行适配,并在适配成功的两个顶点之间建立双向边;
[0019]步骤S23,按照Qid值排列顺序依次取出Δ'中的元素执行步骤S22的扩展操作直至、最后一个元素取用完毕,最终所得图为所述素材图G
final

[0020]较优地,所述步骤S22,取出Δ'中第二个元素对所述G
sed
进行扩展包括:
[0021]步骤S221,将所述第二个元素记为D
C
,按照步骤S21方式转换为所述第二有向无环图、并以独立子图的形式加入至所述G
sed
中,其中,所述第二有向无环图中的叶子顶点记为
[0022]步骤S222,顺序遍历所述第二有向无环图的各叶子顶点并基于所述G
sed
进行顶点适配,其中,按照层次顺序遍历所述G
sed
寻找适配叶子顶点的顶点,适配条件为具有相同的{t}和{col};
[0023]步骤S223,若找到所述叶子顶点的适配顶点,则结束遍历所述G
sed
,在所述叶子顶点与所述适配顶点之间建立一条双向边;
[0024]步骤S224,若遍历所述G
sed
完毕后未能找到所述叶子顶点的适配顶点,则继续遍历所述第二有向无环图,直至所述第二有向无环图中的所有叶子顶点遍历结束。
[0025]较优地,所述步骤S3将所述素材图G
final
中的顶点变量化,得到因果概率图G
prob
包括:
[0026]步骤S31,遍历G
final
中的各个连接于双向边的顶点,构造各连接于双向边的顶点的初始的<m
x
,q本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于因果推理的数据库基数估计方法,其特征在于,包括:步骤S1,将查询集Δ中每一个查询通过SQL命令explain analyze打印成对应的物理计划树,然后将各个所述物理计划树规范化,并将所得的规范化记录存储至集合Δ

,其中,所述查询集Δ中所有所述查询所需调用的表的范围覆盖数据库所有的表,所述查询集Δ中所有所述查询所需调用的表属性的范围覆盖数据库所有的表属性,所述规范化记录包含所述查询的物理计划树标识、所述物理计划树中各个物理算子的算子标识;步骤S2,基于所述集合Δ

中各所述规范化记录构造素材图G
final
,其中,所述素材图G
final
中的顶点用于表示物理算子、边用于表示两端物理算子之间的关系,所述素材图G
final
中具有相同算子属性的两个物理算子之间的边为双向边,所述算子属性包括表及表属性;步骤S3,将所述素材图G
final
中的顶点变量化,得到因果概率图G
prob
;步骤S4,利用所述因果概率图G
prob
对给定的新查询进行因果式基数估计。2.如权利要求1所述的基于因果推理的数据库基数估计方法,其特征在于,所述步骤S1将查询集Δ中每一个查询通过SQL命令explain analyze打印成对应的物理计划树,然后将各个所述物理计划树规范化,并将所得的规范化记录存储至集合Δ

包括:步骤S11,利用SQL命令explain analyze,将所述查询集Δ中每一个所述查询打印成对应的物理计划树;步骤S12,将各个所述物理计划树规范化,其中,单个所述物理计划树规范化所得所述结果记作:(Qid,{oid({t},{col},{p},c1,c2)},{(oid
i
,oid
j
)})其中,Qid为所述物理计划树的唯一标识,{oid({t},{col},{p},c1,c2)}表示所述物理计划树中的算子集合,所述算子集合中的单个物理算子oid({t},{col},{p},c1,c2)用于表示所述物理计划树中的节点,oid({t},{col},{p},c1,c2)中,oid为物理算子的唯一标识,{t}、{col}为物理算子隶属的表集合和表属性集合,c1表示通过数据库本身的基数估计模型得到的基数,c2表示利用explain analyze所得的真实基数,{p}表示谓词集合;对于叶子算子,{t}中包含1个表,{col}中包含1个列;对于连接算子,{t}中最多包含2个表,{col}中最多包含2个列;{(oid
i
,oid
j
)}为算子关系集合,(oid
i
,oid
j
)表示所述物理计划树中算子i与算子j之间具有连接关系,单个子树中最多具有2个叶子算子;步骤S13,将生成的所述规范化记录存储至所述集合Δ

。3.如权利要求2所述的基于因果推理的数据库基数估计方法,其特征在于,所述步骤S2基于所述集合Δ

中各所述规范化记录构造素材图G
final
包括:步骤S21,首先取出所述集合Δ

中第一个元素(Qid,{oid({t},{col},{p},c1,c2)},{(oid
i
,oid
j
)})转换为成第一有向无环图作为初始素材图G
sed
,其中,转换方式是将{(oid
i
,oid
j
)}转换为{<oid
i
,oid
j
>},使所述算子i所在顶点指向所述算子j所在顶点,此时,所述G
sed
中的叶子顶点入度为0、中间顶点入度不为0;步骤S22,取出Δ

中第二个元素对所述G
sed
进行扩展,将所述第二个元素按照步骤S21方式转换为第二有向无环图加入至所述G
sed
,再将所述第二有向无环图中各叶子顶点与所述G
sed
中各原有顶点进行适配,并在适配成功的两个顶点之间建立双向边;步骤S23,按照Qid值排列顺序依次取出Δ

中的元素执行步骤S22的扩展操作直至、最后一个元素取用完毕,最终所得图为所述素材图G
final

4.如权利要求3所述的基于因果推理的数据库基数估计方法,其特征在于,所述步骤S22,取出Δ

中第二个元素对所述G
sed
进行扩展包括:步骤S221,将所述第二个元素记为D
C
,按照步骤S21方式转换为所述第二有向无环图、并以独立子图的形式加入至所述G
sed
中,其中,所述第二有向无环图中的叶子顶点记为步骤S222,顺序遍历所述第二有向无环图的各叶子顶点并基于所述G
sed
进行顶点适配,其中,按照层次顺序遍历所述G
sed
寻找适配叶子顶点的顶点,适配条件为具有相同的{t}和{col};步骤S223,若找到所述叶子顶点的适配顶点,则结束遍历所述G
sed
,在所述叶子顶点与所述适配顶点之间建立一条双向边;步骤S224,若遍历所述G
sed
完毕后未能找到所述叶子顶点的适配顶点,则继续遍历所述第二有向无环图,直至所述第二有向无环图中的所有叶子顶点遍历结束。5.如权利要求4所述的基于因果推理的数据库基数估计方法,其特征在于,所述步骤S3将所述素材图G
final
中的顶点变量化,得到因果概率图G
prob
包括:步骤S31,遍历所述G
final
中的各个连接于双向边的顶点,构造各所述连接于双向边的顶点的初始的<m
x
,q
x
>,其中,<m
x
,q
x
>表示选用学习式基数估计模型m
x
的概率q
x
,q
x
值计算公式为:步骤S32,互为双向边邻接顶点的两个顶点之间通过双向边向对方传递自身算子属性({t},{col},{p});步骤S33,基于双向边邻接顶点的({t},{col},{p})更新<m

【专利技术属性】
技术研发人员:高锦涛郑洁李弋杰王浩姜璐璐莫先
申请(专利权)人:宁夏大学
类型:发明
国别省市:

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

1