基于深度学习的关系型数据库基数估计方法技术

技术编号:35444862 阅读:23 留言:0更新日期:2022-11-03 11:57
本发明专利技术为基于深度学习的关系型数据库基数估计方法,首先,获取数据库的元数据和统计信息并构建数据库表之间的关系拓扑图;接着,为关系拓扑图的各个节点和连通子图分别建立一个基数估计器;然后,创建训练用的SQL语句,在数据库中执行SQL语句并保存查询结果;将SQL语句和查询结果作为训练数据,对基数估计器进行训练;最后,利用训练后的基数估计器估计基数,若SQL语句只涉及单张数据库表的查询或者连接查询所涉及的数据库表已存在相应的基数估计器,则对基数进行直接估计;否则,将SQL语句拆分为多个子查询,对基数进行间接估计。每个基数估计器只对应于数据库中的单个或部分数据库表,当数据库中的数据改变时,只对部分基数估计器进行更新,降低了更新成本。降低了更新成本。降低了更新成本。

【技术实现步骤摘要】
基于深度学习的关系型数据库基数估计方法


[0001]本专利技术属于数据库基数估计
,具体是一种基于深度学习的关系型数据库基数估计方法,通过对关系型数据库的基数估计,从而帮助数据库查询优化器生成效率更高的执行计划。

技术介绍

[0002]基数估计是查询优化过程中最有影响力的任务之一,基数估计是指在数据库中执行SQL(Structured Query Language,结构化查询语言)语句之前,事先预估该SQL语句执行后可能返回的结果行数。数据库查询优化器是以计划执行成本为依据,在不改变期望结果的情况下使得数据库引擎计划执行时间最短,进而在多个备选方案中选择最佳执行计划。而基数估计值是计算计划执行成本的重要参数,若基数估计值不准确,将影响计划执行成本的计算,可能会导致错误执行计划的选择,从而影响执行效率和系统性能。
[0003]为了估计基数值,大多数商业数据库管理系统(DBMS)都依赖于直方图,虽然直方图构建速度快,存储成本低,但是当涉及到多列查询和多表连接查询时,往往需要独立性的假设,这种假设忽略了列与列以及表与表之间的相关性,而当工作负载涉及复杂的查询且表的列属性之间存在相关性时,将会导致严重的估计误差,并阻碍系统性能。面对直方图的一些问题,开始走入大众的视野。
[0004]基于深度学习的基数估计可以解决基于直方图基数估计存在的问题,但是目前基于深度学习的基数估计普遍存在这些问题:1)深度学习模型规模较大,为了提高精度需要大量训练数据,从而导致模型的训练时间较长;2)训练得到的模型只能针对静态数据库进行基数估计,若是数据库中的数据发生改变,则需要重新训练模型,重新训练的成本较高,若没有及时更新模型,将导致严重的基数估计误差;3)训练得到的基数估计器只能针对训练过程中用到的SQL语句进行基数估计,对于陌生SQL语句的基数估计,一般都会存在较大的估计误差。

技术实现思路

[0005]针对现有技术的不足,本专利技术拟解决的技术问题是,提供一种基于深度学习的关系型数据库基数估计方法。
[0006]本专利技术解决所述技术问题采用的技术方案如下:
[0007]一种基于深度学习的关系型数据库基数估计方法,其特征在于,该方法包括以下步骤:
[0008]步骤1:获取关系型数据库的元数据和统计信息,包括各个数据库表的表名、属性以及数据库表之间的外键关联信息,根据外键关联信息构建数据库表之间的关系拓扑图;关系拓扑图的节点表示数据库表,节点间的连接表示两个数据库表之间存在外键关联;
[0009]步骤2:为关系拓扑图的各个节点和连通子图分别建立一个基数估计器,并确定各个基数估计器的网络结构;
[0010]节点和连通子图的基数估计器均由输入层、隐藏层和输出层构成;输入层包括两组输入层神经元,对应基本谓词和连接谓词两类输入信息,每组输入层神经元包含多个神经元,隐藏层包含多个隐藏层神经元,输出层包含1+n个输出层神经元,n为正整数,节点的基数估计器中n等于单个数据库表的属性数量,连通子图的基数估计器中n等于存在外键关联的多个数据库表包含的所有属性数量;输出层用于输出基数估计值和各属性不同值的数量;
[0011]步骤3:创建训练用的SQL语句,在关系型数据库中执行SQL语句并保存查询结果;将SQL语句和查询结果作为训练数据,对基数估计器进行训练;
[0012]步骤4:利用训练后的基数估计器估计基数;
[0013]4.1)对用于查询的SQL语句进行分析与拆分,若SQL语句只涉及单张数据库表的查询或者连接查询所涉及的数据库表已存在相应的基数估计器,则执行步骤4.2),对基数进行直接估计;否则,将SQL语句拆分为多个子查询再执行步骤4.2),对基数进行间接估计;拆分原则为:保证每个子查询所涉及的数据库表存在相应的基数估计器,且每个子查询中所涉及的数据库表应尽可能多;
[0014]4.2)利用SQL语句进行基数估计;将SQL语句或子查询进行向量化,得到输入向量,将输入向量输入到对应的训练后的基数估计器中,输出基数和各属性不同值的数量;若SQL语句不需要拆分,则基数估计器输出基数估计值;否则,若SQL语句被拆分为r个子查询S1,S2,

,S
r
,则记录每个子查询经基数估计器得到的基数估计值和原SQL语句中连接谓词所涉及的各属性不同值的数量,并根据式(1)计算得到最终的基数估计值;
[0015][0016]其中,C(S)表示基数估计值,C(S
r
)表示子查询S
r
经基数估计器得到的基数估计值,D(S
r
.k
r
‑1)表示子查询S
r
经基数估计器得到的属性k
r
‑1不同值的数量。
[0017]进一步的,步骤3包括以下步骤:
[0018]3.1)根据关系型数据库的元数据和外键关联信息创建若干条用于训练的SQL语句,用于训练的SQL语句需涵盖关系型数据库中的所有数据库表,并在关系型数据库中执行所有SQL语句,然后保存包括基数和各属性不同值的数量在内的查询结果;
[0019]3.2)将SQL语句和查询得到的基数、各属性不同值的数量作为训练数据,对基数估计器进行训练;首先,将SQL语句进行向量化处理,得到输入向量,输入向量分为基本谓词和连接谓词两部分,基本谓词是针对数据库表进行的谓词约束,连接谓词是指两个数据库表之间是否存在连接谓词约束;对所有SQL语句向量化处理后,得到训练集;将训练集分为m份,每份训练集对应一个基数估计器,利用各份训练集对各自的基数估计器进行训练,得到m个训练后的基数估计器,m表示基数估计器数量。
[0020]进一步的,当关系型数据库中的数据一旦发生变化或发生变化的数据量达到设定规模时,需要对相应的基数估计器进行更新,包括以下内容:
[0021]记录变化数据所在的数据库表,并在关系拓扑图中对数据库表对应的节点进行标记;根据标记的节点,确定待更新的基数估计器,标记节点及标记节点所在的连通子图对应的基数估计器即为待更新的基数估计器;
[0022]根据变化后的关系型数据库的元数据和和外键关联信息创建用于训练的SQL语
句,对待更新的基数估计器进行训练,得到更新后的基数估计器;再用更新后的基数估计器替换原来的基数估计器,至此完成基数估计器的更新。
[0023]与现有技术相比,本专利技术的有益效果是:
[0024]1.该方法为关系拓扑图的各个节点和连通子图均建立一个基数估计器,将整个数据库对应的大规模的基数估计器分成了m个小规模的基数估计器,各个基数估计器利用各自的训练集进行并行训练,与现有的深度学习基数估计模型相比,有效缩短了训练时间。
[0025]2.每个基数估计器只对应于数据库中的单个或部分数据库表,当数据库中的数据改变时,无需对所有基数估计器进行更新,只需要对变化数据涉及的数据库表和连通子图对应的基数估计器进行训练更新,即只需要对部分基数估计器进行训练更新,有效降本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于深度学习的关系型数据库基数估计方法,其特征在于,该方法包括以下步骤:步骤1:获取关系型数据库的元数据和统计信息,包括各个数据库表的表名、属性以及数据库表之间的外键关联信息,根据外键关联信息构建数据库表之间的关系拓扑图;关系拓扑图的节点表示数据库表,节点间的连接表示两个数据库表之间存在外键关联;步骤2:为关系拓扑图的各个节点和连通子图分别建立一个基数估计器,并确定各个基数估计器的网络结构;节点和连通子图的基数估计器均由输入层、隐藏层和输出层构成;输入层包括两组输入层神经元,对应基本谓词和连接谓词两类输入信息,每组输入层神经元包含多个神经元,隐藏层包含多个隐藏层神经元,输出层包含1+n个输出层神经元,n为正整数,节点的基数估计器中n等于单个数据库表的属性数量,连通子图的基数估计器中n等于存在外键关联的多个数据库表包含的所有属性数量;输出层用于输出基数估计值和各属性不同值的数量;步骤3:创建训练用的SQL语句,在关系型数据库中执行SQL语句并保存查询结果;将SQL语句和查询结果作为训练数据,对基数估计器进行训练;步骤4:利用训练后的基数估计器估计基数;4.1)对用于查询的SQL语句进行分析与拆分,若SQL语句只涉及单张数据库表的查询或者连接查询所涉及的数据库表已存在相应的基数估计器,则执行步骤4.2),对基数进行直接估计;否则,将SQL语句拆分为多个子查询再执行步骤4.2),对基数进行间接估计;拆分原则为:保证每个子查询所涉及的数据库表存在相应的基数估计器,且每个子查询中所涉及的数据库表应尽可能多;4.2)利用SQL语句进行基数估计;将SQL语句或子查询进行向量化,得到输入向量,将输入向量输入到对应的训练后的基数估计器中,输出基数和各属性不同值的数量;若SQL语句不需要拆分,则基数估计器输出基数估计值;否则,若SQL语句被拆分为r个子查询S1,S2,

,S
r
,则记录每个子查询经基数估计器得到的基数估计值和原SQL语句中连接谓词所涉及的各属性不同值的数量,并...

【专利技术属性】
技术研发人员:顾军华温先斌张亚娟许晓笛何政波
申请(专利权)人:河北工业大学
类型:发明
国别省市:

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

1