Reinforcement Learning with Tree LSTM for Join Order Selection学习笔记

前言

现存的基于DRL的方法有如下两个缺点,因此这篇工作提出了RTOS。文章链接:http://da.qcri.org/ntang/pubs/icde20jos.pdf .

- 现存方法使用的特征向量无法捕获连接树的结构信息
- 当数据库模式更改(例如,添加列/表或多别名表名称)时,现存方法需要新的不同长度的向量输入并重新训练神经网络。

方法

表示

Query

查询包含\(n\)个表,则定义\(m\)\(n*\)的矩阵,其中\(m_{i,j}\)为1或0表示第\(i,j\)个表是否连接。将\(m\)展开为一维得到向量\(v\),经过全连接层和激活函数的计算得出查询的表示\(R(q)\)
图片名称

图片名称

Column

定义向量\(F(c)\),与该列在查询中的查询条件有关。其中各值的定义方法以及特殊情况的处理已在论文中说明。
图片名称

再定义与\(c\)相关的矩阵\(M(c)\)\(F(c)\)\(M(c)\)做矩阵乘积可得列的表示\(R(c)\)
图片名称

Table

定义\(M(c)\),即将一个表中\(k\)个列的表示拼接。
图片名称

\(M(c)\)做最大池化可得表的表示\(R(t)\)
图片名称

State

为了基于以上表示来很好地表示连接过程中的状态,本文引入了\(Tree-LSTM\)。且使用了\(Child-Sum Tree-LSTM\)\(N-ary Tree-LSTM\)两种方法结合的方式。具体来讲:

- 叶子节点:基于上述表示或者由$Child-Sum Tree-LSTM$计算得出。
- 中间节点:由$Child-Sum Tree-LSTM$计算得出。
- 根节点$h^{root}$:由$Child-Sum Tree-LSTM$计算得出。

根节点可以代表整个连接状态对应的森林
图片名称

将森林的表示与查询的表示拼接可以表示连接过程中的任何一个状态:
图片名称

图片名称

Rtos的强化学习策略

本文采用Deep Q learning的方法,并且在训练阶段主要采用Cost estimation评估代价,微调阶段再加入真实的latency来微调网络参数。

图片名称

其中 图片名称 表示最优连接决策与当前采取的决策之间的奖励差。

图片名称

cost training阶段设置\(W_L,W_c\)分别为1,0。在latency tuning阶段设置\(W_L,W_c\)分别为1,1。

对数据库修改和多名同表的处理

文中写得很清楚也很简单,略

实验

在cost、latency以及收敛速度方面均有相当程度的提升;具体设置以及结果见论文。

总结思考

已写在其他地方
posted @ 2020-10-15 13:10  Tete、  阅读(196)  评论(0)    收藏  举报