Page 362 - 《软件学报》2026年第2期
P. 362

姬涛 等: AI 赋能的关系型数据库系统研究: 标准化、技术与挑战                                                841


                 据前一阶段的结果, 按其对查询基数的贡献比例选择样本. NeuroCard                [206] 是对  Naru  的拓展, NeuroCard  在所有表的
                 完整外部连接上构建一个深度自回归模型. 同时                NeuroCard  对大基数列引入了无损列分解, 并使用连接计数表来
                 支持对表子集的任何查询. FactorJoin     [207] 利用连接直方图高效处理连接操作, 并结合神经网络方法捕捉属性之间的
                 相关性. FactorJoin  将连接查询转换为单表数据分布上的因子图, 并基于因子图模型融合所建立的单表数据分布模
                 型. FACE [208] 采用基于标准化流   (normalizing flow) 模型学习数据点的联合概率分布, 将连续随机变量的复杂分布
                 转换为简单分布并计算每个元组的概率密度. SAM-CE               [209] 考虑部分数据域的稀疏性以及在处理范围查询时数据采
                 样的样本质量对估计误差的累积传播, 提出了一种随机平滑自回归基数估计器. 针对数据稀疏性问题, SAM-CE                               向
                 原始分布中添加适量的噪声以平滑数据分布, 使之更加容易学习数据分布, 同时提出了一种平滑采样策略, 以减少
                 由于误差传播而导致的累积误差, 从而提高采样质量.
                    查询驱动规模估算的方法以历史查询负载作为训练数据, 以有监督学习的方式训练一个从查询语句到基数估
                 计的映射模型. MSCN     [210] 提出用多组神经网络模型将输入的查询编码为多个特征向量, 再由多层神经网络分别将
                 特征向量转化为特征向量表示, 最后整合这些向量并将其映射为查询的基数大小. Fauce                         [211] 用表的连接图表示数
                 据库中表之间的依赖关系并且基于全局列关系表征各个列之间的依赖关系, Fauce 还定义了数据和模型的不确定
                 性, 并使用训练查询样本重新采样或重新训练的方式减少不确定性. LPCE                    [212] 分别设计了基于  SRU (simple recurrent
                 unit) 模型的  LPCE-I 和  LPCE-R  模型, 前者用作查询驱动的基数估计器以辅助初始查询计划的生成, 后者用于在
                 初始查询计划执行过程中及时根据已被执行节点的真实基数重新优化未被执行的计划节点. 为了提高初始计划的
                 生成效率, LPCE-I 模型采用了知识蒸馏技术, 从一个复杂的              teacher 模型训练  student 模型用于快速输出节点的基
                 数估计.
                    虽然查询驱动的方法相对于数据驱动的方法有着更快的模型推理速度且支持更复杂的查询类型, 但是当查询
                 或者数据发生改变时, 查询驱动的方法的准确性将显著降低. 因此为了使得查询驱动的方法能更好地适应数据库
                 负载的变化, 一些研究在现有方法之上增加能够增强模型鲁棒性的组件. 针对查询负载的改变, Warper                              [213] 基于
                 GAN (generative adversarial network) 的思想, 分别设计了生成器合成具有新的查询类型的训练样本和对抗鉴别器
                 区分合成查询和实际观测到的查询, 这使得合成的训练样本集合更加符合查询负载的改变情况, 使模型可以预先
                 适应负载的可能的变化. 对于数据的改变, Warper 基于主动学习的思想挑选有价值的样本以重新获得标签用于重
                 训练基数预测模型. 文献       [214] 在训练阶段隐藏一部分查询特征以强迫模型在特征缺失的情况下学习, 增强了查
                 询驱动方法的鲁棒性. 这也使得即使在有查询变化的情况下, 查询驱动的方法也能快速适应负载变化. 同时该方法
                 通过添加传统优化器的基数估计值作为模型输入特征, 隐藏部分其他查询特征也迫使模型更加专注于矫正传统优
                 化器的原始估计值, 因此该方法可以被视为传统优化器基数估计的矫正方法.
                    数据与查询混合驱动规模估算的方法就是将查询驱动和数据驱动方法结合. UAE                          [215] 利用  Gumbel-Softmax  技
                 巧来区分类别抽样变量, 使得深度自回归模型可以直接从查询中学习联合数据分布. 因此, UAE                            可以采用统一的
                 深度自回归模型, 以无监督的方式学习表的联合分布, 并以监督的方式训练使用查询内容作为辅助信息. ALECE                               [216]
                 以数据库所维护的表数据的统计特征作为数据特征, 将其输入到注意力机制模型得到数据的表征后, 联同查询特
                 征一起输入到另一个新的注意力机制模型, 最终使用全连接神经网络将表征特征映射为基数估计值. 这种设计增
                 强了模型的鲁棒性, 使得模型能够适应负载的变化.
                  4.2.3    代价估计
                    查询代价估算是指查询优化器估算查询计划在当前数据库中的执行时间. 查询代价估算不仅对查询计划的选
                 择有直接指导作用, 还可以用在数据库资源管理等方面. 代价估算不仅与查询计划本身有关, 还受到系统硬件和数
                 据库配置的影响. 传统的代价估算模型通常是专家设定的多项式函数, 这种代价估计模型虽然估计速度快, 但是不
                 能准确反映查询的代价以及系统            I/O  和  CPU  的代价. 智能代价估算就是利用人工智能的方法估算查询的代价. 代
                 价估算的流程同样如图        9  所示, 智能代价估算首先对计划特征进行提取, 然后将计划特征编码作为代价估计模型
                 的输入, 最后代价估计模型输出预测代价.
                    DNN [217] 以计划节点特征作为代价预测的输入同时也考虑了查询计划树的结构特征. DNN                       为每类操作符训练
   357   358   359   360   361   362   363   364   365   366   367