参数优化|学习笔记

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

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

课程地址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 设的长一点

相关文章
|
3月前
|
架构师 Java 测试技术
一文搞透高并发指标(QPS、TPS、吞吐量等)
详解高并发场景下的QPS、TPS、RT及吞吐量等关键性能指标,帮助理解系统性能评估的核心概念。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文搞透高并发指标(QPS、TPS、吞吐量等)
|
6月前
|
SQL 存储 分布式计算
如何配置 ADS 表?
【8月更文挑战第11天】
202 3
|
6月前
|
搜索推荐 定位技术 数据库
ads设计表结构
【8月更文挑战第9天】
105 2
|
6月前
|
监控 Java 数据库连接
阿里云ads常见问题
【8月更文挑战第10天】
237 1
|
6月前
|
SQL 监控 Java
阿里云ads的学习教程
【8月更文挑战第10天】
218 1
|
存储
操作系统第五章_03 假脱机技术 (SPOOLing技术)
操作系统第五章_03 假脱机技术 (SPOOLing技术)
811 0
操作系统第五章_03 假脱机技术 (SPOOLing技术)
番茄工作方法以及番茄工作表
番茄工作方法以及番茄工作表
162 0
|
Python 容器
Python Tkinter教程(三)——三种几何布局管理器Pack、Place和Grid的所有参数及相关方法及详细用法
Python Tkinter教程(三)——三种几何布局管理器Pack、Place和Grid的所有参数及相关方法及详细用法
1281 0
|
9月前
|
前端开发
bootstrap例子笔记
bootstrap例子笔记
|
SQL 分布式计算 MaxCompute
了解那些“奇葩”SQL写法,快速写出高效率SQL(4)
了解那些“奇葩”SQL写法,快速写出高效率SQL
94 0
了解那些“奇葩”SQL写法,快速写出高效率SQL(4)

热门文章

最新文章