海山数据库(He3DB)+AI(五):一种基于强化学习的数据库旋钮调优方法

news2024/11/17 12:33:11

@[TOC]

0 前言

在海山数据库(He3DB)+AI(三)中,介绍了四种旋钮调优方法:基于启发式,基于贝叶斯,基于深度学习和基于强化学习。本文介绍一种基于强化学习的旋钮调优方法:QTune: A Query-Aware Database Tuning System with Deep Reinforcement Learning。

1 QTuner框架

数据库旋钮调优问题是一个NP-hard问题,现有的解决方法中仍存在一些不足:

  1. DBA无法在不同的环境中对大量的数据库实例进行调优;
  2. 传统的机器学习方法依赖训练数据,而高质量的数据集难以获取;
  3. 大多数方法只支持粗粒度调优,如负载层面的调优,无法提供细粒度的调优,如query层面的调优。

为了解决以上不足,本文提出了基于强化学习的调优框架QTuner。QTuner首先将SQL语句进行特征向量化,然后将特征向量输入到训练好的模型中获得合适的旋钮配置。该深度模型使用了强化学习中的actor-critic网络,基于查询向量和数据库状态进行调优,能够在训练样本不足的情况下获得较好的效果。

QTuner中提供了三种不同粒度的调优:

  1. Query-level:在该调优方法下,对于每个query,首先调整数据库的旋钮,然后执行查询,该方法可以优化延迟,但可能无法实现高吞吐量。
  2. Workload-level:该调优方法对整个工作负载的数据库旋钮进行调优,这种方法不能优化查询延迟,因为不同的query可能需要使用不同的最佳旋钮值,然而,这种方法可以实现高吞吐量,因为不同的query可以在设置新调整的旋钮后并行处理。
  3. Cluster-level:在该调优方法下,将query分成不同的组,为每个组进行旋钮调优,同一组中使用相同的旋钮配置,并执行并行查询,该方法可以同时优化延迟和吞吐量。

三种不同粒度的调优流程如下图所示:

在这里插入图片描述

2 query特征化

在特征化的过程中,需要考虑以下问题:1)如何来捕获query的信息,如query中涉及多少表?2)如何捕获执行query的代价?3)如何对向量进行编码使得其维度一致?

2.1 特征提取

本节主要回答第一和第二个问题,即如何捕获query和代价信息。

(1)Query信息

将一条Query语句进行分解,一般包括以下几个部分:query类型(如insert,delete和update等),涉及的表属性操作(如selection,join和groupby)。在以上部分中,哪些特征是重要的呢?首先,query类型是重要的,不同的类型具有不同的代价。其次,涉及的表也是重要的,表的数据量和结构会显著影响数据库的性能。而属性操作可以忽略,原因有三:一是代价信息中会捕获操作信息,不需要对该信息进行重复编码;二是操作信息太过于具体,可能会导致泛化性能降低;三是属性和操作信息更新过于频繁,每次更新都需要对模型进行重新设计。

(2)代价信息

代价信息捕获处理这条query时的执行代价,出于实际情况,使用优化器的成本估计来代替实际的执行成本。

2.2 编码方法

本节回答向量化的第三个问题,如何编码使其维度一致。

对于query信息,设计一个长度为 4 + ∣ T ∣ 4+|T| 4+T的向量,“4”对query类型(insert, select, update, delete)进行one-hot方式的编码,"T"代表数据库中的表,同样使用one-hot的方式进行编码。

对于代价信息,设计一个长度为 M M M的向量, M M M代表数据库中操作的个数(如postgre数据库中有38个操作)。优化器生成查询计划后,每个操作计算其在计划树中的代价和,最后通过减去均值和除以标准差进行归一化。

将query向量和代价向量拼接在一起,就得到了最后的特征向量。如下图为一个将query进行特征向量化的过程。

在这里插入图片描述

以上是对一条query进行特征向量化的过程,在工作负载调优时,涉及多条query,假设其编码后的特征为 v 1 , v 2 , . . . v m v_1,v_2,...v_m v1,v2,...vm,计算其并集,计算公式如下所示:

[ ∪ 1 m v i [ 1 ] , … , ∪ 1 m v i [ 4 + ∣ T ∣ ] , ∑ 1 m v i [ 5 + ∣ T ∣ ] , ⋯   , ∑ 1 m v i [ 4 + ∣ T ∣ + ∣ P ∣ ] [\cup_{1}^{m} v_{i}[1], \ldots, \cup_{1}^{m} v_{i}[4+|T|], \sum_{1}^{m} v_{i}[5+|T|], \cdots, \sum_{1}^{m} v_{i}[4+|T|+|P|] [1mvi[1],,1mvi[4+T],1mvi[5+T],,1mvi[4+T+P]

3 DS-DDPG

在对query向量化后,将其输入DS-DDPG模型得到推荐的旋钮参数。本节首先介绍DS-DDPG框架,然后介绍该框架的训练过程。

3.1 模型框架

DS-DDPG将旋钮调优问题建模为强化学习,将调优过程中的各个问题映射到各个强化学习模块,映射关系如下图所示:

在这里插入图片描述

DS-DDPG模型框架如下图所示。执行步骤如下:

(1)Query(或Queries)通过Query2Vector生成特征向量;

(2)特征向量输入到Predictor中,Predictor是一个深度模型,预测处理query前后数据库的性能变化 Δ S \Delta S ΔS

(3)该变化传递到Environment,Environment中包括内部状态(如旋钮配置值)和外部特征(关键性能评价指标);

(4)Environment将变化值 Δ S \Delta S ΔS加到原来的性能 S S S上得到执行query后的性能观察值 S ′ ( S ′ = Δ S + S ) S'(S'=\Delta S + S) S(S=ΔS+S);

(5)Actor是一个深度模型,根据性能观察值 S ′ S' S输出旋钮调优动作action;

(6)critic网络同样为一个深度模型,其根据性能变化 Δ S \Delta S ΔS和action得到一个score,这个score判断旋钮调整是否有效;

(7)Environment得到这个action后进行执行query,得到一个旋钮调整后的性能反馈reward;

(8)critic根据reward更新其权重,actor根据score更新其权重。

在这里插入图片描述

3.2 训练方法

在DS-DDPG模型中,包含了Predictor模型,Actor和Critic模型(Agent模型)。整体的训练流程如算法1所示:

在这里插入图片描述

训练Predictor模型如算法2所示:

在这里插入图片描述

训练Agent模型如算法3所示:

在这里插入图片描述

4 Query分组

在Cluster-level进行调优时,对query进行分组调优,从而结合query层间调优的优化延迟和负载层面调优的高吞吐量这两个优点。每一个query得到一组配置参数,对所有的配置参数进行聚类分组。每个旋钮的值为不同区间的连续值,聚类中不需要如此精确的值,因此本文将每个旋钮离散化为 - 1,0,1 。具体来说,对于每个旋钮,如果调整后的旋钮值在默认值附近,将其设置为0;如果估计值远大于默认值设为-1,如果估计值远小于默认值设为-1。
同时,为了避免聚类过程中的维度灾难问题,只选择最常调整的旋钮作为特征,如在Postgre中,选择20个旋钮,每个旋钮有3个可能的值,那么就有 3 20 3^{20} 320种可能的情况,本文利用深度模型对离散特征进行进一步映射降低计算量,深度模型结构如下图所示。

在这里插入图片描述

在获得每个query的深度特征后,根据特征的相似性将其分类到不同的簇中。本文使用DBSCAN算法进行聚类,DBSCAN在配置模式的基础上,根据距离度量和需要聚类的最少点数将距离较近的模式聚在一起,从而得到不同分组中的配置参数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2167229.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

回归预测 | Matlab基于SO-ESN蛇群算法优化回声状态网络多输入单输出回归预测

回归预测 | Matlab基于SO-ESN蛇群算法优化回声状态网络多输入单输出回归预测 目录 回归预测 | Matlab基于SO-ESN蛇群算法优化回声状态网络多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.蛇群算法(SO)优化回声状态网络做拟合回归预测,…

Spring Security - 用户授权

1.用户授权介绍: 在SpringSecurity中,会使用默认的FilterSecurityInterceptor来进行权限校验。在FilterSecurityInterceptor中会从SecurityContextHolder获取其中的Authentication,然后获取其中的权限信息。判断当前用户是否拥有访问当前资源…

汉口银行IPO之路再添坎坷:多名股东甩卖股权,内控是“老大难”

撰稿|芋圆 近日,总部设在武汉的商业银行——汉口银行股份有限公司(以下简称“汉口银行”)的股权再现交易信息,先后“亮相” 上海联合产权交易所、北京产权交易所,出售股权的股东包括中国电信以及中国移动全资子公司等…

神经网络(五):U2Net图像分割网络

文章目录 一、网络结构1.1第一种block结构1.2第二种block结构1.3特征图融合模块1.4损失函数1.5总体网络架构1.6代码汇总1.7普通残差块与RSU对比 二、代码复现 参考论文:U2-Net: Going deeper with nested U-structure for salient object detection   这篇文章基于…

从销售到 AI 算法工程师 | 转行人工智能大模型(含面经裁员幸存指南)

我叫王东,90后,和大家分享一下我的人工智能转型之路。 农学毕业,投身互联网做销售 机遇难求,养殖梦碎 我是土生土长的农村人,小时候经常和小鱼小虾打交道,上大学的时候就选择了农学专业,想着…

qmt量化交易策略小白学习笔记第67期【qmt编程之获取ETF申赎清单】

qmt编程之获取ETF申赎清单 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 --获取ETF申赎清单! 实盘或回测qmt,可关注博主咨询~ ETF申赎清单 提示 使用前需要调用xtdata.download_…

JDBC 事务

文章目录 准备数据JDBC操作事务API介绍案例代码小结 准备数据 # 创建一个表:账户表. create database day05_db; # 使用数据库 use day05_db; # 创建账号表 create table account(id int primary key auto_increment,name varchar(20),money double ); # 初始化数据…

如何管理自己的工作任务和时间

在当今快节奏的工作环境中,有效地管理工作任务和时间是取得成功和保持工作生活平衡的关键。以下是一些实用的方法,可以帮助你更好地掌控自己的工作。 一、明确工作任务 1、制定任务清单 每天开始工作前,列出当天需要完成的所有任务。可以使用…

PWA(Progressive web APPs,渐进式 Web 应用)

文章目录 引言I 什么是 PWA功能特性II Web 应用清单引言 PWA 是 Google 于 2016 年提出的概念,于 2017 年正式落地,于 2018 年迎来重大突破,全球顶级的浏览器厂商,Google、Microsoft、Apple 已经全数宣布支持 PWA 技术。 PWA 目的是通过各种 Web 技术实现与原生 App 相近…

Java读取YAML文件

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…

基于注意力机制的图表示学习:GRAPH-BERT模型

人工智能咨询培训老师叶梓 转载标明出处 图神经网络(GNNs)在处理图结构数据方面取得了显著的进展,但现有模型在深层结构中存在性能问题,如“悬挂动画问题”和“过平滑问题”。而且图数据内在的相互连接特性限制了大规模图输入的并…

三天搞了7000,AI绘本副业赚钱新途径,抓住绘本创业,轻松开启副业

**项目简介:**这个项目的原理是利用AI文本工具来编写绘本故事脚本、人物描述及场景设定,完成整个绘本内容的创作。接着,使用百度翻译将文本翻译成英文,并在MJ软件上输入关键词生成相应的图片。随后,将这些图片上传至Pi…

《我的世界:地下城》风灵月影修改器使用指南 —— 掌控冒险,轻松畅游

对于热爱《我的世界:地下城》并寻求更加个性化游戏体验的玩家来说,风灵月影修改器提供了一个强大而便捷的辅助工具。 以下简要步骤将指导你如何安全高效地利用此修改器,让你的探险之旅如虎添翼。 1.下载与安装: 首先&#xff0c…

ESP32 入门笔记02: ESP32-C3 系列( 芯片ESP32-C3FN4) (ESP-IDF + VSCode)

ESP32-C3 系列的 芯片 / 模组 / 开发板 ESP32-C3-DevKitM-1是乐鑫一款搭载 ESP32-C3-MINI-1 或 ESP32-C3-MINI-1U 模组的入门级开发板(内置 ESP32-C3FH4 或 ESP32-C3FN4 芯片)。 板上模组大部分管脚均已引出至两侧排针,可根据开发实际需求&a…

Android平台RTMP推送模块的设计意义

为什么要做RTMP推送 RTMP是一种广泛使用的流媒体传输协议,它允许视频和音频数据在互联网上实时、高效地传输。实现RTMP推送功能,主要是为了满足以下需求: 实时性要求:RTMP协议具有低延迟的特点,适合用于需要实时交互的…

大数据毕业设计选题推荐-租房数据分析系统-Hive-Hadoop-Spark

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

LVS-DR实战案例,实现四层负载均衡

环境准备:三台虚拟机(NET模式或者桥接模式) 192.168.88.200 (web1)(安装nginx服务器作为测试) 192.168.88.201 (服务器)(用于部署lvs-dr) 192.168.88.202 (web2)…

Ubuntu20.04 安装汉语拼音后重启登入黑屏

在虚拟机上装了一个Ubuntu用来学C,默认没有安装中文输入。于是按照网上教程装了几个汉语包。切换输入法的时候突然死机,重启登入直接黑屏。百度后发现有不少老哥和我这个问题一模一样,按照他们的方法也终于整好了,虚惊一场。 解决…

axios proxy 和 httpsAgent 的使用差异案例详解

背景 因为 wadesk 开发了本地 http 服务,http 本地服务是运行在 electron-main 的纯 node 环境中的,这个之前探讨了 node 下怎么使用 fetch 时就提到了一个 https-proxy-agent 库,这次使用 axios,发现 axios 自带 proxy 配置项&a…

Ubuntu20.04中ros2 foxy版本安装gazebo,并运行小车运动demo

这里默认你安装好了ros2 foxy版本 sudo apt install gazebo11sudo apt install ros-foxy-gazebo-ros-pkgs建议把其他的包也安装了 sudo apt install ros-foxy-gazebo-*安装速度的话,比安装ros环境快多了。 此时,可以在/opt/ros/foxy/share目录下看到若…