MySQL集群优化的0.4毫秒逻辑分析

作者: admin 分类: 公众号存档            1 次浏览 发布时间: 2021-04-27 00:10

公众号:杨建荣的学习笔记 · 作者:杨建荣 · 发布:2021-04-27 00:10:20 · 原文链接

这是学习笔记的第 2346篇文章

  最近做了一个集群服务的在线切换,将原来的主从环境做了切换,当然后端的处理工作是比较复杂的,涉及到主从服务器的在线迁移和硬件变更。

  总体来说,切换后的读延迟比原本降低了0.4毫秒左右,对于一个延迟季度敏感的业务来说,0.4毫秒是一个很高的比例,按照既定的比例规则,差不多是优化了25-30%的比例。

  那么这省下来的0.4毫秒到底优化在哪个环节了呢?我们做了一些讨论和分析,不仅暗暗感叹,幸亏是优化了,如果延迟变大30%,要快速分析还是压力很大的。

  这个问题分析的难点在于存在一系列的动态变量,导致服务切换前后的对比缺少了一些基准和衡量标准。

 我们简单提炼了下,在服务切换前的优化工作有:

1)新从库采用了全新的硬件配置,CPU型号更高,性能提升可达30%

2)主从库采用的SATA-SSD的存储使用了不同品牌

3)主从切换前,在从库中对数据表进行了全面的碎片清理

4)原本服务器的系统盘是使用SAS的,在新从库中统一按照SATA-SSD类配置

5)中间件服务器有近2年没有重启过,这次维护做了重启维护

此外,还有一些不确定的因素,比如业务量的差异等,按照100%对等的标准是不大可能完全对等去分析的,所以我们试着通过如下的逻辑进行分析。 

初步来看,我们觉得对于数据表做了碎片清理,这个改进的效果会比较高,因为碎片率在切换前统计是近20%,清理后空间释放了近20%,本来认为这样的一套指标体系是比较演进的,但是在对比了近几天的业务延迟情况之后,有一个业务的数据是说不通的。

我们假设是业务2,业务2的数据表示日表,也就意味着这张表没有所谓的碎片,因为每天都会有一张新的数据表写入数据。所以业务2的延迟应该没有变化或者有细小的差异才说得通,但是在这里可以很清楚的看到,延迟是有近30%的提升,这就说不通了,所以单纯的碎片清理带来的收益确实没有期望那么高。

我们分析下系统负载的情况,随机选择了一个分片节点,查看了切换前和切换后的负载数据。

切换前

切换后

总体来说,负载的平均值是提高了0.03,这个比例是很低的一个比例,姑且认为是可以忽略的。

再来看看CPU的使用率,因为新的服务器CPU性能提升近30%,所以对负载情况进行了整体的比对,可以发现这个业务不是强计算相关的,所以CPU配置再好,在这里带来的收益确实没有期望那么明显。

切换后

切换前

接着来看磁盘,磁盘层面有很多的指标,我们来看下util指标:

切换后:

切换前:

总体切换后的util从16%提高到了18%,很难可以给出一个客观的结论。

对于磁盘读写层面的分析,可以看到等待的延迟部分不是一个数量级。

切换后

切换前

在这里可能会有一个误区,那就是切换前的指标是精确度不够,是0,我们可把指标放大,即选择其中一个指标,就可以看到右侧的指标的相对精确的数据了。

                                                     切换后:

切换前:

到了这里,我们可以看到延迟的指标对于逻辑卷和不同分区的差别还是很明显的,虽然单个指标的提升在10%左右,但是所有的指标都是略高一筹。

当然碎片整理确实是有提高,但是和磁盘层面的提升来说,占比确实没有那么高。 

而接下来的问题就是进一步验证,需要分析不同SSD产品间的一些差异和稳定性测试数据。 

总体来说,整个分析的过程可以提供一种分析的思路,而不仅仅是得到的初步结论。 

各大平台都可以找到我

  • 微信公众号:杨建荣的学习笔记

  • Github:@jeanron100

  • CSDN:@jeanron100

  • 知乎:@jeanron100

  • 头条号:@杨建荣的学习笔记

  • 网易号:@杨建荣的数据库笔记

  • 大鱼号:@杨建荣的数据库笔记

  • 腾讯云+社区:@杨建荣的学习笔记

近期热文:

我们为什么在MySQL中几乎不使用分区表

新年大吉 总结了如下的感想

《大江大河2》最触动我的一段经典对话

MySQL 8.0给开发方向带来的一些困扰

迁移到MySQL的业务架构演进实战

MySQL业务双活的初步设计方案

如何优化MySQL千万级大表,我写了6000字的解读

一道经典的MySQL面试题,答案出现三次反转

小白学MySQL要多久?我整理了10多个问题的答案

转载热文:

2020年度20多款主流数据库重大更新及技术要点回顾

工行“去O”数据库选型与分布式架构设计

MySQL 实战笔记 第01期:MySQL 角色管理

MGR用哪个版本?5.7 vs 8.0

SQLcl这个可爱的小工具,来了解一下呀~

CPU占用又爆了?MySQL到底在干什么

这个MySQL优化原理剖析,比照X光还清楚

自己动手写SQL执行引擎

最受欢迎的微服务框架概览

程序员,保住你的钱袋子!

QQ群号:763628645

QQ群二维码如下, 添加请注明:姓名+地区+职位,否则不予通过

在看,让更多人看到

admin

杨建荣,《Oracle DBA工作笔记》《MySQL DBA工作笔记》作者,dbaplus社群发起人之一,腾讯云TVP,现任竞技世界系统部经理,拥有十多年数据库开发和运维经验,目前专注于开源技术、运维自动化和性能调优

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注