openGauss源码解析(155)
openGauss源码解析:AI技术(2)
8.2.3 X-Tuner的调优策略
总的来说,对数据库进行参数调优可以分为两大类,分别是离线参数调优和在线参数调优,X-Tuner同时支持上述两类调优模式。
(1) 离线参数调优是指在数据库脱离生产环境的基础上进行调优的,一般是在上线真实业务前进行压力测试,并通过压力测试的反馈结果进行参数调优。
(2) 在线参数调优是指不阻塞数据库的正常运行,在数据库运行中进行参数调优或推荐的过程。
具体来说,调优程序X-Tuner包含三种运行模式。
(1) recommend:获取当前正在运行的workload特征信息,根据上述特征信息生成参数推荐报告。报告当前数据库中不合理的参数配置和潜在风险等;输出当前正在运行的workload行为和特征;输出推荐的参数配置。该模式是秒级的,不涉及数据库的重启操作,其他模式可能需要反复重启数据库。
(2) train:通过用户提供的benchmark信息,迭代地进行参数修改和benchmark(一种用于测量硬件或软件性能的测试程序)执行过程,训练强化学习模型。通过反复的迭代过程,训练强化学习模型,以便用户在后面通过tune模式加载该模型进行调优。
(3) tune:使用优化算法进行数据库参数的调优,当前支持两大类算法,一种是深度强化学习,另一种是全局搜索算法(全局优化算法)。深度强化学习模式要求先运行train模式,生成训练后的调优模型,而使用全局搜索算法则不需要提前进行训练,可以直接进行搜索调优。如果在tune模式下,使用深度强化学习算法,要求必须有一个训练好的模型,且训练该模型时的参数与进行调优时的参数列表(包括max与min)必须一致。
无论是离线参数调优还是在线参数调优,X-Tuner都是支持的,他们的基本结构也是共用的。如图8-1所示,是X-Tuner各个模块的结构示意图以及交互形式。
图8-1 参数调优工具X-Tuner的逻辑结构图
如图8-1所示,X-Tuner可以大致分为DB侧、算法侧、主体逻辑模块以及benchmark,它的各个部分的功能说明如表8-1所示。
表8-1 X-Tuner的结构介绍
X-Tuner结构 |
说明 |
DB侧 |
通过DB_Agent模块对数据库实例进行抽象,通过该模块可以获取数据库内部的状态信息、当前数据库参数、以及设置数据库参数等。DB侧包括登录数据库环境使用的SSH连接 |
算法侧 |
用于调优的算法包,包括全局搜索算法(如贝叶斯优化、粒子群算法等)和深度强化学习(如DDPG) |
X-Tuner主体逻辑模块 |
通过Enviroment模块进行封装,每一个step就是一次调优过程。整个调优过程通过多个step进行迭代 |
benchmark |
由用户指定的benchmark性能测试脚本,用于运行benchmark作业,通过跑分结果反映数据库系统性能优劣 |