CN114780589A - 多表连接查询方法、装置、设备及存储介质 - Google Patents
多表连接查询方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114780589A CN114780589A CN202210361887.1A CN202210361887A CN114780589A CN 114780589 A CN114780589 A CN 114780589A CN 202210361887 A CN202210361887 A CN 202210361887A CN 114780589 A CN114780589 A CN 114780589A
- Authority
- CN
- China
- Prior art keywords
- execution
- connection
- query
- plan
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/248—Presentation of query results
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于计算机技术领域,公开了一种多表连接查询方法、装置、设备及存储介质。本发明通过提取目标多表查询语句中的表连接关系及数据过滤条件,并根据表连接关系构建多表连接矩阵;通过预设连接策略模型对多表连接矩阵进行连接概率分析,获得多表连接向量;根据多表连接向量及数据过滤条件构建查询执行计划;基于查询执行计划进行数据库查询。由于预设连接策略模型可以对多表连接矩阵进行概率分析,依据连接概率选择出高执行效率的表连接顺序,生成多表连接向量,不必进行连接空间枚举,之后根据多表连接向量即可生成高执行效率的查询执行计划进行查询,在避免了枚举所有的连接空间的同时,也保证了查询执行计划的执行效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种多表连接查询方法、装置、设备及存储介质。
背景技术
多表连接顺序作为查询优化的一个子问题,对数据的查询效率有着重要的影响。经典的连接顺序问题是NP-hard的,为了避免对所有可能的连接顺序进行穷举,大多数优化器利用启发式的方法来修剪搜索空间。例如,经典的System R系统将其搜索空间限制为左深树,查询优化器有时使用遗传算法或者随机算法对大型连接查询应用启发式方法,在某些情况下,启发式方法失效,会导致糟糕的计划。传统数据库管理系统使用动态规划或者贪心算法来解决,动态规划会枚举所有的连接执行计划,虽然可以找到最优的连接执行计划,但是性能消耗巨大,不适用于连接关系数量多的查询,而贪心算法每次选择连接代价最小的,虽然适用于关系数量多的情况,但是很有可能只找到局部最优解。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种多表连接查询方法、装置、设备及存储介质,旨在解决现有技术多表连接查询时无法保证查询执行计划的执行效率的技术问题。
为实现上述目的,本发明提供了一种多表连接查询方法,所述方法包括以下步骤:
提取目标多表查询语句中的表连接关系及数据过滤条件,并根据所述表连接关系构建多表连接矩阵;
通过预设连接策略模型对所述多表连接矩阵进行连接概率分析,获得多表连接向量;
根据所述多表连接向量及所述数据过滤条件构建查询执行计划;
基于所述查询执行计划进行数据库查询。
可选的,所述提取目标多表查询语句中的表连接关系及数据过滤条件,并根据所述表连接关系构建多表连接矩阵的步骤之前,还包括:
对预设训练样本集进行遍历,并将遍历到的训练样本语句作为当前查询语句;
根据所述当前查询语句构建当前连接矩阵;
根据所述当前连接矩阵构建多个待校验执行计划,并基于初始连接策略模型及所述当前连接矩阵生成目标执行计划;
获取各待校验执行计划对应的计划执行代价及所述目标执行计划对应的目标执行代价;
根据所述计划执行代价及所述目标执行代价对所述初始连接策略模型进行参数调整;
在遍历结束时,将调整后的初始连接策略模型作为预设连接策略模型。
可选的,所述在遍历结束时,将调整后的初始连接策略模型作为预设连接策略模型的步骤,包括:
在遍历结束时,将调整后的初始连接策略模型作为一次调整模型,获取真实执行样本集;
对所述真实执行样本集进行遍历,并将遍历到的真实执行样本作为当前真实样本;
从所述当前真实执行样本中读取样本执行计划及各样本执行计划对应的真实执行延时;
通过所述一次调整模型对所述当前真实执行样本中的样本执行语句进行分析,获得目标样本计划;
根据各样本执行计划对应的真实执行延时确定所述目标样本计划对应的目标执行延时;
基于所述真实执行延时及所述目标执行延时对所述一次调整模型进行二次参数调整;
在对所述真实执行样本集的遍历结束时,将二次参数调整后的所述一次调整模型作为预设连接策略模型。
可选的,所述在对所述真实执行样本集的遍历结束时,将二次参数调整后的所述一次调整模型作为预设连接策略模型的步骤,包括:
在遍历结束时,将二次参数调整后的所述一次调整模型作为待验证模型;
获取预设测试样本集及所述预设测试样本集对应的标准连接向量集;
通过所述待验证模型对所述预设测试样本集中的各测试样本语句进行连接概率分析,获得模型预测向量集;
根据所述模型预测向量集及所述标准连接向量集生成模型预测准确率;
若所述模型预测准确率大于或等于预设准确阈值,则将所述待验证模型作为预设连接策略模型。
可选的,所述获取各待校验执行计划对应的计划执行代价及所述目标执行计划对应的目标执行代价的步骤,包括:
通过数据库优化器对各待校验执行计划进行分析,获得各待校验执行计划对应的计划执行代价;
获取所述目标执行计划对应的目标连接向量;
将所述目标连接向量与各待校验执行计划对应的多表连接向量进行比较;
将对应的多表连接向量与所述目标连接向量一致的待校验执行计划作为目标待校验执行计划;
将所述目标待校验执行计划对应的计划执行代价作为所述目标执行计划对应的目标执行代价。
可选的,所述根据所述计划执行代价及所述目标执行代价对所述初始连接策略模型进行参数调整的步骤,包括:
获取所述计划执行代价中的最小值,获得最小执行代价;
将所述最小执行代价与所述目标执行代价进行比较;
若所述目标执行代价大于所述最小执行代价,则根据所述计划执行代价及所述目标执行代价对所述初始连接策略模型进行参数调整。
可选的,所述基于所述查询执行计划进行数据库查询的步骤,包括:
从所述目标多表查询语句中提取结果排序条件;
基于所述查询执行计划及所述结果排序条件进行数据库查询,获得数据查询结果;
将所述数据查询结果进行展示。
此外,为实现上述目的,本发明还提出一种多表连接查询装置,所述多表连接查询装置包括以下模块:
信息提取模块,用于提取目标多表查询语句中的表连接关系及数据过滤条件,并根据所述表连接关系构建多表连接矩阵;
概率分析模块,用于通过预设连接策略模型对所述多表连接矩阵进行连接概率分析,获得多表连接向量;
计划构建模块,用于根据所述多表连接向量及所述数据过滤条件构建查询执行计划;
数据查询模块,用于基于所述查询执行计划进行数据库查询。
此外,为实现上述目的,本发明还提出一种多表连接查询设备,所述多表连接查询设备包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的多表连接查询程序,所述多表连接查询程序被处理器执行时实现如上所述的多表连接查询方法的步骤。
此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有多表连接查询程序,所述多表连接查询程序执行时实现如上所述的多表连接查询方法的步骤。
本发明通过提取目标多表查询语句中的表连接关系及数据过滤条件,并根据表连接关系构建多表连接矩阵;通过预设连接策略模型对多表连接矩阵进行连接概率分析,获得多表连接向量;根据多表连接向量及数据过滤条件构建查询执行计划;基于查询执行计划进行数据库查询。由于预设连接策略模型可以对多表连接矩阵进行概率分析,依据连接概率选择出高执行效率的表连接顺序,生成多表连接向量,不必进行连接空间枚举,之后根据多表连接向量即可生成高执行效率的查询执行计划进行查询,在避免了枚举所有的连接空间的同时,也保证了查询执行计划的执行效率。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的电子设备的结构示意图;
图2为本发明多表连接查询方法第一实施例的流程示意图;
图3为本发明多表连接查询方法第二实施例的流程示意图;
图4为本发明多表连接查询装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的多表连接查询设备结构示意图。
如图1所示,该电子设备可以包括:处理器1001,例如中央处理器(CentralProcessing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(Wireless-Fidelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM),也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及多表连接查询程序。
在图1所示的电子设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明电子设备中的处理器1001、存储器1005可以设置在多表连接查询设备中,所述电子设备通过处理器1001调用存储器1005中存储的多表连接查询程序,并执行本发明实施例提供的多表连接查询方法。
本发明实施例提供了一种多表连接查询方法,参照图2,图2为本发明一种多表连接查询方法第一实施例的流程示意图。
本实施例中,所述多表连接查询方法包括以下步骤:
步骤S10:提取目标多表查询语句中的表连接关系及数据过滤条件,并根据所述表连接关系构建多表连接矩阵。
需要说明的是,本实施例的执行主体可以是所述多表连接查询设备,所述多表连接查询设备可以是个人电脑、服务器等电子设备,还可以是其他可实现相同或相似功能的设备,本实施例对此不加以限制,在本实施例及下述各实施例中,以多表连接查询设备为例对本发明多表连接查询方法进行说明。
需要说明的是,目标多表查询语句可以是需要进行多表连接查询的SQL语句,目标多表查询语句可以由用户在多表连接查询设备上输入,也可以由其他设备发送至多表连接查询设备。其中,数据过滤条件可以是对查询的数据进行筛选的条件。
在实际使用中,提取目标多表查询语句中的表连接关系及数据过滤条件可以是从目标多表查询语句中提取涉及的数据库表名及语句查询条件,将语句查询条件区分为表关联条件及数据过滤条件,然后将数据库表名及表关联条件组合为表连接关系。其中,表关联条件可以是为两张数据表建立关联关系的条件。
在具体实现中,在语句查询条件中条件连接符为等式符,且两端存在不同数据表的属性时,可以判定该语句查询条件为表关联条件,其他情况则可以判定该语句查询条件为数据过滤条件。
例如:假设语句查询条件共3个,分别为“A.id=B.id”、“B.id=C.id”和“B.a2>100”,其中,“A.id=B.id”、“B.id=C.id”为表关联条件,“B.a2>100”为数据过滤条件。
需要说明的是,多表链接矩阵可以是用于表示表之间关联关系的矩阵,其中,多表链接矩阵为n*n的邻接矩阵,n为目标多表查询语句涉及的数据库表的总数,多表链接矩阵中任一矩阵值为1,则表示该矩阵值对应的横纵坐标的两数据表存在连接关系。
例如:假设目标多表查询语句为“SELECT*FROM A,B,C,D WHERE A.id=B.id ANDB.id=C.id AND C.id=D.id AND B.a2>100”,则此时提取到的数据库表分别为A、B、C、D,表关联条件为“A.id=B.id”、“B.id=C.id”、“C.id=D.id”,数据过滤条件为“B.a2>100”,则此时构建的多表链接矩阵为:
在实际使用中,为了便于进行数据处理,可以以向量的形式标识存在数据过滤条件的字段,例如:假设数据过滤条件为“B.a2>100”,则可以将向量表示为:
其中,B.a2对应的向量值为1,则表示B.a2字段存在数据过滤条件。
步骤S20:通过预设连接策略模型对所述多表连接矩阵进行连接概率分析,获得多表连接向量。
需要说明的是,预设连接策略模型可以是预先对初始连接策略模型进行训练后得到的模型,预设链接策略模型可以分析各表的连接概率,连接概率越高,则表示将该两张表进行关联查询,执行的效率就越高,其中,初始连接策略模型可以是基于策略的深度强化学习算法模型。
在实际使用中,通过预设连接策略模型对多表连接矩阵进行连接概率分析,获得多表连接向量可以是将多表链接矩阵输入预设连接策略模型,预设连接策略模型在接收到多表链接矩阵时会进行连接概率分析,分析各表之间的连接概率,并将连接概率最高的两张表相连,如此重复多次,从而生成多表连接向量。多表连接向量用于区分表连接的左右关系和连接树的深度,为了便于区分左右连接关系,连接树的左边分支对应的向量值为1,右边分支对应的向量值为2。
例如:假设多表连接矩阵与上述举例的多表链接矩阵相同,则此时多表连接向量的生成步骤分为a、b、c、d共4步:
a、初始状态没有参与连接的表,则此时的向量为[000 000 000 000];
b、假设第一次连接概率分析,A与B表的连接概率最高,此时A表处于连接树的左侧,B处于连接树的右侧,得到的连接结果的编码后得到的向量为[001 002 000 000];
c、假设下一次连接概率分析,连接概率最高的是A表与B表连接得到的中间结果(A∞B)作为左子树与C表进行连接,此次连接得到的编码向量为[011 012 002 000];
d、最后一次连接概率分析,连接概率最高的是将得到的查询子树作为左子树与D表进行连接,得到的编码向量为[111 112 012 002],则最终获得的多表连接向量为[111112 012 002]。
步骤S30:根据所述多表连接向量及所述数据过滤条件构建查询执行计划。
可以理解的是,多表连接向量可以用于区分表连接的左右关系和连接树的深度,根据多表连接向量即可确定对各数据库表进行查询时的先后顺序,而数据过滤条件可以用于对数据进行筛选,因此,在依据多表链接向量对各数据库表先后查询时可以利用该数据库表对应的数据过滤条件减少需要处理的数据量,从而提高查询执行效率。
例如:假设多表连接向量为[111 112 012 002],数据过滤条件为B.a2>100,则此时生成的查询执行计划为:先通过数据过滤条件对B表数据进行过滤,获得过滤后的中间数据B1,然后将A表与B1相连,A表处于连接树的左侧,B1处于连接树的右侧,接着将A表与B1表连接得到的中间结果(A∞B1)作为左子树与C表进行连接,再将将得到的中间结果(A∞B1)与C表连接的中间结果((A∞B1)∞C)作为左子树与D表进行连接,最终获得查询结果(((A∞B1)∞C)∞D)。
步骤S40:基于所述查询执行计划进行数据库查询。
可以理解的是,由于预设链接策略模型可以分析各表的连接概率,连接概率越高,则表示将该两张表进行关联查询,执行的效率就越高,根据预设链接策略模型输出的多表连接向量及数据过滤条件构建查询执行计划,然后根据查询执行计划进行数据库查询,可以保证查询执行计划的执行效率为最高。
在实际使用中,基于查询执行计划进行数据库查询可以是将查询执行计划发送至数据库管理系统,由数据库管理系统执行数据查询。
进一步的,用户在设置多表连接查询语句时,还有可能会设置特殊的排序条件,为了可适应此种实现场景,本实施例所述步骤S40,可以包括:
从所述目标多表查询语句中提取结果排序条件;
基于所述查询执行计划及所述结果排序条件进行数据库查询,获得数据查询结果;
将所述数据查询结果进行展示。
需要说明的是,结果排序条件可以是目标多表查询语句中对查询结果进行排序的排序条件。基于查询执行计划及结果排序条件进行数据库查询,获得数据查询结果可以是将查询执行计划及结果排序条件发送至数据库管理系统,由数据库管理系统根据查询执行计划及结果排序条件进行数据查询并排序,然后将排序后的数据查询结果反馈给多表连接查询设备。
在实际使用中,将数据查询结果进行展示可以是将数据查询结果展示在多表连接查询设备的显示装置上,也可以是将数据查询结果发送至发起目标多表查询语句的设备上进行展示,本实施例对此不加以限制。
本实施例通过提取目标多表查询语句中的表连接关系及数据过滤条件,并根据表连接关系构建多表连接矩阵;通过预设连接策略模型对多表连接矩阵进行连接概率分析,获得多表连接向量;根据多表连接向量及数据过滤条件构建查询执行计划;基于查询执行计划进行数据库查询。由于预设连接策略模型可以对多表连接矩阵进行概率分析,依据连接概率选择出高执行效率的表连接顺序,生成多表连接向量,不必进行连接空间枚举,之后根据多表连接向量即可生成高执行效率的查询执行计划进行查询,在避免了枚举所有的连接空间的同时,也保证了查询执行计划的执行效率。
参考图3,图3为本发明一种多表连接查询方法第二实施例的流程示意图。
基于上述第一实施例,本实施例多表连接查询方法在所述步骤S10之前,还包括:
步骤S01:对预设训练样本集进行遍历,并将遍历到的训练样本语句作为当前查询语句。
需要说明的是,预设训练样本集可以是包含大量训练样本语句的集合,其中,训练样本语句可以是多表连接查询语句。预设训练样本集可以由多表连接查询设备的管理人员预先进行设置。
步骤S02:根据所述当前查询语句构建当前连接矩阵。
需要说明的是,根据当前查询语句构建当前连接矩阵可以是从当前查询语句中提取表连接关系及数据过滤条件,然后根据表连接关系构建多表连接矩阵,并将构建的多表连接矩阵作为当前连接矩阵。
步骤S03:根据所述当前连接矩阵构建多个待校验执行计划,并基于初始连接策略模型及所述当前连接矩阵生成目标执行计划。
需要说明的是,根据当前连接矩阵构建多个待校验执行计划可以是根据当前连接矩阵中各表的连接可能性,从而生成多个不同的多表连接向量,然后根据各多表连接向量及之前提取的数据过滤条件生成多个不同的查询执行计划,然后将生成的查询执行计划作为待校验执行计划。
基于初始连接策略模型及当前连接矩阵生成目标执行计划可以是通过初始连接模型策略对当前连接矩阵进行连接概率分析,然后根据分析后生成的多表连接向量及之前提取的数据过滤条件构建查询执行计划,然后将构建的查询执行计划作为目标执行计划。
步骤S04:获取各待校验执行计划对应的计划执行代价及所述目标执行计划对应的目标执行代价。
需要说明的是,计划执行代价可以是执行该数据查询计划时的执行延时,即根据该数据查询计划进行查询时需要消耗的时长。获取各待校验执行计划对应的计划执行代价可以是分析各待校验执行计划,从而确定各待校验执行计划执行时的计划执行代价。获取目标执行计划对应的目标执行代价可以是将执行目标执行计划时的计划执行代价作为目标执行代价。
进一步的,由于将需要测试的查询执行计划直接在数据库执行,会对数据库造成极大的压力,且需要等待大量的时长,而数据库优化器可以对查询执行计划所需要的计划执行代价进行预估,因此,可以通过数据库优化器对各查询执行计划进行估算,从而获得各查询执行计划的计划执行代价,则此时本实施例所述步骤S04,可以包括:
通过数据库优化器对各待校验执行计划进行分析,获得各待校验执行计划对应的计划执行代价;
获取所述目标执行计划对应的目标连接向量;
将所述目标连接向量与各待校验执行计划对应的多表连接向量进行比较;
将对应的多表连接向量与所述目标连接向量一致的待校验执行计划作为目标待校验执行计划;
将所述目标待校验执行计划对应的计划执行代价作为所述目标执行计划对应的目标执行代价。
需要说明的是,通过数据库优化器对各待校验执行计划进行分析,获得各待校验执行计划对应的计划执行代价可以是通过数据库优化器对各待校验执行计划进行代价预测,从而获得各待校验执行计划对应的计划执行代价。
需要说明的是,由于在生成待校验执行计划时是考虑到当前连接矩阵中各表的连接可能性生成的,因此,必然存在与目标执行计划相同的待校验执行计划,此时,为了避免不必要的性能开销,可以不再通过数据库优化器对目标执行计划进行分析,而是直接将与目标执行计划相同的待校验执行计划对应的计划执行代价作为目标执行代价。获取目标执行计划对应的目标连接向量可以是将目标执行计划对应的多表连接向量作为目标连接向量。
可以理解的是,多表连接向量可以用于区分表连接的左右关系和连接树的深度,很显然,不同的查询执行计划对应的多表连接向量必然不同,因此,可以通过将各待校验执行计划对应的多表连接向量与目标连接向量进行比较,从而查找到与目标执行计划相同的待校验执行计划,并将查找到的待校验执行计划作为目标待校验执行计划,然后将目标待校验执行计划对应的计划执行代价作为目标执行计划对应的目标执行代价。
步骤S05:根据所述计划执行代价及所述目标执行代价对所述初始连接策略模型进行参数调整。
可以理解的是,根据计划执行代价及目标执行代价即可以确认目标执行计划是否为执行效率最优的查询执行计划,而若是不是,则表示初始连接策略模型预测错误,此时可以对初始连接策略模型进行参数调整。
在实际使用中,对初始连接策略模型进行参数调整时,会利用奖励的梯度搜索最优的策略参数,然后将搜索到的策略参数替换至初始连接策略模型中,从而实现对初始连接策略模型进行参数调整。
在具体实现中,为了准确的判断目标执行计划是否为执行效率最优的查询执行计划,本实施例所述步骤S05,可以包括:
获取所述计划执行代价中的最小值,获得最小执行代价;
将所述最小执行代价与所述目标执行代价进行比较;
若所述目标执行代价大于所述最小执行代价,则根据所述计划执行代价及所述目标执行代价对所述初始连接策略模型进行参数调整。
需要说明的是,计划执行代价为查询执行计划执行时的执行延时,计划执行代价越小,则表示该查询执行计划执行的执行效率越高,因此,获取待校验执行计划对应的计划执行代价中的最小值,并将最小值作为最小执行代价,然后将目标执行代价与最小执行代价进行比较,即可准确且快速的确定目标执行计划是否为执行效率最优的查询执行计划。很显然,若目标执行代价大于最小执行代价,则表示目标执行计划并非执行效率最优的查询执行计划,可以判定初始连接策略模型的预测错误,因此,可以对初始连接策略模型进行参数调整。
步骤S06:在遍历结束时,将调整后的初始连接策略模型作为预设连接策略模型。
可以理解的是,若遍历结束,则表示对初始连接策略模型的训练已经完成,因此,此时可以直接将调整后的初始连接策略模型作为预设链接策略模型。
进一步的,由于根据数据库优化器确定查询执行计划虽然容易,但是,其数据库优化器的估计会存在不准确性,可能会导致训练后得到的预设连接策略模型的预测不准确,为了克服此种缺陷,本实施例所述步骤S06,可以包括:
在遍历结束时,将调整后的初始连接策略模型作为一次调整模型,获取真实执行样本集;
对所述真实执行样本集进行遍历,并将遍历到的真实执行样本作为当前真实样本;
从所述当前真实执行样本中读取样本执行计划及各样本执行计划对应的真实执行延时;
通过所述一次调整模型对所述当前真实执行样本中的样本执行语句进行分析,获得目标样本计划;
根据各样本执行计划对应的真实执行延时确定所述目标样本计划对应的目标执行延时;
基于所述真实执行延时及所述目标执行延时对所述一次调整模型进行二次参数调整;
在对所述真实执行样本集的遍历结束时,将二次参数调整后的所述一次调整模型作为预设连接策略模型。
需要说明的是,真实执行样本集可以是由多个真实执行样本组合而成的集合,真实执行样本集可以由多表连接查询设备的管理人员预先进行设置。真实执行样本包括样本执行语句、多个样本执行计划、各样本执行计划对应的真实执行延时,其中,样本执行语句为多表连接查询语句,多个样本执行计划为根据样本执行语句中各表的所有连接可能性构建,真实执行延时为将样本执行计划直接在数据库中执行后数据库反馈的执行时长。
在实际使用中,通过所述一次调整模型对所述当前真实执行样本中的样本执行语句进行分析,获得目标样本计划可以是从样本执行语句中表连接关系及数据过滤条件,根据表连接关系生成多表连接矩阵,然后通过一次调整模型对多表连接矩阵进行连接概率分析,然后根据分析后生成的多表连接向量及数据过滤条件构建查询执行计划,然后将构建的查询执行计划作为目标样本计划。
可以理解的是,由于在生成样本执行计划时是考虑到样本执行语句中涉及的各表的连接可能性生成的,因此,必然存在与目标样本计划相同的样本执行计划,此时,根据各样本执行计划对应的真实执行延时确定目标样本计划对应的目标执行延时可以是将与目标样本计划相同的样本执行计划的真实执行延迟作为目标样本计划对应的目标执行延时。
在具体实现中,基于真实执行延时及目标执行延时对一次调整模型进行二次参数调整可以是根据真实执行延时及目标执行延时确定目标样本计划是否为执行效率最高的查询执行计划,从而对一次调整模型进行进一步的参数调整。
进一步的,由于训练集的数量无法保证,在训练集中的样本数量不够时,尽可能会使得最终获得的预设连接策略模型的预测准确率较低,此时若将模型直接投入实际使用,可能会效果较差,甚至导致业务系统卡顿,为了避免此种现象,本实施例所述在对所述真实执行样本集的遍历结束时,将二次参数调整后的所述一次调整模型作为预设连接策略模型的步骤,可以包括:
在遍历结束时,将二次参数调整后的所述一次调整模型作为待验证模型;
获取预设测试样本集及所述预设测试样本集对应的标准连接向量集;
通过所述待验证模型对所述预设测试样本集中的各测试样本语句进行连接概率分析,获得模型预测向量集;
根据所述模型预测向量集及所述标准连接向量集生成模型预测准确率;
若所述模型预测准确率大于或等于预设准确阈值,则将所述待验证模型作为预设连接策略模型。
需要说明的是,预设测试样本集可以是由大量测试样本语句组合而成的集合,测试样本语句为多表连接查询语句。预设测试样本集对应的标准连接向量集中包括预设测试样本集中各测试样本语句对应的标准连接向量,其中,标准连接向量可以是测试样本语句对应的多个查询执行计划中执行效率最高的查询执行计划的多表连接向量。
在实际使用中,根据模型预测向量集及标准连接向量集生成模型预测准确率可以是确定标准连接向量集中的向量总数,然后将模型预测向量集与标准连接向量集中相同的向量的数量与向量总数相除,从而获得模型预测准确率。
需要说明的是,预设准确阈值可以由多表连接查询设备的管理人员根据实际需要进行设置,例如:将预设准确阈值设置为95%。
可以理解的是,若模型预测准确率大于或等于预设准确阈值,则表示待验证模型的预测准确率已经达到了要求,可以将待验证模型投入实际使用,因此,可以将待验证模型作为预设连接策略模型。
本实施例通过对预设训练样本集进行遍历,并将遍历到的训练样本语句作为当前查询语句;根据所述当前查询语句构建当前连接矩阵;根据所述当前连接矩阵构建多个待校验执行计划,并基于初始连接策略模型及所述当前连接矩阵生成目标执行计划;获取各待校验执行计划对应的计划执行代价及所述目标执行计划对应的目标执行代价;根据所述计划执行代价及所述目标执行代价对所述初始连接策略模型进行参数调整;在遍历结束时,将调整后的初始连接策略模型作为预设连接策略模型。由于会预先采用包含大量训练样本语句的预设训练样本集进行训练,且在训练过程中会不断对初始连接策略模型进行参数调整,令初始连接策略模型中的参数不断优化,从而使得最终获得的预设连接策略模型具有极高的预测准确率,保证了多表连接查询方法的可靠性。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有多表连接查询程序,所述多表连接查询程序被处理器执行时实现如上文所述的多表连接查询方法的步骤。
参照图4,图4为本发明多表连接查询装置第一实施例的结构框图。
如图4所示,本发明实施例提出的多表连接查询装置包括:
信息提取模块10,用于提取目标多表查询语句中的表连接关系及数据过滤条件,并根据所述表连接关系构建多表连接矩阵;
概率分析模块20,用于通过预设连接策略模型对所述多表连接矩阵进行连接概率分析,获得多表连接向量;
计划构建模块30,用于根据所述多表连接向量及所述数据过滤条件构建查询执行计划;
数据查询模块40,用于基于所述查询执行计划进行数据库查询。
本实施例通过提取目标多表查询语句中的表连接关系及数据过滤条件,并根据表连接关系构建多表连接矩阵;通过预设连接策略模型对多表连接矩阵进行连接概率分析,获得多表连接向量;根据多表连接向量及数据过滤条件构建查询执行计划;基于查询执行计划进行数据库查询。由于预设连接策略模型可以对多表连接矩阵进行概率分析,依据连接概率选择出高执行效率的表连接顺序,生成多表连接向量,不必进行连接空间枚举,之后根据多表连接向量即可生成高执行效率的查询执行计划进行查询,在避免了枚举所有的连接空间的同时,也保证了查询执行计划的执行效率。
进一步的,所述信息提取模块10,还用于对预设训练样本集进行遍历,并将遍历到的训练样本语句作为当前查询语句;根据所述当前查询语句构建当前连接矩阵;根据所述当前连接矩阵构建多个待校验执行计划,并基于初始连接策略模型及所述当前连接矩阵生成目标执行计划;获取各待校验执行计划对应的计划执行代价及所述目标执行计划对应的目标执行代价;根据所述计划执行代价及所述目标执行代价对所述初始连接策略模型进行参数调整;在遍历结束时,将调整后的初始连接策略模型作为预设连接策略模型。
进一步的,所述信息提取模块10,还用于在遍历结束时,将调整后的初始连接策略模型作为一次调整模型,获取真实执行样本集;对所述真实执行样本集进行遍历,并将遍历到的真实执行样本作为当前真实样本;从所述当前真实执行样本中读取样本执行计划及各样本执行计划对应的真实执行延时;通过所述一次调整模型对所述当前真实执行样本中的样本执行语句进行分析,获得目标样本计划;根据各样本执行计划对应的真实执行延时确定所述目标样本计划对应的目标执行延时;基于所述真实执行延时及所述目标执行延时对所述一次调整模型进行二次参数调整;在对所述真实执行样本集的遍历结束时,将二次参数调整后的所述一次调整模型作为预设连接策略模型。
进一步的,所述信息提取模块10,还用于在遍历结束时,将二次参数调整后的所述一次调整模型作为待验证模型;获取预设测试样本集及所述预设测试样本集对应的标准连接向量集;通过所述待验证模型对所述预设测试样本集中的各测试样本语句进行连接概率分析,获得模型预测向量集;根据所述模型预测向量集及所述标准连接向量集生成模型预测准确率;若所述模型预测准确率大于或等于预设准确阈值,则将所述待验证模型作为预设连接策略模型。
进一步的,所述信息提取模块10,还用于通过数据库优化器对各待校验执行计划进行分析,获得各待校验执行计划对应的计划执行代价;获取所述目标执行计划对应的目标连接向量;将所述目标连接向量与各待校验执行计划对应的多表连接向量进行比较;将对应的多表连接向量与所述目标连接向量一致的待校验执行计划作为目标待校验执行计划;将所述目标待校验执行计划对应的计划执行代价作为所述目标执行计划对应的目标执行代价。
进一步的,所述信息提取模块10,还用于获取所述计划执行代价中的最小值,获得最小执行代价;将所述最小执行代价与所述目标执行代价进行比较;若所述目标执行代价大于所述最小执行代价,则根据所述计划执行代价及所述目标执行代价对所述初始连接策略模型进行参数调整。
进一步的,所述数据查询模块40,还用于从所述目标多表查询语句中提取结果排序条件;基于所述查询执行计划及所述结果排序条件进行数据库查询,获得数据查询结果;将所述数据查询结果进行展示。
应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。
需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。
另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的多表连接查询方法,此处不再赘述。
此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(Read Only Memory,ROM)/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种多表连接查询方法,其特征在于,所述多表连接查询方法包括以下步骤:
提取目标多表查询语句中的表连接关系及数据过滤条件,并根据所述表连接关系构建多表连接矩阵;
通过预设连接策略模型对所述多表连接矩阵进行连接概率分析,获得多表连接向量;
根据所述多表连接向量及所述数据过滤条件构建查询执行计划;
基于所述查询执行计划进行数据库查询。
2.如权利要求1所述的多表连接查询方法,其特征在于,所述提取目标多表查询语句中的表连接关系及数据过滤条件,并根据所述表连接关系构建多表连接矩阵的步骤之前,还包括:
对预设训练样本集进行遍历,并将遍历到的训练样本语句作为当前查询语句;
根据所述当前查询语句构建当前连接矩阵;
根据所述当前连接矩阵构建多个待校验执行计划,并基于初始连接策略模型及所述当前连接矩阵生成目标执行计划;
获取各待校验执行计划对应的计划执行代价及所述目标执行计划对应的目标执行代价;
根据所述计划执行代价及所述目标执行代价对所述初始连接策略模型进行参数调整;
在遍历结束时,将调整后的初始连接策略模型作为预设连接策略模型。
3.如权利要求2所述的多表连接查询方法,其特征在于,所述在遍历结束时,将调整后的初始连接策略模型作为预设连接策略模型的步骤,包括:
在遍历结束时,将调整后的初始连接策略模型作为一次调整模型,获取真实执行样本集;
对所述真实执行样本集进行遍历,并将遍历到的真实执行样本作为当前真实样本;
从所述当前真实执行样本中读取样本执行计划及各样本执行计划对应的真实执行延时;
通过所述一次调整模型对所述当前真实执行样本中的样本执行语句进行分析,获得目标样本计划;
根据各样本执行计划对应的真实执行延时确定所述目标样本计划对应的目标执行延时;
基于所述真实执行延时及所述目标执行延时对所述一次调整模型进行二次参数调整;
在对所述真实执行样本集的遍历结束时,将二次参数调整后的所述一次调整模型作为预设连接策略模型。
4.如权利要求2所述的多表连接查询方法,其特征在于,所述在对所述真实执行样本集的遍历结束时,将二次参数调整后的所述一次调整模型作为预设连接策略模型的步骤,包括:
在遍历结束时,将二次参数调整后的所述一次调整模型作为待验证模型;
获取预设测试样本集及所述预设测试样本集对应的标准连接向量集;
通过所述待验证模型对所述预设测试样本集中的各测试样本语句进行连接概率分析,获得模型预测向量集;
根据所述模型预测向量集及所述标准连接向量集生成模型预测准确率;
若所述模型预测准确率大于或等于预设准确阈值,则将所述待验证模型作为预设连接策略模型。
5.如权利要求2所述的多表连接查询方法,其特征在于,所述获取各待校验执行计划对应的计划执行代价及所述目标执行计划对应的目标执行代价的步骤,包括:
通过数据库优化器对各待校验执行计划进行分析,获得各待校验执行计划对应的计划执行代价;
获取所述目标执行计划对应的目标连接向量;
将所述目标连接向量与各待校验执行计划对应的多表连接向量进行比较;
将对应的多表连接向量与所述目标连接向量一致的待校验执行计划作为目标待校验执行计划;
将所述目标待校验执行计划对应的计划执行代价作为所述目标执行计划对应的目标执行代价。
6.如权利要求2所述的多表连接查询方法,其特征在于,所述根据所述计划执行代价及所述目标执行代价对所述初始连接策略模型进行参数调整的步骤,包括:
获取所述计划执行代价中的最小值,获得最小执行代价;
将所述最小执行代价与所述目标执行代价进行比较;
若所述目标执行代价大于所述最小执行代价,则根据所述计划执行代价及所述目标执行代价对所述初始连接策略模型进行参数调整。
7.如权利要求1-6任一项所述的多表连接查询方法,其特征在于,所述基于所述查询执行计划进行数据库查询的步骤,包括:
从所述目标多表查询语句中提取结果排序条件;
基于所述查询执行计划及所述结果排序条件进行数据库查询,获得数据查询结果;
将所述数据查询结果进行展示。
8.一种多表连接查询装置,其特征在于,所述多表连接查询装置包括以下模块:
信息提取模块,用于提取目标多表查询语句中的表连接关系及数据过滤条件,并根据所述表连接关系构建多表连接矩阵;
概率分析模块,用于通过预设连接策略模型对所述多表连接矩阵进行连接概率分析,获得多表连接向量;
计划构建模块,用于根据所述多表连接向量及所述数据过滤条件构建查询执行计划;
数据查询模块,用于基于所述查询执行计划进行数据库查询。
9.一种多表连接查询设备,其特征在于,所述多表连接查询设备包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的多表连接查询程序,所述多表连接查询程序被处理器执行时实现如权利要求1-7中任一项所述的多表连接查询方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有多表连接查询程序,所述多表连接查询程序执行时实现如权利要求1-7中任一项所述的多表连接查询方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210361887.1A CN114780589A (zh) | 2022-04-07 | 2022-04-07 | 多表连接查询方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210361887.1A CN114780589A (zh) | 2022-04-07 | 2022-04-07 | 多表连接查询方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114780589A true CN114780589A (zh) | 2022-07-22 |
Family
ID=82426702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210361887.1A Pending CN114780589A (zh) | 2022-04-07 | 2022-04-07 | 多表连接查询方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114780589A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116821193A (zh) * | 2023-08-30 | 2023-09-29 | 之江实验室 | 一种基于代理模型近似处理的推理查询优化方法及装置 |
-
2022
- 2022-04-07 CN CN202210361887.1A patent/CN114780589A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116821193A (zh) * | 2023-08-30 | 2023-09-29 | 之江实验室 | 一种基于代理模型近似处理的推理查询优化方法及装置 |
CN116821193B (zh) * | 2023-08-30 | 2024-01-09 | 之江实验室 | 一种基于代理模型近似处理的推理查询优化方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108804641B (zh) | 一种文本相似度的计算方法、装置、设备和存储介质 | |
JP7343568B2 (ja) | 機械学習のためのハイパーパラメータの識別および適用 | |
WO2020029689A1 (zh) | 数据处理模型构建方法、装置、服务器和用户端 | |
CN110457431B (zh) | 基于知识图谱的问答方法、装置、计算机设备和存储介质 | |
CN112035599B (zh) | 基于垂直搜索的查询方法、装置、计算机设备及存储介质 | |
KR101616544B1 (ko) | Lda를 이용한 특허 문헌 분석 방법 | |
CN110046298A (zh) | 一种查询词推荐方法、装置、终端设备及计算机可读介质 | |
CN111752955A (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
CN110705226A (zh) | 电子表格的创建方法、装置及计算机设备 | |
CN112231452A (zh) | 基于自然语言处理的问答方法、装置、设备及存储介质 | |
CN113641813A (zh) | 基于知识图谱的问答系统、方法、电子设备及存储介质 | |
CN114780589A (zh) | 多表连接查询方法、装置、设备及存储介质 | |
CN114253990A (zh) | 数据库查询方法、装置、计算机设备和存储介质 | |
Langfelder et al. | Package ‘WGCNA’ | |
CN110955774B (zh) | 基于词频分布的文字分类方法、装置、设备及介质 | |
CN115147020B (zh) | 装修数据处理方法、装置、设备及存储介质 | |
CN112711678A (zh) | 数据解析方法、装置、设备及存储介质 | |
CN109062946A (zh) | 一种基于多网页的突出显示方法及装置 | |
CN111460268B (zh) | 数据库查询请求的确定方法、装置和计算机设备 | |
Horiuchi et al. | JupySim: Jupyter Notebook Similarity Search System. | |
CN112182218A (zh) | 文本数据的分类方法及装置 | |
CN109408713A (zh) | 一种基于用户反馈信息的软件需求检索系统 | |
CN117435509B (zh) | 接口数据的动态比对方法、动态比对设备和存储介质 | |
CN114756740A (zh) | 一种算法推荐方法、装置、存储介质及电子设备 | |
CN110727786A (zh) | 自学习的知识库管理方法、装置、终端设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |