数据库
首页 > 数据库> > 从MySQL的脏页说秃头 + 大肚子,拼命成老板喜欢的样子

从MySQL的脏页说秃头 + 大肚子,拼命成老板喜欢的样子

作者:互联网

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

从MySQL的脏页说秃头 + 大肚子,拼命成老板喜欢的样子

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

原本领导要求让我招一个牛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%。怎么计算这个比例呢?这里我列出一个统计方法。

从MySQL的脏页说秃头 + 大肚子,拼命成老板喜欢的样子

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

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

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

从MySQL的脏页说秃头 + 大肚子,拼命成老板喜欢的样子

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

标签:内存,MySQL,磁盘,脏页,大肚子,秃头
来源: https://blog.51cto.com/15127565/2666113