强化学习(reinforcement learning,RL)在近些年发展迅速,基于深度学习的强化学习算法如DQN(deep q-networks,深度Q学习)、DDPG(deep deterministic policy gradient,深度确定性策略梯度算法)与PPO(proximal policy optimization,近端策略优化)等算法先后诞生,该类算法在游戏领域取得了比较好的效果,能够实现自动打游戏甚至游戏操作优于大多数的人类选手。与此同时,强化学习与监督学习不同,强化学习并不需要用户给定一个数据集,而是通过与环境进行交互,通过奖惩机制来学习哪些应该做,哪些不能做,从而给出更优的决策。
显然,强化学习能够应用到游戏领域,是因为游戏结果的好坏是比较明显的奖惩机制。输赢本身就是一个很好的价值导向,甚至能够不断获得经验值的游戏过程还能够得到连续不断的奖励,这就更容易让算法学到如何获取更多的经验。而反观数据库的调优过程,其实与游戏过程类似。数据库性能的好坏是比较明显的价值导向,数据库的参数配置就相当于游戏过程中的动作,数据库的状态信息也是可以获得的。因此,通过强化学习来进行数据库参数的调优是一个比较好的方案,该方法能够模仿DBA的调优过程,通过数据库性能的高低来激励好的参数配置。该方法的特点是能够从历史经验中进行学习,用训练后的模型进行参数推荐的过程也比较快,而且并不需要用户给定大量的训练数据。缺点是模型的训练过程比较复杂,算法中的奖励机制、数据库系统的状态等都需要精心设计,强化学习训练过程也比较慢。采用该类方法的代表性项目是由清华大学提出的QTune。
通过上述介绍,可以得出似乎并没有一种非常完美的方法能够覆盖到所有的应用场景。严格地讲,每类方法本身并没有优劣之分,只有更加适合业务场景的方法才能够称之为最优方法。因此,接下来将介绍一下openGauss开源的数据库参数调优工具X-Tuner,该工具综合了上述多种调优策略的优势。




