第一时间获取技术干货和业界资讯!

今年寒冬,百度都“冷的抖起来“。一般的公司,你不感冒也得打喷嚏。而我们的公司最近连续发了几次“高烧“!

原本领导要求让我招一个牛X的程序员。而我思前想后,MySQL 我不太懂,如何才能招一个满意的程序员呢?我忽然想到,我那些牛逼的同学,不都一个一个的”秃头+大肚子“吗?

于是,怎样才能证明一个程序员技术牛逼呢?”秃头+大肚子“。嗯,遇到满意的程序员,我就这样向领导回报。因为和领导扯技术就是扯淡,”秃头+大肚子“才是最有力的说服力。这也是多少人为数不多的”双保险”!

前面我提到的“高烧”。是因为,我们电商系统线上生产环境,最近老是卡顿。平时插入很快的数据,不定时,随机的执行超时。。。

这个问题,定位了好久,一直没解决,领导才要求,招一个懂 MySQL 的大牛。但是经过我最近一段时间的骚操作,变更了几个系统参数竟然“莫名其妙”的好了。于是领导又不招人了,请让我哭会,我就只会给公司省钱!

发生超时异常后,我立马查看日志信息。但是从日志中看不出来什么问题,我就将目光移动到 SQL 上,怀疑是 SQL 的问题。然后在偶然特别慢的时候,我去阿里云上看慢查询日志,发现同一条 SQL,确实有时候会特别慢。这有点玩大了,数据库问题我是一个小菜鸟。

但是这种问题也没得选择,只得硬着头皮上。于是我就又查看了 RDS 的 IO 指标。发现慢的时候,IO 确实不正常。于是顺着这条思路,网上查资料,并且也会恶补一些 MySQL 知识,白天看《高性能 MySQL》,晚上看《MySQL 实战45讲》。最终尝试着变更一些系统参数,发现还真是书上所说的可能是脏页 flush 问题。

当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。不管是脏页还是干净页,都是在内存中的。

由于磁盘,比内存慢的不是一点两点。当内存占满的时候,就需要刷脏页。而刷脏页的时候,更新操作就需要暂停了,这一点就有点像我们 Java 中的 Full Gc。

另外 redo log 满了也要刷脏页。而刷脏页时,会严重影响 InnoDB 的性能。所以,如何合理的刷脏页,就需要调优了。

这里,我给大家推荐一下老司机 DBA 常用的配置调优策略。合理地设置 innodb_io_capacity 的值,并且平时要多关注脏页比例,不要让它经常接近 75%。怎么计算这个比例呢?这里我列出一个统计方法。

上面的计算统计得到脏页的比例。

还有 innodb_io_capacity 这个参数了,它一般代表的是 InnoDB 引擎模式下,你的磁盘能力。老司机一般大家设置成磁盘的 IOPS。

另外 redo log 建议你也不要设置的太小,如果 redo log 设置得太小,redo log 写满。那么会占用系统 I/O,影响 DML。如果操作频繁,那么慢的和拖拉机一样。

如果有想一起精进的,加我微信号:xttblog 为好友,一起精进!在这个寒冬拼命成你老板喜欢的样子(非秃头和大肚子)!

©著作权归作者所有:来自51CTO博客作者mob604756f06ed8的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. centos7 磁盘空间不足,扩容
  2. ASM磁盘组配置
  3. 驱动器中的磁盘未被格式化. 不知道怎样寻回呢
  4. 不识别磁盘如何解决?
  5. Microsoft Ignite 2021:Azure Disk Storage 新特性
  6. Linux基础-20day-linux磁盘分区(fdisk/parted)
  7. Linux磁盘空间释放问题
  8. 磁盘显示函数不正确怎么恢复?
  9. U盘插入台式电脑时显示请将磁盘插入驱动器请问咋才能修复??

随机推荐

  1. Svelte 3 快速开发指南(对比React与vue)[
  2. React 的未来,与 Suspense 同行[每日前端
  3. Docker Swarm的前世今生
  4. 用Vue.js在浏览器中裁剪图像[每日前端夜
  5. 操作系统分配存储时网络无法正常连接
  6. SpringBoot 中 @SpringBootApplication注
  7. Windows系统设置多用户同时远程登录
  8. 云原生 DevOps 的 5 步升级路径
  9. linux操作系统可以ping通ssh连接无响应
  10. Android(安卓)开发 - 对图片进行虚化(毛玻