CN112905591B - 一种基于机器学习的数据表连接顺序选择方法 - Google Patents
一种基于机器学习的数据表连接顺序选择方法 Download PDFInfo
- Publication number
- CN112905591B CN112905591B CN202110152193.2A CN202110152193A CN112905591B CN 112905591 B CN112905591 B CN 112905591B CN 202110152193 A CN202110152193 A CN 202110152193A CN 112905591 B CN112905591 B CN 112905591B
- Authority
- CN
- China
- Prior art keywords
- connection
- data table
- feature vector
- current
- plan
- 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.)
- Active
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于机器学习的数据表连接顺序选择方法,包括以下步骤:S1、对SQL语句进行编码,分别生成列、数据表和连接关系的特征向量;S2、根据列和数据表的特征向量,设计向量树AT来生成连接树的特征向量;S3、根据列、数据表、连接关系和连接树的特征向量,设计部分连接计划模型SP来生成部分连接计划的特征向量,进而生成下一时刻连接状态的特征向量;S4、根据下一时刻连接状态的特征向量,构建深度强化学习模型J,并结合部分连接计划模型SP与向量树AT,生成数据表的最优连接顺序。本发明解决了现有查询优化器生成数据表的次优连接顺序导致查询效率较低的问题。
Description
技术领域
本发明涉及数据库领域,具体涉及一种基于机器学习的数据表连接顺序选择方法。
背景技术
查询操作是关系数据库的基本操作,查询的效率是数据库系统的重要指标。于是查询优化成为数据库领域的重要研究方向。查询优化是为了构建一个代价最小的执行计划,从而达到在查询执行过程中的真实查询时间最低,实现用户的良好体验。通常,查询优化包括基数估计、代价模型、连接顺序选择等方面。查询优化的效果直接影响数据库应用程序的性能。
而数据库查询优化器的重难点是多表连接顺序选择的问题,解决这个问题很复杂,代价巨大。因为它涉及到了为每个可选的连接顺序计算成本,从而极大地影响了查询优化器的优化过程。
传统的数据库的优化方法基本上是基于基数估计和代价模型,采用动态规划搜索所有可能的连接顺序方案,虽然可以得到较好的方案,但搜索空间巨大,花费的代价令人望而却步。而采用剪枝技术加上启发式方法,虽然产生执行计划很快,但是通常会得到糟糕的计划。
发明内容
针对现有技术中的上述不足,本发明提供的一种基于机器学习的数据表连接顺序选择方法解决了现有查询优化器生成数据表的次优连接顺序导致查询效率较低的问题。
为了达到上述发明目的,本发明采用的技术方案为:一种基于机器学习的数据表连接顺序选择方法,包括以下步骤:
S1、对SQL语句进行编码,分别生成列、数据表和连接关系的特征向量;
S2、根据列和数据表的特征向量,设计向量树AT来生成连接树的特征向量;
S3、根据列、数据表、连接关系和连接树的特征向量,设计部分连接计划模型SP来生成部分连接计划的特征向量,进而生成下一时刻连接状态的特征向量;
S4、根据下一时刻连接状态的特征向量,构建深度强化学习模型J,并结合部分连接计划模型SP与向量树AT,生成数据表的最优连接顺序。
进一步地,步骤S1包括以下分步骤:
S11、对SQL语句中WHERE子句包含的列进行编码,生成列的特征编码;
S12、对列的特征编码进行处理,生成列的特征向量;
S13、根据列的特征向量,生成数据表的特征矩阵;
S14、根据数据表的特征矩阵,生成数据表的特征向量;
S15、对SQL语句中WHERE子句包含的连接关系进行编码,生成连接关系的特征编码;
S16、对连接关系的特征编码进行处理,生成连接关系的特征向量。
上述进一步方案的有益效果为:在数据预处理阶段,对SQL语句的信息采用特征向量进行表示,能够更适合后续机器学习模型的数据形式;采用特征向量不仅能够更准确地提取关键信息,而且能够包括许多SQL语句的信息,为后续步骤提供准确且全面的数据特征。
进一步地,步骤S11中对SQL语句中WHERE子句包含的列进行编码的信息包括:列关联的连接谓词和选择谓词;所述连接谓词包括:连接操作;所述选择谓词包括:等于、不等于、小于和大于的运算操作。
进一步地,步骤S11中连接谓词的编码公式为:Join(c)=cj,其中,c为WHERE子句包含的任意一个列的列名,Join(c)为列关联的连接谓词的编码,cj为连接操作的编码,cj=0代表无连接操作,cj=1代表有连接操作;选择谓词的编码公式为:Select(c)=(c=,c!=,c<,c>),其中,Select(c)为列关联的选择谓词的编码,c=为等于运算操作的编码,c!=为不等于运算操作的编码,c<为小于运算操作的编码,c>为大于运算操作的编码,且c=,c!=,c<,c>取值为0或者1,0代表无运算操作,1代表有运算操作;列的特征编码公式为:其中F(c)为列的特征编码,为连接符;
所述步骤S12中生成列的特征向量的计算公式为:
R(c)=leakyRelu(F(c)*w+b)
其中,R(c)为列的特征向量,leakyRelu()为激活函数,F(c)为列的特征编码,w和b为参数;
所述步骤S13中生成数据表的特征矩阵的计算公式为:
其中,t为WHERE子句包含的任意一个数据表的表名,T(t)为数据表的特征矩阵,c1,…,ck为WHERE子句包含的列名,且属于表t,R(c1),…,R(ck)为根据列的特征向量R(c)生成列c1,…,ck的特征向量;
步骤S14中生成数据表的特征向量的计算公式为:
R(t)=MaxPool(T(t))
其中,R(t)为数据表的特征向量,MaxPool()为最大池化函数;
步骤S15中生成连接关系的特征编码的公式如下:
u=(N1,2,N1,3,…,N1,n,N2,3,N2,4,…,N2,n,…,Na,b,…,Nn-1,n)
a<b,0<a<n-1,0<b<n,a,b均为整数
其中,u为连接关系的特征编码,N1,2,N1,3,…,N1,n,N2,3,N2,4,…,N2,n,…,Na,b,…,Nn-1,n为WHERE子句包含的任意两个数据表的连接关系的编码,Na,b为1时,代表第a个数据表与第b个数据表有连接,Na,b为0时,代表第a个数据表与第b个数据表无连接,n为WHERE子句包含的数据表的数量;
所述步骤S16中生成连接关系的特征向量的计算公式为:
R(U)=leakyRelu(u*w+b)
其中,R(U)为连接关系的特征向量,leakyRelu()为激活函数,u为连接关系的特征编码,w和b为参数。
上述进一步方案的有益效果为:对特征编码进行处理能够避免特征编码的稀疏性,对特征矩阵进行处理能够最大限度地采样到关键信息来生成数据表的特征向量,进而能够匹配列的特征向量的维度,为后续步骤提供更加准确且全面的数据特征。
进一步地,步骤S2包括以下分步骤:
S21、根据列的特征向量R(c)和数据表的特征向量R(t),设计向量树AT将两个具有连接关系的数据表进行连接;
S22、将向量树AT的输入定义为左子节点和右子节点,将左子节点定义为(R(tl),R(tl.c)),右子节点定义为(R(tr),R(tr.c)),其中tl和tr为WHERE子句包含的数据表名,且数据表tl和tr具有连接关系,tl.c和tr.c为WHERE子句包含的列名,且分别属于数据表tl和tr,R(tl)为数据表tl的特征向量,R(tr)为数据表tr的特征向量,R(tl.c)为列tl.c的特征向量,R(tr.c)为列tr.c的特征向量;
S23、对向量树AT输入左子节点(R(tl),R(tl.c))和右子节点(R(tr),R(tr.c)),生成连接树的特征向量,计算公式为:
e=sigmod(We*[R(tl.c),R(tr.c)]+Ye*[R(tl),R(tr)]+be)
o=tanh(Wo*[R(tl.c),R(tr.c)]+Yo*[R(tl),R(tr)]+bo)
h=e*o
其中,sigmod()和tanh()为激活函数,e为对左右子节点的信息融合更新的程度,o为左右子节点被提取的信息,h为连接树的特征向量,We和Ye为对信息融合更新的权重参数,be为对信息融合更新的偏置参数,Wo和Yo为对信息进行提取的权重参数,bo为对信息进行提取的偏置参数。
上述进一步方案的有益效果为:采用向量树AT生成连接树的特征向量,能够更加符合两个具有连接关系的数据表进行连接后的结果,为后续构建部分连接计划提供基本元素。
进一步地,步骤S3包括以下分步骤:
S31、根据列、数据表和连接树的特征向量,构建部分连接计划模型SP;
S32、根据部分连接计划模型SP,生成下一时刻部分连接计划的特征向量;
所述步骤S32具体为:
所述部分连接计划模型SP包括:第一类部分连接计划模型SP和第二类部分连接计划模型SP;
所述第一类部分连接计划模型SP将当前部分连接计划与单个数据表进行连接,且当前部分连接计划中某一个数据表与单个数据表具有连接关系;
将所述第一类部分连接计划模型SP的输入定义为第一类子节点和当前子节点,将第一类子节点定义为(R(t),R(t.c)),其中,t为WHERE子句包含的数据表名,t.c为WHERE子句包含的列名,且属于数据表t,R(t)为数据表t的特征向量,R(t.c)为列t.c的特征向量;将当前子节点定义为(Hi,R(tH.c)),其中,H为部分连接计划的特征向量,Hi为当前部分连接计划的特征向量,tH为当前部分连接计划包含的数据表名,tH.c为数据表tH包含的列名,且数据表t与数据表tH具有连接关系;
对所述第一类部分连接计划模型SP输入第一类子节点和当前子节点,生成下一时刻部分连接计划的特征向量,计算公式为:
gi=sigmod(Wg*[R(tH.c),R(t.c)]+Yg*[Hi,R(t)]+bg)
ei=sigmod(We*[R(tH.c),R(t.c)]+Ye*[Hi,R(t)]+be)
oi=tanh(Wo*[R(tH.c),R(t.c)]+Yo*[gi*Hi,R(t)]+bo)
Hi+1=(1-ei)*Hi+ei*oi
其中,sigmod()和tanh()为激活函数,gi为当前子节点的信息没有被保留的程度,ei为对当前子节点和第一类子节点的信息提取的程度,oi为第一类子节点和当前子节点被保留的信息,Hi+1为下一时刻部分连接计划的特征向量,Wg和Yg为对信息没有进行保留的权重参数,bg为对信息没有进行保留的偏置参数,We和Ye为对信息进行提取的权重参数,be为对信息进行提取的偏置参数,Wo和Yo为对信息进行保留的权重参数,bo为对信息进行保留的偏置参数,We、Wo、Ye、Yo、be、bo与向量树AT共享;
所述第二类部分连接计划模型SP将当前部分连接计划与连接树进行连接,且当前部分连接计划中某一个数据表与连接树中某一个数据表具有连接关系;
将所述第二类部分连接计划模型SP的输入定义为第二类子节点和当前子节点,将第二类子节点定义为(h,R(th.c)),其中h为连接树的特征向量,th为连接树包含的数据表名,th.c为数据表th包含的列名;将当前子节点定义为(Hi,R(tH.c)),其中,H为部分连接计划的特征向量,Hi为当前部分连接计划的特征向量,tH为当前部分连接计划包含的数据表名,tH.c为数据表tH包含的列名,数据表th与数据表tH具有连接关系;
对所述第二类部分连接计划模型SP输入第二类子节点和当前子节点,生成下一时刻部分连接计划的特征向量,计算公式为:
gi=sigmod(Wg*[R(tH.c),R(th.c)]+Yg*[Hi,h]+bg)
ei=sigmod(We*[R(tH.c),R(th.c)]+Ye*[Hi,h]+be)
oi=tanh(Wo*[R(tH.c),R(th.c)]+Yo*[gi*Hi,h)]+bo)
Hi+1=(1-ei)*Hi+ei*oi
其中,sigmod()和tanh()为激活函数,gi为对当前子节点的信息没有被保留的程度,ei为当前子节点与第二类子节点的信息提取的程度,oi为第二类子节点和当前子节点被保留的信息,Hi+1为下一时刻部分连接计划的特征向量,Wg和Yg为对信息没有进行保留的权重参数,bg为对信息没有进行保留的偏置参数,We和Ye为对信息进行提取的权重参数,be为对信息进行提取的偏置参数,Wo和Yo为对信息进行保留的权重参数,bo为对信息进行保留的偏置参数,We、Wo、Ye、Yo、be、bo与向量树AT共享;
S33、根据连接关系的特征向量和下一时刻部分连接计划的特征向量生成下一时刻连接状态的特征向量,计算公式为:
其中,R(s)为下一时刻连接状态s的特征向量,R(U)为连接关系的特征向量,Hi+1为下一时刻部分连接计划的特征向量。
上述进一步方案的有益效果为:采用部分连接计划模型SP生成下一时刻部分连接计划的特征向量,能够将部分连接计划的结构信息包含进去。结合后续步骤能够不断更新下一时刻部分连接计划,使部分连接计划的结构能够进行动态扩展,从而更加精准地捕捉到部分连接计划的结构信息,能够更加准确生成下一时刻连接状态的特征向量。
进一步地,步骤S4中深度强化学习模型J包括:估计价值神经网络和目标价值神经网络;
所述估计价值神经网络和目标价值神经网络结构相同,均包括:输入层、卷积层、价值函数层、优势函数层和全连接层;所述输入层的输入端作为估计价值神经网络或目标价值神经网络的输入端,其输出端与卷积层的输入端连接;所述卷积层的输出端分别与价值函数层的输入端和优势函数层的输入端连接;所述价值函数层的输出端和优势函数层的输出端均与全连接层的输入端连接;所述全连接层的输出端作为估计价值神经网络或目标价值神经网络的输出端。
进一步地,步骤S4包括以下分步骤:
S401、采用下一时刻部分连接计划的特征向量来重新代替新的当前部分连接计划的特征向量,采用下一时刻连接状态的特征向量来重新代替新的当前连接状态的特征向量;
S402、将新的当前连接状态的特征向量输入估计价值神经网络,得到当前连接状态下所有连接动作对应的估计价值;
S403、采用∈-贪婪法对当前连接状态下所有连接动作对应的估计价值进行筛选,得到当前连接状态下最小估计价值和当前连接状态下最小估计价值对应的连接动作,其中,连接动作表示在WHERE子句包含的数据表中选择两个具有连接关系的数据表进行连接;
S404、根据选择的两个具有连接关系的数据表和新的当前部分连接计划的特征向量,结合向量树AT和部分连接计划模型SP,来生成新的下一时刻部分连接计划的特征向量;
S405、根据步骤S404所得新的下一时刻部分连接计划的特征向量,采用步骤S33的计算公式来生成新的下一时刻连接状态的特征向量;
S406、根据S405所得新的下一时刻连接状态的特征向量生成估计奖励;
S407、将步骤S401所得新的当前连接状态的特征向量、步骤S403所得最小估计价值对应的连接动作、步骤S405所得新的下一时刻连接状态的特征向量和步骤S406所得估计奖励组成单个样本放入训练集合ST中,得到训练集合ST;
S408、根据步骤S405所得新的下一时刻连接状态的特征向量和步骤S406所得估计奖励,计算目标估计价值;
S409、根据步骤S403所得最小估计价值和步骤S408所得目标估计价值,从训练集合ST中采样z个样本,构建均方差损失函数;
S410、根据均方差损失函数,通过神经网络的梯度反向传播来更新估计价值神经网络的所有参数,并且每隔额定时间,将估计价值神经网络的所有参数的参数值传递给目标价值神经网络,进而更新目标价值神经网络的所有参数;
S411、在更新目标价值神经网络所有参数的基础上,根据步骤S404所得新的下一时刻部分连接计划的特征向量和步骤S405所得新的下一时刻连接状态的特征向量,依次循环步骤S401、S402、S403、S404、S405、S406、S407、S408、S409和S410,直到完整连接状态,实现对深度强化学习模型J的所有参数完成一轮更新;
S412、采用多个SQL语句对深度强化学习模型J的所有参数完成多轮更新时,得到深度强化学习模型J的最优参数,生成数据表的最优连接顺序。
上述进一步方案的有益效果为:估计价值神经网络能够直接得到连接动作,相比动态规划方法能够极大降低搜索代价。而且神经网络经过训练后,能够学习到糟糕的连接计划,就能避免之后出现同样糟糕的连接计划,这是传统查询优化器所不具备的学习经验。更为关键的是,整个深度强化学习模型J经过训练后能够超出传统查询优化器关于连接顺序选择的性能,解决查询时间缓慢的问题。
进一步地,步骤S404具体为:
当两个具有连接关系的数据表有且只有一个数据表不存在于当前部分连接计划中,采用第一类部分连接计划模型SP将这个数据表与当前部分连接计划进行连接,生成新的下一时刻部分连接计划的特征向量;当这两个数据表均不存在于当前部分连接计划中,但这两个数据表中某一个数据表与当前部分连接计划包含的某一个数据表具有连接关系时,采用向量树AT将所选择的两个具有连接关系的数据表进行连接,得到新的连接树,然后采用第二类部分连接计划模型SP将当前部分连接计划与新的连接树进行连接,生成新的下一时刻部分连接计划的特征向量。
进一步地,步骤S403中当前连接状态下最小估计价值和当前连接状态下最小估计价值对应的连接动作的计算公式为:
Pest=min(Pest(R(s),A,west,α,β))
Amin(R(s),west,α,β))=argminPest(R(s),A,west,α,β)
其中,Pest为当前连接状态下最小估计价值,min为最小值函数,Pest()为估计价值神经网络,R(s)为新的当前连接状态s的特征向量,A为连接动作,west为估计价值神经网络的权重参数,α为价值函数层的状态参数,β为优势函数层的状态参数,Amin(R(s),west,α,β))为当前连接状态下最小估计价值对应的连接动作,argmin为反函数;
所述步骤S406中生成估计奖励的计算公式为:
R=sigmod(WR*R(s)new)
其中,R为估计奖励,sigmod()为激活函数,R(s)new为新的下一时刻连接状态s的特征向量,WR为计算估计奖励的参数;
所述步骤S408中计算目标估计价值需要使用下一时刻连接状态下最小估计价值对应的连接动作,计算公式为:
Amin(R(s)new,west,α,β)=argminPest(R(s)new,A,west,α,β)
其中,Amin(R(s)new,west,α,β)为下一时刻连接状态下最小估计价值对应的连接动作,R(s)new为新的下一时刻连接状态s的特征向量,west为估计价值神经网络的权重参数,α为价值函数层的状态参数,β为优势函数层的状态参数,argmin为反函数,Pest()为估计价值神经网络,A为连接动作;
所述步骤S408中目标估计价值的计算公式为:
Ptarget=R+γ*Ptarget(R(s)new,Amin(R(s)new,west,α,β),wtarget)
其中,Ptarget为目标估计价值,R为步骤S405所得估计奖励,γ为衰减程度因子,取值范围为0到1,Ptarget()为目标价值神经网络,R(s)new为新的下一时刻连接状态s的特征向量,Amin(R(s)new,west,α,β)为下一时刻连接状态下最小估计价值对应的连接动作,west为估计价值神经网络的权重参数,α为价值函数层的状态参数,β为优势函数层的状态参数,wtarget为目标价值神经网络的目标权重参数;
所述步骤S409构建均方差损失函数需要计算样本的采样优先级、样本的采样概率和样本的权重;
所述样本的采样优先级的计算公式为:
&r=|Ptarget-Pest|
其中,r为样本序号,&r为第r个样本的采样优先级,|·|为绝对值函数,Ptarget为目标估计价值,Pest为最小估计价值;
所述样本的采样概率的计算公式为:
P(r)=&r/(&1+…+&z),r<=z
其中,r为样本序号,z为样本数量,P(r)为第r个样本的采样概率,&r为第r个样本的采样优先级,&1,…,&z为第1个样本的采样优先级至第z个样本的采样优先级;
所述样本的权重的计算公式为:
wr=(P(r))-z/max(w1,…,wz)
其中,r为样本序号,z为样本数量,wr为第r个样本的权重,P(r)为第r个样本的采样概率,max()为最大值函数,w1,…,wz为第1个样本的权重至第r个样本的权重;
所述步骤S409中均方差损失函数的计算公式为:
L=1/z∑r=1wr*(Ptarget-Pest)2
其中,r为样本序号,z为样本数量,L为均方差损失函数值,∑为求和函数,wr为第r个样本的权重,Ptarget为目标估计价值,Pest为最小估计价值。
上述进一步方案的有益效果为:采用估计价值神经网络来得到连接动作,再采用目标价值神经网络来得到目标估计价值,相比采用一个神经网络而言,将得到连接动作的过程和计算目标估计价值的过程分开,能够优化偏低估计的现象。而且在两个神经网络中均采用优势函数层和价值函数层,可以优化神经网络的结构来尽可能使神经网络达到更加良好的效果。另外,在均方差损失函数中引入了样本的采样优先级,样本的采样概率,能够使具有较大误差的样本尽可能被采样到,从而加快了训练过程,能够使神经网络尽快收敛。
综上,本发明的有益效果为:首先,在SQL语句的编码形式上更加全面,提供了更加准确的数据特征;其次能够捕捉到动态扩展的连接计划的结构信息,为深度强化学习提供了更加全面的连接状态信息;最后,在深度强化学习模型J中不仅设计了两个神经网络来优化偏低估计的现象,达到更好的效果,而且设计了价值函数层和优势函数层来优化神经网络结构,以及设计了样本的采样优先级和样本的采样概率来使训练加速,尽快达到收敛。本发明得到数据表的最优连接顺序,在真实查询过程中耗费时间更低,获得更好的查询性能。
附图说明
图1为本方法的大致流程图;
图2为本方法的详细流程图;
图3为本发明的向量树AT架构图;
图4为本发明的第一类部分连接计划模型SP的连接过程图;
图5为本发明的第二类部分连接计划模型SP的连接过程图;
图6为本发明的深度强化学习模型J架构图;
图7为本发明实施例中的SQL语句例子;
图8为本发明实施例中的新的当前部分连接计划1;
图9为本发明实施例中的新的当前部分连接计划2;
图10为本发明实施例中的数据表的最优连接顺序。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
如图1~2所示,一种基于机器学习的数据表连接顺序选择方法,包括以下步骤:
S1、对SQL语句进行编码,分别生成列、数据表和连接关系的特征向量;
在本实施例中,将基于机器学习的数据表连接顺序选择方法在主流数据库上构建,替代传统连接顺序选择方法(如启发式、动态规划等)的查询优化组件,同时基于TPC-H建立包含8个表的销售供货数据库,数据量达到GB级,且通过包含22条SQL语句的模板生成多条SQL语句进行训练和测试,图7仅显示了其中包含一条SQL语句的例子。基于图7例子,对本发明的整体流程说明。首先,对图7中SQL语句中WHERE子句包含的列进行编码,即步骤S1包括以下分步骤:
S11、对SQL语句中WHERE子句包含的列进行编码,生成列的特征编码;
步骤S11中对SQL语句中WHERE子句包含的列进行编码的信息包括:列关联的连接谓词和选择谓词;所述连接谓词包括:连接操作;所述选择谓词包括:等于、不等于、小于和大于的运算操作。
步骤S11中连接谓词的编码公式为:Join(c)=cj,其中,c为WHERE子句包含的任意一个列的列名,Join(c)为列关联的连接谓词的编码,cj为连接操作的编码,cj=0代表无连接操作,cj=1代表有连接操作;选择谓词的编码公式为:Select(c)=(c=,c!=,c<,c>),其中,Select(c)为列关联的选择谓词的编码,c=为等于运算操作的编码,c!=为不等于运算操作的编码,c<为小于运算操作的编码,c>为大于运算操作的编码,且c=,c!=,c<,c>取值为0或者1,0代表无运算操作,1代表有运算操作;列的特征编码公式为:其中F(c)为列的特征编码,为连接符;
列的特征编码如表1所示。
表1列的特征编码的表
S12、对列的特征编码进行处理,生成列的特征向量;
所述步骤S12中生成列的特征向量的计算公式为:
R(c)=leakyRelu(F(c)*w+b)
其中,R(c)为列的特征向量,leakyRelu()为激活函数,F(c)为列的特征编码,w和b为参数;
在本实施例中,步骤S12具体为:基于步骤S11所得列的特征编码表1,对列的特征编码进行处理,消除特征编码的稀疏性,生成更加精确的特征向量,这里将数据表Lineitem包含的列orderkey、列suppkey和数据表Orders包含的列orderkey、列orderdate作为例子进行说明,公式如下:
R(L.or)=LeakyRelu(F(L.or)*w+b)
R(L.su)=LeakyRelu(F(L.su)*w+b)
R(O.or)=LeakyRelu(F(O.or)*w+b)
R(O.od)=LeakyRelu(F(O.od)*w+b)
其中,R(L.or)为数据表Lineitem包含的列orderkey的特征向量,F(L.or)为数据表Lineitem包含的列orderkey的特征编码,R(L.su)为数据表Lineitem包含的列suppkey的特征向量,F(L.su)为数据表Lineitem包含的列suppkey的特征编码,R(O.or)为数据表Orders包含的列orderkey的特征向量,F(O.or)为数据表Orders包含的列orderkey的特征编码,R(O.od)为数据表Orders包含的列orderdate的特征向量,F(O.od)为数据表Orders包含的列orderdate的特征编码;
S13、根据列的特征向量,生成数据表的特征矩阵;
步骤S13中生成数据表的特征矩阵的计算公式为:
其中,t为WHERE子句包含的任意一个数据表的表名,T(t)为数据表的特征矩阵,c1,…,ck为WHERE子句包含的列名,且属于表t,R(c1),…,R(ck)为根据列的特征向量R(c)生成列c1,…,ck的特征向量;
在本实施例中,步骤S13具体为:基于步骤S12所得数据表Lineitem包含的列orderkey的特征向量R(L.or)、数据表Lineitem包含的列suppkey的特征向量R(L.su)、数据表Orders包含的列orderkey的特征向量R(O.or)、数据表Orders包含的列orderdate的特征向量R(O.od),生成数据表Lineitem的特征矩阵T(L)和数据表Orders的特征矩阵T(O),公式如下:
S14、根据数据表的特征矩阵,生成数据表的特征向量;
步骤S14中生成数据表的特征向量的计算公式为:
R(t)=MaxPool(T(t))
其中,R(t)为数据表的特征向量,MaxPool()为最大池化函数;
在本实施例中,步骤S14具体为:根据数据表Lineitem的特征矩阵T(L)和数据表Orders的特征矩阵T(O),采用最大池化函数,生成数据表Lineitem的特征向量R(L)和数据表Orders的特征向量R(O),公式如下:
R(L)=MaxPool(T(L))
R(O)=MaxPool(T(O))
S15、对SQL语句中WHERE子句包含的连接关系进行编码,生成连接关系的特征编码;
步骤S15中生成连接关系的特征编码的公式如下:
u=(N1,2,N1,3,…,N1,n,N2,3,N2,4,…,N2,n,…,Na,b,…,Nn-1,n)
a<b,0<a<n-1,0<b<n,a,b均为整数
其中,u为连接关系的特征编码,N1,2,N1,3,…,N1,n,N2,3,N2,4,…,N2,n,…,Na,b,…,Nn-1,n为WHERE子句包含的任意两个数据表的连接关系的编码,Na,b为1时,代表第a个数据表与第b个数据表有连接,Na,b为0时,代表第a个数据表与第b个数据表无连接,n为WHERE子句包含的数据表的数量;
在本实施例中,步骤S15具体为:将图7中SQL语句中WHERE子句包含的数据表Customer、Orders、Lineitem、Supplier、Nation、Region依次编号为1,2,3,4,5,6,易知数据表Customer与数据表Lineitem、数据表Supplier均有连接,数据表Lineitem与数据表Supplier有连接,数据表Supplier与数据表Nation有连接,数据表Nation与数据表Region有连接,可得u=(0,1,1,0,0,0,0,0,0,1,0,0,1,0,1);
S16、对连接关系的特征编码进行处理,生成连接关系的特征向量;
步骤S16中生成连接关系的特征向量的计算公式为:
R(U)=leakyRelu(u*w+b)
其中,R(U)为连接关系的特征向量,leakyRelu()为激活函数,u为连接关系的特征编码,w和b为参数。
S2、根据列和数据表的特征向量,设计向量树AT来生成连接树的特征向量;
在本实施例中,采用图7中SQL语句中WHERE子句包含的数据表Lineitem和数据表Orders作为例子进行说明,设计向量树AT将数据表Lineitem与数据表Orders进行连接,生成包含数据表Lineitem和数据表Orders的连接树的特征向量hLO,向量树AT架构如图3所示。
所述步骤S2包括以下分步骤:
S21、根据列的特征向量R(c)和数据表的特征向量R(t),设计向量树AT将两个具有连接关系的数据表进行连接;
S22、将向量树AT的输入定义为左子节点和右子节点,将左子节点定义为(R(tl),R(tl.c)),右子节点定义为(R(tr),R(tr.c)),其中tl和tr为WHERE子句包含的数据表名,且数据表tl和tr具有连接关系,tl.c和tr.c为WHERE子句包含的列名,且分别属于数据表tl和tr,R(tl)为数据表tl的特征向量,R(tr)为数据表tr的特征向量,R(tl.c)为列tl.c的特征向量,R(tr.c)为列tr.c的特征向量;
在本实施例,步骤S22具体为:对向量树AT输入的左子节点为(R(L),R(L.or)),右子节点为(R(O),R(O.or)),其中R(L)为数据表Lineitem的特征向量,R(O)为数据表Orders的特征向量,R(L.or)为数据表Lineitem包含的列orderkey的特征向量,R(O.or)为数据表Orders包含的列orderkey的特征向量;
S23、对向量树AT输入左子节点(R(tl),R(tl.c))和右子节点(R(tr),R(tr.c)),生成连接树的特征向量,计算公式为:
e=sigmod(We*[R(tl.c),R(tr.c)]+Ye*[R(tl),R(tr)]+be)
o=tanh(Wo*[R(tl.c),R(tr.c)]+Yo*[R(tl),R(tr)]+bo)
h=e*o
其中,sigmod()和tanh()为激活函数,e为对左右子节点的信息融合更新的程度,o为左右子节点被提取的信息,h为连接树的特征向量,We和Ye为对信息融合更新的权重参数,be为对信息融合更新的偏置参数,Wo和Yo为对信息进行提取的权重参数,bo为对信息进行提取的偏置参数。
在本实施例,步骤S23具体为:对向量树AT输入左子节点(R(L),R(L.or)),和右子节点(R(O),R(O.or)),生成包含数据表Lineitem和数据表Orders的连接树的特征向量hLO,公式如下:
e=sigmod(We*[R(L.or),R(O.or)]+Ye*[R(L),R(O)]+be)
o=tanh(Wo*[R(L.or),R(O.or)]+Yo*[R(L),R(O)]+bo)
hLO=e*o
其中,sigmod()和tanh()为激活函数,e为对左右子节点的信息融合更新的程度,o为左右子节点被提取的信息,hLO为包含数据表Lineitem和数据表Orders的连接树的特征向量。
S3、根据列、数据表、连接关系和连接树的特征向量,设计部分连接计划模型SP来生成部分连接计划的特征向量,进而生成下一时刻连接状态的特征向量;
在本实施例中,步骤S3具体为:在初始时,还没有任何数据表进行连接,那么当前部分连接计划处于数据表无连接的形态,为了便于举例子进行说明,根据步骤S2将数据表Lineitem和数据表Orders进行连接而生成的连接树,将包含数据表Lineitem和数据表Orders的连接树作为当前部分连接计划,且Hi=hLO,那么在当前,有两个数据表Lineitem和Orders已经连接,再引入数据表Supplier、Customer作为例子,设计部分连接计划模型SP将这些数据表连接在一起,生成下一时刻部分连接计划的特征向量,进而生成下一时刻连接状态的特征向量。
步骤S3包括以下分步骤:
S31、根据列、数据表和连接树的特征向量,构建部分连接计划模型SP;
S32、根据部分连接计划模型SP,生成下一时刻部分连接计划的特征向量;
所述步骤S32具体为:
所述部分连接计划模型SP包括:第一类部分连接计划模型SP和第二类部分连接计划模型SP;
所述第一类部分连接计划模型SP将当前部分连接计划与单个数据表进行连接,且当前部分连接计划中某一个数据表与单个数据表具有连接关系;
将所述第一类部分连接计划模型SP的输入定义为第一类子节点和当前子节点,将第一类子节点定义为(R(t),R(t.c)),其中,t为WHERE子句包含的数据表名,t.c为WHERE子句包含的列名,且属于数据表t,R(t)为数据表t的特征向量,R(t.c)为列t.c的特征向量;将当前子节点定义为(Hi,R(tH.c)),其中,H为部分连接计划的特征向量,Hi为当前部分连接计划的特征向量,tH为当前部分连接计划包含的数据表名,tH.c为数据表tH包含的列名,且数据表t与数据表tH具有连接关系;
对所述第一类部分连接计划模型SP输入第一类子节点和当前子节点,生成下一时刻部分连接计划的特征向量,计算公式为:
gi=sigmod(Wg*[R(tH.c),R(t.c)]+Yg*[Hi,R(t)]+bg)
ei=sigmod(We*[R(tH.c),R(t.c)]+Ye*[Hi,R(t)]+be)
oi=tanh(Wo*[R(tH.c),R(t.c)]+Yo*[gi*Hi,R(t)]+bo)
Hi+1=(1-ei)*Hi+ei*oi
其中,sigmod()和tanh()为激活函数,gi为当前子节点的信息没有被保留的程度,ei为对当前子节点和第一类子节点的信息提取的程度,oi为第一类子节点和当前子节点被保留的信息,Hi+1为下一时刻部分连接计划的特征向量,Wg和Yg为对信息没有进行保留的权重参数,bg为对信息没有进行保留的偏置参数,We和Ye为对信息进行提取的权重参数,be为对信息进行提取的偏置参数,Wo和Yo为对信息进行保留的权重参数,bo为对信息进行保留的偏置参数,We、Wo、Ye、Yo、be、bo与向量树AT共享;
在本实施例中,步骤S32中第一类部分连接计划模型SP具体为:第一类部分连接计划模型SP的连接过程如图4,第一类部分连接计划模型SP的输入为第一类子节点(R(S),R(S.su))和当前子节点(Hi,R(L.su)),其中,R(S)为数据表Supplier的特征向量,R(S.su)为数据表Supplier包含的列suppkey的特征向量;Hi为当前部分连接计划的特征向量,R(L.su)为数据表Lineitem包含的列suppkey的特征向量,且数据表Lineitem与数据表Supplier具有连接关系;对第一类部分连接计划模型SP输入第一类子节点和当前子节点,生成下一时刻部分连接计划的特征向量,计算公式为:
gi=sigmod(Wg*[R(L.su),R(S.su)]+Yg*[Hi,R(S)]+bg)
ei=sigmod(We*[R(L.su),R(S.su)]+Ye*[Hi,R(S)]+be)
oi=tanh(Wo*[R(L.su),R(S.su)]+Yo*[gi*Hi,R(S)]+bo)
Hi+1=(1-ei)*Hi+ei*oi
其中,sigmod()和tanh()为激活函数,gi为对当前子节点的信息不保留的程度,ei为对当前子节点和第一类子节点的信息提取的程度,oi为第一类子节点和当前子节点被保留的信息,Hi+1为下一时刻部分连接计划的特征向量,Wg、We、Wo、Yg、Ye、Yo为部分连接计划模型SP的权重参数,bg、be、bo为部分连接计划模型SP的偏置参数,We、Wo、Ye、Yo、be、bo与向量树AT共享;
所述第二类部分连接计划模型SP将当前部分连接计划与连接树进行连接,且当前部分连接计划中某一个数据表与连接树中某一个数据表具有连接关系;
将所述第二类部分连接计划模型SP的输入定义为第二类子节点和当前子节点,将第二类子节点定义为(h,R(th.c)),其中h为连接树的特征向量,th为连接树包含的数据表名,th.c为数据表th包含的列名;将当前子节点定义为(Hi,R(tH.c)),其中,H为部分连接计划的特征向量,Hi为当前部分连接计划的特征向量,tH为当前部分连接计划包含的数据表名,tH.c为数据表tH包含的列名,数据表th与数据表tH具有连接关系;
对所述第二类部分连接计划模型SP输入第二类子节点和当前子节点,生成下一时刻部分连接计划的特征向量,计算公式为:
gi=sigmod(Wg*[R(tH.c),R(th.c)]+Yg*[Hi,h]+bg)
ei=sigmod(We*[R(tH.c),R(th.c)]+Ye*[Hi,h]+be)
oi=tanh(Wo*[R(tH.c),R(th.c)]+Yo*[gi*Hi,h)]+bo)
Hi+1=(1-ei)*Hi+ei*oi
其中,sigmod()和tanh()为激活函数,gi为对当前子节点的信息没有被保留的程度,ei为当前子节点与第二类子节点的信息提取的程度,oi为第二类子节点和当前子节点被保留的信息,Hi+1为下一时刻部分连接计划的特征向量,Wg和Yg为对信息没有进行保留的权重参数,bg为对信息没有进行保留的偏置参数,We和Ye为对信息进行提取的权重参数,be为对信息进行提取的偏置参数,Wo和Yo为对信息进行保留的权重参数,bo为对信息进行保留的偏置参数,We、Wo、Ye、Yo、be、bo与向量树AT共享;
在本实施例中,步骤S32中第二类部分连接计划模型SP具体为:第二类部分连接计划模型SP的连接过程如图5,第二类部分连接计划模型SP的输入为第二类子节点(hSC,R(S.su))和当前子节点(Hi,R(L.su)),其中,hSC为包含数据表Supplier和数据表Customer的连接树的特征向量,R(S.su)为数据表Supplier包含的列suppkey的特征向量;Hi为当前部分连接计划的特征向量,R(L.su)为数据表Lineitem包含的列suppkey的特征向量,且数据表Lineitem与数据表Supplier具有连接关系;对第二类部分连接计划模型SP输入第二类子节点和当前子节点,生成下一时刻部分连接计划的特征向量,计算公式为:
gi=sigmod(Wg*[R(L.su),R(S.su)]+Yg*[Hi,hSC]+bg)
ei=sigmod(We*[R(L.su),R(S.su)]+Ye*[Hi,hSC]+be)
oi=tanh(Wo*[R(L.su),R(S.su)]+Yo*[gi*Hi,hSC)]+bo)
Hi+1=(1-ei)*Hi+ei*oi
其中,sigmod()和tanh()为激活函数,gi为对当前子节点的信息不保留的程度,ei对当前子节点与第二类子节点的信息提取的程度,oi为第二类子节点和当前子节点被保留的信息,Hi+1为下一时刻部分连接计划的特征向量,Wg、We、Wo、Yg、Ye、Yo为部分连接计划模型SP的权重参数,bg、be、bo为部分连接计划模型SP的偏置参数,We、Wo、Ye、Yo、be、bo与向量树AT共享;
S33、根据连接关系的特征向量和下一时刻部分连接计划的特征向量生成下一时刻连接状态的特征向量,计算公式为:
其中,R(s)为下一时刻连接状态s的特征向量,R(U)为连接关系的特征向量,Hi+1为下一时刻部分连接计划的特征向量。
S4、根据下一时刻连接状态的特征向量,构建深度强化学习模型J,并结合部分连接计划模型SP与向量树AT,生成数据表的最优连接顺序。
本实施例中,深度强化学习模型J架构如图6所示。为了便于对如何生成数据表的最优连接顺序的整体流程进行说明,那么对深度强化学习模型J的训练过程就不进行举例说明,默认深度强化学习模型J的训练已经完成,对深度强化学习模型J的所有参数更新到最优。采用步骤S3中第一类部分连接计划模型SP所生成下一时刻部分连接计划的特征向量作为例子进行说明。首先将下一时刻部分连接计划的特征向量来重新代替新的当前部分连接计划1的特征向量,新的当前部分连接计划1如图8所示,表示已经将数据表Lineitem、数据表Orders和数据表Supplier进行连接,接下来根据估计价值神经网络得到连接动作,如选择数据表Supplier和数据表Customer进行连接(此处仅作假设,真实情况需要估计价值神经网络预测得到连接动作),然后根据选择的数据表Customer不存在于当前部分连接计划1,而数据表Supplier存在于当前部分连接计划1,那么采用第一类部分连接计划模型SP将当前部分连接计划1与数据表Customer进行连接,生成新的下一时刻部分连接计划的特征向量。再将新的下一时刻部分连接计划的特征向量来重新代替新的当前部分连接计划2的特征向量,新的当前部分连接计划2如图9所示,表示已经将数据表Lineitem、数据表Orders、数据表Supplier和数据表Customer进行连接,再根据估计价值神经网络得到连接动作,如选择数据表Nation和数据表Region进行连接(此处仅作假设,真实情况需要估计价值神经网络预测得到连接动作),然后根据选择的两个数据表均不存在于当前部分连接计划2,但数据表Nation与当前部分连接计划2包含的数据表Supplier具有连接关系,那么采用第二类部分连接计划模型SP将当前部分连接计划2与包含数据表Nation和数据表Region的连接树进行连接,实现将图7的SQL语句中WHERE子句包含的全部数据表都连接起来,生成数据表的最优连接顺序如图10所示。
步骤S4中深度强化学习模型J包括:估计价值神经网络和目标价值神经网络;所述估计价值神经网络和目标价值神经网络结构相同,均包括:输入层、卷积层、价值函数层、优势函数层和全连接层;所述输入层的输入端作为估计价值神经网络或目标价值神经网络的输入端,其输出端与卷积层的输入端连接;所述卷积层的输出端分别与价值函数层的输入端和优势函数层的输入端连接;所述价值函数层的输出端和优势函数层的输出端均与全连接层的输入端连接;所述全连接层的输出端作为估计价值神经网络或目标价值神经网络的输出端。
所述步骤S4包括以下分步骤:
S401、采用下一时刻部分连接计划的特征向量来重新代替新的当前部分连接计划的特征向量,采用下一时刻连接状态的特征向量来重新代替新的当前连接状态的特征向量;
S402、将新的当前连接状态的特征向量输入估计价值神经网络,得到当前连接状态下所有连接动作对应的估计价值;
S403、采用∈-贪婪法对当前连接状态下所有连接动作对应的估计价值进行筛选,得到当前连接状态下最小估计价值和当前连接状态下最小估计价值对应的连接动作,其中,连接动作表示在WHERE子句包含的数据表中选择两个具有连接关系的数据表进行连接;
步骤S403中当前连接状态下最小估计价值和当前连接状态下最小估计价值对应的连接动作的计算公式为:
Pest=min(Pest(R(s),A,west,α,β))
Amin(R(s),west,α,β))=argminPest(R(s),A,west,α,β)
其中,Pest为当前连接状态下最小估计价值,min为最小值函数,Pest()为估计价值神经网络,R(s)为新的当前连接状态s的特征向量,A为连接动作,west为估计价值神经网络的权重参数,α为价值函数层的状态参数,β为优势函数层的状态参数,Amin(R(s),west,α,β))为当前连接状态下最小估计价值对应的连接动作,argmin为反函数;
S404、根据选择的两个具有连接关系的数据表和新的当前部分连接计划的特征向量,结合向量树AT和部分连接计划模型SP,来生成新的下一时刻部分连接计划的特征向量;
步骤S404具体为:
当两个具有连接关系的数据表有且只有一个数据表不存在于当前部分连接计划中,采用第一类部分连接计划模型SP将这个数据表与当前部分连接计划进行连接,生成新的下一时刻部分连接计划的特征向量;当这两个数据表均不存在于当前部分连接计划中,但这两个数据表中某一个数据表与当前部分连接计划包含的某一个数据表具有连接关系时,采用向量树AT将所选择的两个具有连接关系的数据表进行连接,得到新的连接树,然后采用第二类部分连接计划模型SP将当前部分连接计划与新的连接树进行连接,生成新的下一时刻部分连接计划的特征向量。
S405、根据步骤S404所得新的下一时刻部分连接计划的特征向量,采用步骤S33的计算公式来生成新的下一时刻连接状态的特征向量;
S406、根据S405所得新的下一时刻连接状态的特征向量生成估计奖励;
所述步骤S406中生成估计奖励的计算公式为:
R=sigmod(WR*R(s)new)
其中,R为估计奖励,sigmod()为激活函数,R(s)new为新的下一时刻连接状态s的特征向量,WR为计算估计奖励的参数;
S407、将步骤S401所得新的当前连接状态的特征向量、步骤S403所得最小估计价值对应的连接动作、步骤S405所得新的下一时刻连接状态的特征向量和步骤S406所得估计奖励组成单个样本放入训练集合ST中,得到训练集合ST;
S408、根据步骤S405所得新的下一时刻连接状态的特征向量和步骤S406所得估计奖励,计算目标估计价值;
所述步骤S408中计算目标估计价值需要使用下一时刻连接状态下最小估计价值对应的连接动作,计算公式为:
Amin(R(s)new,west,α,β)=argminPest(R(s)new,A,west,α,β)
其中,Amin(R(s)new,west,α,β)为下一时刻连接状态下最小估计价值对应的连接动作,R(s)new为新的下一时刻连接状态s的特征向量,west为估计价值神经网络的权重参数,α为价值函数层的状态参数,β为优势函数层的状态参数,argmin为反函数,Pest()为估计价值神经网络,A为连接动作;
所述步骤S408中目标估计价值的计算公式为:
Ptarget=R+γ*Ptarget(R(s)new,Amin(R(s)new,west,α,β),wtarget)
其中,Ptarget为目标估计价值,R为步骤S405所得估计奖励,γ为衰减程度因子,取值范围为0到1,Ptarget()为目标价值神经网络,R(s)new为新的下一时刻连接状态s的特征向量,Amin(R(s)new,west,α,β)为下一时刻连接状态下最小估计价值对应的连接动作,west为估计价值神经网络的权重参数,α为价值函数层的状态参数,β为优势函数层的状态参数,wtarget为目标价值神经网络的目标权重参数;
S409、根据步骤S403所得最小估计价值和步骤S408所得目标估计价值,从训练集合ST中采样z个样本,构建均方差损失函数;
所述步骤S409构建均方差损失函数需要计算样本的采样优先级、样本的采样概率和样本的权重;
所述样本的采样优先级的计算公式为:
&r=|Ptarget-Pest|
其中,r为样本序号,&r为第r个样本的采样优先级,|·|为绝对值函数,Ptarget为目标估计价值,Pest为最小估计价值;
所述样本的采样概率的计算公式为:
P(r)=&r/(&1+…+&z),r<=z
其中,r为样本序号,z为样本数量,P(r)为第r个样本的采样概率,&r为第r个样本的采样优先级,&1,…,&z为第1个样本的采样优先级至第z个样本的采样优先级;
所述样本的权重的计算公式为:
wr=(P(r))-z/max(w1,…,wz)
其中,r为样本序号,z为样本数量,wr为第r个样本的权重,P(r)为第r个样本的采样概率,max()为最大值函数,w1,…,wz为第1个样本的权重至第r个样本的权重;
所述步骤S409中均方差损失函数的计算公式为:
L=1/z∑r=1wr*(Ptarget-Pest)2
其中,r为样本序号,z为样本数量,L为均方差损失函数值,∑为求和函数,wr为第r个样本的权重,Ptarget为目标估计价值,Pest为最小估计价值。
S410、根据均方差损失函数,通过神经网络的梯度反向传播来更新估计价值神经网络的所有参数,并且每隔额定时间,将估计价值神经网络的所有参数的参数值传递给目标价值神经网络,进而更新目标价值神经网络的所有参数;
S411、在更新目标价值神经网络所有参数的基础上,根据步骤S404所得新的下一时刻部分连接计划的特征向量和步骤S405所得新的下一时刻连接状态的特征向量,依次循环步骤S401、S402、S403、S404、S405、S406、S407、S408、S409和S410,直到完整连接状态,实现对深度强化学习模型J的所有参数完成一轮更新;
S412、采用多个SQL语句对深度强化学习模型J的所有参数完成多轮更新时,得到深度强化学习模型J的最优参数,生成数据表的最优连接顺序。
Claims (8)
1.一种基于机器学习的数据表连接顺序选择方法,其特征在于,包括以下步骤:
S1、对SQL语句进行编码,分别生成列、数据表和连接关系的特征向量;
S2、根据列和数据表的特征向量,设计向量树AT来生成连接树的特征向量;
步骤S2包括以下分步骤:
S21、根据列的特征向量R(c)和数据表的特征向量R(t),设计向量树AT将两个具有连接关系的数据表进行连接;
S22、将向量树AT的输入定义为左子节点和右子节点,将左子节点定义为(R(tl),R(tl.c)),右子节点定义为(R(tr),R(tr.c)),其中tl和tr为WHERE子句包含的数据表名,且数据表tl和tr具有连接关系,tl.c和tr.c为WHERE子句包含的列名,且分别属于数据表tl和tr,R(tl)为数据表tl的特征向量,R(tr)为数据表tr的特征向量,R(tl.c)为列tl.c的特征向量,R(tr.c)为列tr.c的特征向量;
S23、对向量树AT输入左子节点(R(tl),R(tl.c))和右子节点(R(tr),R(tr.c)),生成连接树的特征向量,计算公式为:
e=sigmod(We*[R(tl.c),R(tr.c)]+Ye*[R(tl),R(tr)]+be)
o=tanh(Wo*[R(tl.c),R(tr.c)]+Yo*[R(tl),R(tr)]+bo)
h=e*o
其中,sigmod()和tanh()为激活函数,e为对左右子节点的信息融合更新的程度,o为左右子节点被提取的信息,h为连接树的特征向量,We和Ye为对信息融合更新的权重参数,be为对信息融合更新的偏置参数,Wo和Yo为对信息进行提取的权重参数,bo为对信息进行提取的偏置参数;
S3、根据列、数据表、连接关系和连接树的特征向量,设计部分连接计划模型SP来生成部分连接计划的特征向量,进而生成下一时刻连接状态的特征向量;
步骤S3包括以下分步骤:
S31、根据列、数据表和连接树的特征向量,构建部分连接计划模型SP;
S32、根据部分连接计划模型SP,生成下一时刻部分连接计划的特征向量;
所述步骤S32具体为:
所述部分连接计划模型SP包括:第一类部分连接计划模型SP和第二类部分连接计划模型SP;
所述第一类部分连接计划模型SP将当前部分连接计划与单个数据表进行连接,且当前部分连接计划中某一个数据表与单个数据表具有连接关系;
将所述第一类部分连接计划模型SP的输入定义为第一类子节点和当前子节点,将第一类子节点定义为(R(t),R(t.c)),其中,t为WHERE子句包含的数据表名,t.c为WHERE子句包含的列名,且属于数据表t,R(t)为数据表t的特征向量,R(t.c)为列t.c的特征向量;将当前子节点定义为(Hi,R(tH.c)),其中,H为部分连接计划的特征向量,Hi为当前部分连接计划的特征向量,tH为当前部分连接计划包含的数据表名,tH.c为数据表tH包含的列名,且数据表t与数据表tH具有连接关系;
对所述第一类部分连接计划模型SP输入第一类子节点和当前子节点,生成下一时刻部分连接计划的特征向量,计算公式为:
gi=sigmod(Wg*[R(tH.c),R(t.c)]+Yg*[Hi,R(t)]+bg)
ei=sigmod(We*[R(tH.c),R(t.c)]+Ye*[Hi,R(t)]+be)
oi=tanh(Wo*[R(tH.c),R(t.c)]+Yo*[gi*Hi,R(t)]+bo)
Hi+1=(1-ei)*Hi+ei*oi
其中,sigmod()和tanh()为激活函数,gi为当前子节点的信息没有被保留的程度,ei为对当前子节点和第一类子节点的信息提取的程度,oi为第一类子节点和当前子节点被保留的信息,Hi+1为下一时刻部分连接计划的特征向量,Wg和Yg为对信息没有进行保留的权重参数,bg为对信息没有进行保留的偏置参数,We和Ye为对信息进行提取的权重参数,be为对信息进行提取的偏置参数,Wo和Yo为对信息进行保留的权重参数,bo为对信息进行保留的偏置参数,We、Wo、Ye、Yo、be、bo与向量树AT共享;
所述第二类部分连接计划模型SP将当前部分连接计划与连接树进行连接,且当前部分连接计划中某一个数据表与连接树中某一个数据表具有连接关系;
将所述第二类部分连接计划模型SP的输入定义为第二类子节点和当前子节点,将第二类子节点定义为(h,R(th.c)),其中h为连接树的特征向量,th为连接树包含的数据表名,th.c为数据表th包含的列名;将当前子节点定义为(Hi,R(tH.c)),其中,H为部分连接计划的特征向量,Hi为当前部分连接计划的特征向量,tH为当前部分连接计划包含的数据表名,tH.c为数据表tH包含的列名,数据表th与数据表tH具有连接关系;
对所述第二类部分连接计划模型SP输入第二类子节点和当前子节点,生成下一时刻部分连接计划的特征向量,计算公式为:
gi=sigmod(Wg*[R(tH.c),R(th.c)]+Yg*[Hi,h]+bg)
ei=sigmod(We*[R(tH.c),R(th.c)]+Ye*[Hi,h]+be)
oi=tanh(Wo*[R(tH.c),R(th.c)]+Yo*[gi*Hi,h)]+bo)
Hi+1=(1-ei)*Hi+ei*oi
其中,sigmod()和tanh()为激活函数,gi为对当前子节点的信息没有被保留的程度,ei为当前子节点与第二类子节点的信息提取的程度,oi为第二类子节点和当前子节点被保留的信息,Hi+1为下一时刻部分连接计划的特征向量,Wg和Yg为对信息没有进行保留的权重参数,bg为对信息没有进行保留的偏置参数,We和Ye为对信息进行提取的权重参数,be为对信息进行提取的偏置参数,Wo和Yo为对信息进行保留的权重参数,bo为对信息进行保留的偏置参数,We、Wo、Ye、Yo、be、bo与向量树AT共享;
S33、根据连接关系的特征向量和下一时刻部分连接计划的特征向量生成下一时刻连接状态的特征向量,计算公式为:
其中,R(s)为下一时刻连接状态s的特征向量,R(U)为连接关系的特征向量,Hi+1为下一时刻部分连接计划的特征向量;
S4、根据下一时刻连接状态的特征向量,构建深度强化学习模型J,并结合部分连接计划模型SP与向量树AT,生成数据表的最优连接顺序。
2.根据权利要求1所述的基于机器学习的数据表连接顺序选择方法,其特征在于,所述步骤S1包括以下分步骤:
S11、对SQL语句中WHERE子句包含的列进行编码,生成列的特征编码;
S12、对列的特征编码进行处理,生成列的特征向量;
S13、根据列的特征向量,生成数据表的特征矩阵;
S14、根据数据表的特征矩阵,生成数据表的特征向量;
S15、对SQL语句中WHERE子句包含的连接关系进行编码,生成连接关系的特征编码;
S16、对连接关系的特征编码进行处理,生成连接关系的特征向量。
3.根据权利要求2所述的基于机器学习的数据表连接顺序选择方法,其特征在于,所述步骤S11中对SQL语句中WHERE子句包含的列进行编码的信息包括:列关联的连接谓词和选择谓词;所述连接谓词包括:连接操作;所述选择谓词包括:等于、不等于、小于和大于的运算操作。
4.根据权利要求3所述的基于机器学习的数据表连接顺序选择方法,其特征在于,所述步骤S11中连接谓词的编码公式为:Join(c)=cj,其中,c为WHERE子句包含的任意一个列的列名,Join(c)为列关联的连接谓词的编码,cj为连接操作的编码,cj=0代表无连接操作,cj=1代表有连接操作;选择谓词的编码公式为:Select(c)=(c=,c!=,c<,c>),其中,Select(c)为列关联的选择谓词的编码,c=为等于运算操作的编码,c!=为不等于运算操作的编码,c<为小于运算操作的编码,c>为大于运算操作的编码,且c=,c!=,c<,c>取值为0或者1,0代表无运算操作,1代表有运算操作;列的特征编码公式为:其中F(c)为列的特征编码,为连接符;
所述步骤S12中生成列的特征向量的计算公式为:
R(c)=leakyRelu(F(c)*w+b)
其中,R(c)为列的特征向量,leakyRelu()为激活函数,F(c)为列的特征编码,w和b为参数;
所述步骤S13中生成数据表的特征矩阵的计算公式为:
其中,t为WHERE子句包含的任意一个数据表的表名,T(t)为数据表的特征矩阵,c1,…,ck为WHERE子句包含的列名,且属于表t,R(c1),…,R(ck)为根据列的特征向量R(c)生成列c1,…,ck的特征向量;
步骤S14中生成数据表的特征向量的计算公式为:
R(t)=MaxPool(T(t))
其中,R(t)为数据表的特征向量,MaxPool()为最大池化函数;
步骤S15中生成连接关系的特征编码的公式如下:
u=(N1,2,N1,3,…,N1,n,N2,3,N2,4,…,N2,n,…,Na,b,…,Nn-1,n)
a<b,0<a<n-1,0<b<n,a,b均为整数
其中,u为连接关系的特征编码,N1,2,N1,3,…,N1,n,N2,3,N2,4,…,N2,n,…,Na,b,…,Nn-1,n为WHERE子句包含的任意两个数据表的连接关系的编码,Na,b为1时,代表第a个数据表与第b个数据表有连接,Na,b为0时,代表第a个数据表与第b个数据表无连接,n为WHERE子句包含的数据表的数量;
所述步骤S16中生成连接关系的特征向量的计算公式为:
R(U)=leakyRelu(u*w+b)
其中,R(U)为连接关系的特征向量,leakyRelu()为激活函数,u为连接关系的特征编码,w和b为参数。
5.根据权利要求1所述的基于机器学习的数据表连接顺序选择方法,其特征在于,所述步骤S4中深度强化学习模型J包括:估计价值神经网络和目标价值神经网络;
所述估计价值神经网络和目标价值神经网络结构相同,均包括:输入层、卷积层、价值函数层、优势函数层和全连接层;所述输入层的输入端作为估计价值神经网络或目标价值神经网络的输入端,其输出端与卷积层的输入端连接;所述卷积层的输出端分别与价值函数层的输入端和优势函数层的输入端连接;所述价值函数层的输出端和优势函数层的输出端均与全连接层的输入端连接;所述全连接层的输出端作为估计价值神经网络或目标价值神经网络的输出端。
6.根据权利要求1所述的基于机器学习的数据表连接顺序选择方法,其特征在于,所述步骤S4包括以下分步骤:
S401、采用下一时刻部分连接计划的特征向量来重新代替新的当前部分连接计划的特征向量,采用下一时刻连接状态的特征向量来重新代替新的当前连接状态的特征向量;
S402、将新的当前连接状态的特征向量输入估计价值神经网络,得到当前连接状态下所有连接动作对应的估计价值;
S403、采用∈-贪婪法对当前连接状态下所有连接动作对应的估计价值进行筛选,得到当前连接状态下最小估计价值和当前连接状态下最小估计价值对应的连接动作,其中,连接动作表示在WHERE子句包含的数据表中选择两个具有连接关系的数据表进行连接;
S404、根据选择的两个具有连接关系的数据表和新的当前部分连接计划的特征向量,结合向量树AT和部分连接计划模型SP,来生成新的下一时刻部分连接计划的特征向量;
S405、根据步骤S404所得新的下一时刻部分连接计划的特征向量,采用步骤S33的计算公式来生成新的下一时刻连接状态的特征向量;
S406、根据S405所得新的下一时刻连接状态的特征向量生成估计奖励;
S407、将步骤S401所得新的当前连接状态的特征向量、步骤S403所得最小估计价值对应的连接动作、步骤S405所得新的下一时刻连接状态的特征向量和步骤S406所得估计奖励组成单个样本放入训练集合ST中,得到训练集合ST;
S408、根据步骤S405所得新的下一时刻连接状态的特征向量和步骤S406所得估计奖励,计算目标估计价值;
S409、根据步骤S403所得最小估计价值和步骤S408所得目标估计价值,从训练集合ST中采样z个样本,构建均方差损失函数;
S410、根据均方差损失函数,通过神经网络的梯度反向传播来更新估计价值神经网络的所有参数,并且每隔额定时间,将估计价值神经网络的所有参数的参数值传递给目标价值神经网络,进而更新目标价值神经网络的所有参数;
S411、在更新目标价值神经网络所有参数的基础上,根据步骤S404所得新的下一时刻部分连接计划的特征向量和步骤S405所得新的下一时刻连接状态的特征向量,依次循环步骤S401、S402、S403、S404、S405、S406、S407、S408、S409和S410,直到完整连接状态,实现对深度强化学习模型J的所有参数完成一轮更新;
S412、采用多个SQL语句对深度强化学习模型J的所有参数完成多轮更新时,得到深度强化学习模型J的最优参数,生成数据表的最优连接顺序。
7.根据权利要求6所述的基于机器学习的数据表连接顺序选择方法,其特征在于,所述步骤S404具体为:
当两个具有连接关系的数据表有且只有一个数据表不存在于当前部分连接计划中,采用第一类部分连接计划模型SP将这个数据表与当前部分连接计划进行连接,生成新的下一时刻部分连接计划的特征向量;当这两个数据表均不存在于当前部分连接计划中,但这两个数据表中某一个数据表与当前部分连接计划包含的某一个数据表具有连接关系时,采用向量树AT将所选择的两个具有连接关系的数据表进行连接,得到新的连接树,然后采用第二类部分连接计划模型SP将当前部分连接计划与新的连接树进行连接,生成新的下一时刻部分连接计划的特征向量。
8.根据权利要求6所述的基于机器学习的数据表连接顺序选择方法,其特征在于,所述步骤S403中当前连接状态下最小估计价值和当前连接状态下最小估计价值对应的连接动作的计算公式为:
Pest=min(Pest(R(s),A,west,α,β))
Amin(R(s),west,α,β))=argminPest(R(s),A,west,α,β)
其中,Pest为当前连接状态下最小估计价值,min为最小值函数,Pest()为估计价值神经网络,R(s)为新的当前连接状态s的特征向量,A为连接动作,west为估计价值神经网络的权重参数,α为价值函数层的状态参数,β为优势函数层的状态参数,Amin(R(s),west,α,β))为当前连接状态下最小估计价值对应的连接动作,argmin为反函数;
所述步骤S406中生成估计奖励的计算公式为:
R=sigmod(WR*R(s)new)
其中,R为估计奖励,sigmod()为激活函数,R(s)new为新的下一时刻连接状态s的特征向量,WR为计算估计奖励的参数;
所述步骤S408中计算目标估计价值需要使用下一时刻连接状态下最小估计价值对应的连接动作,计算公式为:
Amin(R(s)new,west,α,β)=argminPest(R(s)new,A,west,α,β)
其中,Amin(R(s)new,west,α,β)为下一时刻连接状态下最小估计价值对应的连接动作,R(s)new为新的下一时刻连接状态s的特征向量,west为估计价值神经网络的权重参数,α为价值函数层的状态参数,β为优势函数层的状态参数,argmin为反函数,Pest()为估计价值神经网络,A为连接动作;
所述步骤S408中目标估计价值的计算公式为:
Ptarget=R+γ*Ptarget(R(s)new,Amin(R(s)new,west,α,β),wtarget)
其中,Ptarget为目标估计价值,R为步骤S405所得估计奖励,γ为衰减程度因子,取值范围为0到1,Ptarget()为目标价值神经网络,R(s)new为新的下一时刻连接状态s的特征向量,Amin(R(s)new,west,α,β)为下一时刻连接状态下最小估计价值对应的连接动作,west为估计价值神经网络的权重参数,α为价值函数层的状态参数,β为优势函数层的状态参数,wtarget为目标价值神经网络的目标权重参数;
所述步骤S409构建均方差损失函数需要计算样本的采样优先级、样本的采样概率和样本的权重;
所述样本的采样优先级的计算公式为:
&r=|Ptarget-Pest|
其中,r为样本序号,&r为第r个样本的采样优先级,|·|为绝对值函数,Ptarget为目标估计价值,Pest为最小估计价值;
所述样本的采样概率的计算公式为:
P(r)=&r/(&1+…+&z),r<=z
其中,r为样本序号,z为样本数量,P(r)为第r个样本的采样概率,&r为第r个样本的采样优先级,&1,…,&z为第1个样本的采样优先级至第z个样本的采样优先级;
所述样本的权重的计算公式为:
wr=(P(r))-z/max(w1,…,wz)
其中,r为样本序号,z为样本数量,wr为第r个样本的权重,P(r)为第r个样本的采样概率,max()为最大值函数,w1,…,wz为第1个样本的权重至第r个样本的权重;
所述步骤S409中均方差损失函数的计算公式为:
L=1/z∑r=1wr*(Ptarget-Pest)2
其中,r为样本序号,z为样本数量,L为均方差损失函数值,∑为求和函数,wr为第r个样本的权重,Ptarget为目标估计价值,Pest为最小估计价值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110152193.2A CN112905591B (zh) | 2021-02-04 | 2021-02-04 | 一种基于机器学习的数据表连接顺序选择方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110152193.2A CN112905591B (zh) | 2021-02-04 | 2021-02-04 | 一种基于机器学习的数据表连接顺序选择方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112905591A CN112905591A (zh) | 2021-06-04 |
CN112905591B true CN112905591B (zh) | 2022-08-26 |
Family
ID=76122080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110152193.2A Active CN112905591B (zh) | 2021-02-04 | 2021-02-04 | 一种基于机器学习的数据表连接顺序选择方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112905591B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239541A (zh) * | 2017-06-02 | 2017-10-10 | 星环信息科技(上海)有限公司 | 一种代价估计的方法及设备 |
CN108427985A (zh) * | 2018-01-02 | 2018-08-21 | 北京理工大学 | 一种基于深度强化学习的插电式混合动力车辆能量管理方法 |
CN108959510A (zh) * | 2018-06-27 | 2018-12-07 | 阿里巴巴集团控股有限公司 | 一种分布式数据库的分区级连接方法和装置 |
CN109086267A (zh) * | 2018-07-11 | 2018-12-25 | 南京邮电大学 | 一种基于深度学习的中文分词方法 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080120304A1 (en) * | 2006-11-21 | 2008-05-22 | Calio Robert J | Method and system for providing high performance data modification of relational database tables |
CN101420313B (zh) * | 2007-10-22 | 2011-01-12 | 北京搜狗科技发展有限公司 | 一种针对客户端用户群进行聚类的方法和系统 |
CN101969458B (zh) * | 2010-11-26 | 2012-12-26 | 西安电子科技大学 | 支持层次化网络拓扑的p2p流量优化方法 |
CN102693303B (zh) * | 2012-05-18 | 2017-06-06 | 上海极值信息技术有限公司 | 一种公式化数据的搜索方法及装置 |
CN102768670B (zh) * | 2012-05-31 | 2014-08-20 | 哈尔滨工程大学 | 基于节点属性标签传播的网页聚类方法 |
US20150026153A1 (en) * | 2013-07-17 | 2015-01-22 | Thoughtspot, Inc. | Search engine for information retrieval system |
CN103927346B (zh) * | 2014-03-28 | 2017-02-15 | 浙江大学 | 基于数据量的查询连接方法 |
CN105912562B (zh) * | 2016-03-21 | 2019-05-14 | 华南理工大学 | 基于层次化模型的数据可视化方法及其系统 |
CN106779084B (zh) * | 2016-09-30 | 2019-07-09 | 广州英康唯尔互联网服务有限公司 | 机器学习系统及方法 |
CN108122035B (zh) * | 2016-11-29 | 2019-10-18 | 科大讯飞股份有限公司 | 端到端建模方法及系统 |
CN106951489A (zh) * | 2017-03-13 | 2017-07-14 | 杭州师范大学 | 一种用于稀疏大数据的个性化推荐方法和装置 |
CN107169445B (zh) * | 2017-05-11 | 2020-07-03 | 北京东方金指科技有限公司 | 一种大规模掌纹编码和比对方法 |
CN107992486A (zh) * | 2017-10-30 | 2018-05-04 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN108182230B (zh) * | 2017-12-27 | 2020-11-03 | 南京师范大学 | 基于位向量四叉树的移动对象汇聚模式挖掘方法 |
CN108256086A (zh) * | 2018-01-22 | 2018-07-06 | 成都博睿德科技有限公司 | 数据特征统计分析方法 |
CN108549666B (zh) * | 2018-03-22 | 2021-05-04 | 上海达梦数据库有限公司 | 一种数据表的排序方法、装置、设备及存储介质 |
CN108923983B (zh) * | 2018-07-13 | 2021-01-12 | 南昌航空大学 | 机会网络链路的预测方法、装置及可读存储介质 |
CN109325029A (zh) * | 2018-08-30 | 2019-02-12 | 天津大学 | 基于稀疏矩阵的rdf数据存储和查询方法 |
CN109753520B (zh) * | 2019-01-28 | 2021-01-26 | 上海达梦数据库有限公司 | 半连接查询方法、装置、服务器及存储介质 |
KR20210125122A (ko) * | 2019-03-08 | 2021-10-18 | 엘지전자 주식회사 | 인공 지능 기기 및 그의 동작 방법 |
CN110888859B (zh) * | 2019-11-01 | 2022-04-01 | 浙江大学 | 一种基于组合深度神经网络的连接基数估计方法 |
CN110968713B (zh) * | 2019-11-25 | 2023-05-12 | 盈嘉互联(北京)科技有限公司 | Bim多尺度信息检索方法及装置 |
CN111756455B (zh) * | 2019-12-26 | 2022-09-13 | 广州极飞科技股份有限公司 | 电子设备与基准站的连接状态预警方法及相关装置 |
CN111611274A (zh) * | 2020-05-28 | 2020-09-01 | 华中科技大学 | 一种数据库查询优化方法和系统 |
-
2021
- 2021-02-04 CN CN202110152193.2A patent/CN112905591B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239541A (zh) * | 2017-06-02 | 2017-10-10 | 星环信息科技(上海)有限公司 | 一种代价估计的方法及设备 |
CN108427985A (zh) * | 2018-01-02 | 2018-08-21 | 北京理工大学 | 一种基于深度强化学习的插电式混合动力车辆能量管理方法 |
CN108959510A (zh) * | 2018-06-27 | 2018-12-07 | 阿里巴巴集团控股有限公司 | 一种分布式数据库的分区级连接方法和装置 |
CN109086267A (zh) * | 2018-07-11 | 2018-12-25 | 南京邮电大学 | 一种基于深度学习的中文分词方法 |
Non-Patent Citations (1)
Title |
---|
高校业务系统数据集成研究与应用;马鸿健等;《信息通信》;20200715(第07期);第178-179页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112905591A (zh) | 2021-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yu et al. | Reinforcement learning with tree-lstm for join order selection | |
CN110543517B (zh) | 一种基于Elasticsearch实现海量数据复杂查询方法、装置及介质 | |
CN111611274A (zh) | 一种数据库查询优化方法和系统 | |
CN110888859B (zh) | 一种基于组合深度神经网络的连接基数估计方法 | |
US20210018332A1 (en) | Poi name matching method, apparatus, device and storage medium | |
WO2021139753A1 (zh) | 一种数据库的处理方法和装置 | |
CN113190593A (zh) | 一种基于数字人文知识图谱的搜索推荐方法 | |
CN112612948B (zh) | 一种基于深度强化学习的推荐系统构建方法 | |
CN111444220A (zh) | 规则驱动和数据驱动相结合的跨平台sql查询优化方法 | |
CN106708929A (zh) | 视频节目的搜索方法和装置 | |
US9406027B2 (en) | Making predictions regarding evaluation of functions for a database environment | |
CN115062070A (zh) | 一种基于问答的文本表格数据查询方法 | |
CN111125316A (zh) | 一种融合多损失函数及注意力机制的知识库问答方法 | |
CN114911844B (zh) | 基于机器学习的近似查询优化系统 | |
CN114116778A (zh) | 一种数据库查询优化方法 | |
CN117290376A (zh) | 基于大语言模型的两阶段Text2SQL模型、方法与系统 | |
CN113515540A (zh) | 一种数据库的查询重写方法 | |
CN110389953B (zh) | 基于压缩图的数据存储方法、存储介质、存储装置和服务器 | |
CN112905591B (zh) | 一种基于机器学习的数据表连接顺序选择方法 | |
CN111723076A (zh) | 一种生成数据库索引的方法和装置 | |
CN113836174B (zh) | 基于强化学习dqn算法的异步sql连接查询优化方法 | |
Zamani et al. | Stochastic retrieval-conditioned reranking | |
CN114048216B (zh) | 索引选择方法、电子设备及存储介质 | |
Gao et al. | Automatic index selection with learned cost estimator | |
CN114168625A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |