没有合适的资源?快使用搜索试试~ 我知道了~
基于机器学习的数据库自动调优综述.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 68 浏览量
2022-11-29
13:46:22
上传
评论
收藏 636KB PDF 举报
温馨提示
试读
13页
...
资源推荐
资源详情
资源评论
基于机器学习的数据库自动调优综述
一、 DBMS 自动优化介绍
(一) 传统 DBA
传统数据库:通常采用静态配置模板,配置数据库实例参数。采用统一的处理方式,
没有结合具体应用的数据分布与工作负载。
配置策略为:B 树查询、键-地址映射函数查询、穷举法、基于代价估计的启发式算法、
并发控制策略、乐观并发控制、两阶段锁点法等。
经验选择;昂贵的专家;DBA 复制:手动测量性能来自实际应用持续的示例工作负载;
重复实验;
经验+调整指南+直觉:昂贵、效率低。
系统调优的传统做法:辅助 DBA 的调优工具,如 IBM DB2 的配置向导等。
业务多样性和持续可变性使得传统依赖 DBA 手工调优方式在大规模场景下完全不可
行。
(二) 学习式 DBA
机器学习技术有效捕捉负载与数据的特性,对数据库进行全自动调优,比如动态调整
缓冲池的大小。实现自感知、自决策、自恢复、自优化。把人工的DBA 经验转换成产品。
无人驾驶的概念,自动调节方向盘(knob),查看前方路况(适应未来的 workload)、
最终能保证乘客安全驾驶。自主完成 workload,并保证较好的执行效果。同时,不影响前端
的业务处理。
特点:全自动调优、效果中学习。
问题定义、指标定义及选择、关键算法优化、算法评估与改进、端到端的自动化流程
落地。其中算法部分包括:建模、调参、获取反应、学习、产生最优参数。
学习式数据库系统不适用于:频繁更新的数据库,训练代价太大;数据库数据过少或
分布单一,容易过拟合;数据本身没有规律,ML 难以挖掘数据分布。
(三) 功能
重点优化组件:索引结构、查询优化器、事务管理器、系统调优。
学习式索引、学习式查询优化器、学习式系统调优:旋钮设置、并发控制策略、数据
布局。
1. 学习式索引
核心:基于数据分析或特征,通过监督学习对数据的分布进行拟合,形成有效的键-数
据映射函数,对索引结构进行优化,使索引变得专用。
作用和适用性:会同时提高 TP、AP 的数据存取速度。但 TP 的增删改操作、索引需要
高频率更新。再训练成本太高。
使用的算法:回归模型:建立起键与数据之间的对应关系;分类模型判断索引是否存
在。ML 与 B 树、布隆过滤器等结合,进行效果优化。
2. 学习式查询
核心:多表复杂查询由多个子计划组成。学习式二级索引,对多个查询子计划进行选
择和排序:键对键的映射拟合。
作用和适用性:端到端输出最佳查询计划。AP:多表复杂查询,更有用。
使用的算法:监督学习代价估计模型;基于强化学习的新型查询优化,进行连接顺序
优化。
学习式代价估计:代价指什么?数据库执行查询时的 IO 代价+CPU 代价+内存代价。主
要取决于磁盘访问的 IO 代价。真实的代价只有在查询结果后才可以获得。代价往往与中间
结果大小成正比。连接优化;强化学习多次试错的方式找到最佳查询计划。
3. 学习式系统调优
针对具体的应用场景,对数据库系统进行自动调优。包括学习式旋钮配置;机器学习
优化数据的布局(行存、列存、混合存);学习式的方法选择分布式数据库的并发控制策略。
旋钮设置:学习数据分布与工作负载,对数百个旋钮进行自动设置。
从历史的查询负载中学习模式,或不同配置下的系统性能进行采样。传统数据库组件,
可以作为初始模型加快训练。TP、AP 都覆盖。
数据布局:决定数据在磁盘的组织存储方式,更好地满足负载要求;预测未来的查询
负载,侧重 TP 还是 AP。以便提前对数据的存储形式做出调整。
数据布局:指关系表中的数据以何种组织方式存储在磁盘中。行存、列存、混合存。
OLTP 适合行存,OLAP 适合列存。
支持混合存储的学习布局模型:底层 tile 组织,行存。
新负载执行时,负载内所有 SQL 根据属性集合度聚类。每一类中有一个代表,从中选
择对 IO 影响最大的 TOP-K 个 SQL。最后根据 TOP-K 个 SQL 访问的属性进行布局。每个 SQL
包括多个属性,可以来自不同的表,经常被一起访问,属性值存在一个tile 内。
负载变化可能导致布局重组。增量型重组。以数据项为单位,逐渐将数据迁移至新布
局,不可迁移热数据。
事务管理器:挖掘出事务负载本身的特征,选择最优的并发控制策略。
并发控制是事务管理器的最重要功能之一:不合理的话,会导致存取、存储不正确数
据,破坏事务隔离性、数据库一致性;处理并发控制的开销很大,频繁的并发控制是 OLTP
工作负载的 CPU 开销的 30%。
现有策略:基于分区的并发控制(partcc)、乐观并发控制(OCC)、2 阶段锁定方法(2PL)。
分别适合不同的场景。分区,适合多事务多站点执行时;乐观:适合冲突率很低时;2PL:
适合冲突率很高时。
学习式并发控制:TP 会触发更多事务冲突,更受益。
二、 问题的定义和分析
经常出现的问题:主机内存严重不足,但 CPU、存储资源还有很多剩余;内存资源紧
张是关键瓶颈。
对性能影响最大的是缓冲池大小。如何为每个数据库实例配置合理的缓冲池大小。在
不影响实例性能的前提下,缓冲池大小设置成最小。
旋钮设置问题:将旋钮问题转化为变化曲面拟合问题。拟合出数据库系统性能在不同
旋钮调整时的变化曲面,根据曲面选择出最优配置方案。
三、 数据及指标
(一) 数据库优化目标
吞吐量(Throughout):多快收集数据
延迟(latency):以多快的速度响应请求;ottetune 降低了 58-94%
响应时间(response_time):业务方、DBA 最关心的是 RT,尤其是应用时的最大 RT。
其他:store_size、compaction_cpu、cpu_usage, Qps、miss_ratio 等。
可扩展性。
(二) 工作负载特征化
1. 逻辑特征
分析逻辑级别的目标工作负载,检查查询和数据库模式来计算指标。如每个查询访问
的表/列数目;每个交易的读/写比率;最常访问哪些索引等。
存在的问题:
基于逻辑数据库,而不是实际行为;不可能确定改变某个特定参数的影响;如何执行
查询、以及这个查询与内部组件的关系:取决于数据库的许多因素,如大小、基数、工作集
大小,不能仅仅通过查询工作量来获取。
基于语法、基于环境、基于数据。
2. 内部指标
OtterTune 使用。
剩余12页未读,继续阅读
资源评论
xxpr_ybgg
- 粉丝: 6520
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功