海山数据库(He3DB)+AI(四):一种基于迁移学习的启发式数据库旋钮调优方法

0 前言

在海山数据库(He3DB)+AI(三)中,介绍了四种旋钮调优方法:基于启发式,基于贝叶斯,基于深度学习和基于强化学习,还介绍了迁移学习技巧。本文带来2024 VLDB的论文:An Efficient Transfer Learning Based Configuration Adviser for Database Tuning,介绍一种基于迁移学习的启发式数据库调优方法。

1 OpAdviser

1.1 主要工作

在现有的旋钮调优方法中,没有一个方法可以在所有任务中都表现较好。本文探讨了以下两个原因:

  • 无效的巨大搜索空间:一个数据库中需要配置的参数很多,有些参数的搜索空间很大。寻找最优配置的时间和搜索空间的大小成正比,巨大的搜索空间将导致巨大的调参成本,而研究表明,很多搜索空间是无意义的。
  • 合适的优化器:针对不同的任务,不同的优化器表现出不同的性能,有时甚至导致几个数量级的性能损失。选择合适的优化器是一直以来面临的一个挑战。

本研究的目的是通过缩小搜索空间和选择合适的优化器来同时解决上述两个挑战,从而加速数据库调优。为了实现这一点,本文提出了OpAdviser,一种数据驱动的方法。具体来说,OpAdviser从不同的客户端和应用程序的调优任务中积累丰富的历史数据,从历史数据中进一步提取有价值的信息,实现搜索空间的紧凑和优化器的选择,从而减少大量的调试成本。

1.2 总体流程

OpAdviser的计算流程如下图所示。
在这里插入图片描述

主要包含以下几个部分:

  1. controller:通过与终端用户和数据库实例的交互来控制调优过程
  2. data repository:存储历史数据,不同任务不同参数下的模型性能,以 { θ j i , f ( θ j i , w i ) } \{\theta_j^i,f(\theta_j^i,w_i)\} { θji,f(θji,wi)}的形式存储,其中 i i i表示任务
  3. space constructor:构造紧凑的搜索空间
  4. optimizer adviser:选择合适的优化器
  5. configuration generator:由所选的优化器在所构造的搜索空间上生成配置参数

工作流程如下:

用户输入调优目标、调优成本预算、数据库实例和目标工作负载,在每一次迭代中,controller使用新的配置获取数据库性能,然后将这组数据放在data repository。基于data repository中的数据,space constructor得到一组范围更小的搜索空间(第2节内容)。optimizer adviser抽取元数据,然后将元数据输入到一个元排序器中(该元排序器在构建的基准数据集上进行预训练),由该元排序器来推荐优化器(第3节内容)。最后,将推荐的优化器和构建的搜索空间传递给配置生成器,生成配置参数,然后将这组参数返回给controller。当调优预算耗尽,就返回目前最好的配置参数。

OpAdviser的设计目的是自我完善,其性能随着数据存储库中积累的调优观测值的增加而提高。

2 确定搜索空间

本文提出了一种新的方法来自动构建精确的搜索空间,而不需要收集大量关于目标工作负载的观测值。本文的方法从以前的任务中提取有效区域来构建精确的搜索空间,主要包括三个部分:

  1. 相似任务识别:识别出与当前任务具有相似特征的候选任务集合
  2. 有效区域提取:根据任务相似度从每个候选任务中提取有效区域
  3. 多数加权投票:利用提取区域的几何结构来生成紧凑的搜索空间
2.1 相似任务识别

一个数据库在执行不同的调优任务时,可以积累丰富的历史经验。对当前任务,找到类似的历史任务,从历史任务中挖掘有用的信息,来指导当前的任务。

那么如何来量化当前任务和历史任务的相似性呢?

通过考虑两个任务在不同配置下是否具有相似的性能分布来解决这个问题。

假设用 ( θ , f ( θ ) ) (\theta,f(\theta)) (θ,f(θ))来描述参数配置和性能。历史任务 m m m在数据仓库中有一组性能数据 ( θ 1 m , f ( θ 1 m ) ) , ( θ 2 m , f ( θ 2 m ) ) , . . . ( θ n m , f ( θ n m ) ) {(\theta^m_1,f(\theta^m_1)),(\theta^m_2,f(\theta^m_2)),...(\theta^m_n,f(\theta^m_n))} (θ1m,f(θ1m)),(θ2m,f(θ2m)),...(θnm,f(θnm)),并基于这组性能数据在离线阶段使用随机森林训练了性能函数 f ′ f' f 。当前任务在迭代执行得到一组性能参数 ( θ 1 , f ( θ 1 ) ) , ( θ 2 , f ( θ 2 ) ) , . . . ( θ , f ( θ n ) ) {(\theta_1,f(\theta_1)),(\theta_2,f(\theta_2)),...(\theta_,f(\theta_n))} (θ1,f(θ1)),(θ2,f(θ2)),...(θ,f(θn))。OpAdviser通过计算两个任务之间 θ \theta θ变化导致的 f ( ) f() f()变化是否一致来判断任务的相似性,即导数方向是否一致,其相似性计算公式如公式1所示:

S ( i , t ) = 2 ∣ H t ∣ ( ∣ H t ∣ − 1 ) F ( i , t ) F ( i , t ) = ∑ j = 1 ∣ H t ∣ ∑ k = j + 1 ∣ H t ∣ 1 ( f ( θ j ) ≤ f ( θ k ) ) ⊗ 1 ( f ′ ( θ j , w i ) ≤ f ′ ( θ k , w i ) ) (1) \begin{array}{l} \begin{array}{l} S(i, t)=\frac{2}{\left|H^{t}\right|\left(\left|H^{t}\right|-1\right)} F(i, t) \\ F(i, t)=\sum_{j=1}^{\left|H^{t}\right|} \sum_{k=j+1}^{\left|H^{t}\right|} \mathbb{1}\left(f\left(\theta_{j}\right) \leq f\left(\theta_{k}\right)\right) \otimes \mathbb{1}\left(f^{\prime}\left(\theta_{j}, w_{i}\right) \leq f^{\prime}\left(\theta_{k}, w_{i}\right)\right) \end{array}\\ \tag{1} \end{array} S(i,t)=Ht(Ht1)2F(i,t)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值