参数优化|学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 快速学习参数优化

开发者学堂课程【云数据库优化经典案例:参数优化】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/67/detail/1162


参数优化


参数优化有很多客户问到 madc 参数是否可以自己去配置,我们有很多的参数,比如,内存的参数和数据安全的参数,这一块基本上用户是无法配置的。

我们可以配置 tapk , sortpython,等等,按照用户应用的特点可以去配置。

(一)一个参数引发的血案

图片8.png

这是一个参数引发的血案,背景介绍是某客户正在将本地的业务系统迁移上云,在 rads 上运行时间明显要比线下自建数据库运行时间要慢一倍,导致客户系统割接延期的风险。

所以我们当时就要排查为什么他的本地ck,这个ck为什么在用户本地自建。

第二,跨压力式。所以我们去分析,这也是非常经典的案例。

图片9.png

出现这样一个情况之后,我们才去分析一个 ck 从一个平台迁移到另一个平台,那我们去看是不是发生了第一个数据库跨平台迁移,比如 PG 是不是迁移到 MySQL ,ORALCE 迁到 MySQL。

第二个去看他的版本是不是发生了变迁,MySQL 5.1版本上升到5.5版本,5.5版本上升到5.6版本。

因为这样的大版本发生变迁最终会影响 ck 的执行计划, ck 的执行计划会受限于优化器,参数配置,包括其中硬件配置的影响。所以我们可以通过以上三个点的经验来一一排查。

图片10.png

如果没有出现跨数据库的迁移,用户是 rads 5.6,那我们再具体对一下优化器参数,因为这个优化器最终会影响 ck 的执行计划。那我们可以看到,备了用户本地的 ck 优化器,以及云上 RADS 这个优化器,基本上没有太大的变化。这个前面两个我们就排除了。

分析 CK 的执行计划  

大家可以看到这个 ck 是非常复杂的,因为他有12行的执行计划,所以我们如何快速判断这个执行计划有没有问题呢,当然我们可以通过一个简单的方法,我们可以通过每一行的 ROWS 乘起来,因为  MyCQL 的执行计划的算法是签到循环,就是 rows 这个每一行的乘积,对比这个 rows 没有太大的变化。

所以前面这个优化器的参数,执行计划的总函数也去看一下,所以前面两个排除。

image.png

第三个我们来看一下参数配置,参数配置的时候我们就发现了一些端倪,我们发现用户在配置文件,用户在对这三个参数进行特别大的调高,相对云上 RDS ,tmp-table-size=256k,但是用户他 tmp-table-size=128M,那这个就是我们很大的一个疑点,那我们把这三个参数一一的去排查。  

image.png

然后我们最终发现 tmp-table-size 由256k 调整至128MB 之后,这个性能从18.17sec下降至7.29sec,所以最终这个问题是由于这个参数调回128MB 之后,他的性能就比我们云上的要快。所以说到这个ck非常非常复杂,他会产生很多临时结构机,原来的256k 已经不满足 ck 中间的转换机,所以我们这时候调到128MB 的时候就和本地的数据和机了。

image.png

所以我们出现这样一个问题之后,一个ck跨平台出现数值下降,第一个看他的执行计划,第二个看他的数据库版本和优化器规则,然后我们要去对比这个参数设置以及可能他的硬件配置。

(二)参数最佳实践

image.png

在2015年的时候,在那个双十一,他的硬件配置是一个T的内存,cp 是64核的,按理来说他的数据库的配置是非常高的,但是怎么数据库他这边怎么都压不上去,但我们去看了之后发现,他的 MyCQL 的参数用了128MB,是非常低的配置,所以他整个一个T的内存都无法去使用,所以他那个参数配置太低了,而不能把硬件的配置发挥出来,所以我们把内存参数调整了之后,他那个数据库这个 tps 上升了几百倍,所以我们要综合去看。

所以这个参数我们还要提几个点,第一个关于 Query-cache-size,那个数据库做那个安全,有些ads是关于 Query-cache , 有些用户本地 Query-cache是打开的,这个时候很显然执行一次就缓存,但是 Query-cache 是关闭的,ck 非常强,这个时候就要关注这个 Query-cache 。

第三个,非常容易出错的是我们支持 Tokudb-buffer 这个引擎,但是没有为这个Tokudb-buffer 配 pool-ratio,所以导致这个 Tokudb 插入非常慢,那这个时候我们即用了 Temp 引擎又 Tokudb 引擎,一定要为 Tokudb 配 pool-ratio。

第四个是 Back-log,Back-log 这个短连接,这个应用一定要去了解一下,我们的数据库建立链接的这个队列,如果我们的短连接设的比较频繁,要把这个 Back-log 设的长一点

相关文章
|
算法 测试技术 API
LightGBM的参数详解以及如何调优(下)
LightGBM的参数详解以及如何调优
837 1
LightGBM的参数详解以及如何调优(下)
|
10月前
|
机器学习/深度学习 缓存 监控
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
628 0
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
|
27天前
|
机器学习/深度学习 Python
超参数优化:提升机器学习模型性能
【5月更文挑战第31天】超参数优化对提升机器学习模型性能至关重要。网格搜索和随机搜索是常见方法,Python示例展示了如何使用GridSearchCV进行网格搜索。其他高级技术包括基于梯度的优化和贝叶斯优化。优化时注意选择合适评估指标、划分训练验证集,并进行迭代调整。自动化工具可简化这一过程。超参数优化是一个持续演进的领域,对于构建高性能模型具有关键作用。
50 0
|
1月前
|
机器学习/深度学习 算法 Python
CatBoost中级教程:超参数调优与模型选择
CatBoost中级教程:超参数调优与模型选择【2月更文挑战第12天】
201 2
|
API
XGBoost超参数调优指南
本文将详细解释XGBoost中十个最常用超参数的介绍,功能和值范围,及如何使用Optuna进行超参数调优。
331 1
|
SQL 存储 NoSQL
调优建议|学习笔记
快速学习调优建议
283 0
调优建议|学习笔记
|
机器学习/深度学习 Dart 算法
LightGBM的参数详解以及如何调优(上)
LightGBM的参数详解以及如何调优
525 0
LightGBM的参数详解以及如何调优(上)
|
机器学习/深度学习 PyTorch 算法框架/工具
基于PyTorch框架的模型训练调优
基于PyTorch框架的模型训练调优
96 0
|
机器学习/深度学习 C++ 算法
机器学习模型的超参数优化(二)
机器学习模型的超参数优化(二)
227 0
机器学习模型的超参数优化(二)
|
机器学习/深度学习 算法
机器学习模型的超参数优化(一)
机器学习模型的超参数优化(一)
287 0
机器学习模型的超参数优化(一)