MySQL存储写入性能严重抖动分析-阿里云开发者社区

开发者社区> 技术小甜> 正文

MySQL存储写入性能严重抖动分析

简介:
+关注继续查看

案例描述:

  通过iostat发现存储的写性能长期维持在10MB左右,而且因为写性能差已经导致数据库性能变差;

  两个小时以后,iostat发现系统的写性能已经能够到100MB以上,数据库性能也恢复正常。

也就是说,在对系统、数据库监控中,出现了性能波谷,存储写入性能严重抖动,为什么?

一、原理过程

由上原理图,进行过程解析:

  1、事务提交,修改buffer_pool中的数据形成脏页,并且同时生成redo日志,将日志写入磁盘redo log中;

  2、事务提交成功;

假设,有三组redo log文件

  3、继续事务提交,修改数据,写redo log,如果innodb_log_file_size的数值很小,但是产生的redo日志信息很大,这样第一组redo日志很快就会被写满,就要进行日志文件切换;

  4、如果三组redo log文件都被写满了,就需要进行日志覆盖;

  5、如果需要覆盖的redo log日志文件记录的脏页信息还没有写入到磁盘中,数据库就会主动加大写的力度将脏页信息刷到磁盘里

  6、在将redo日志文件对应的脏页刷入磁盘的过程中,事务没有办法提交,影响业务。

 

二、原理分析

1、通过对redo log的修改时间查看日志文件切换时间

  通过shell> ls -l /mydata/ib_logfile*,查看开始修改的时间和最后修改的时间,计算logfile切换时间。

2、如果redo日志文件切换时间过短,也就是切换频繁,就很容易导致写抖动

  1、正常业务繁忙的会是10-20分钟;

  2、如果是比一般的时间短,说明文件小,切换频繁。

 

三、解决写抖动问题

1、增加redo日志文件数量

mysql> show global variables like 'innodb_log_files_in_group';+---------------------------+-------+| Variable_name             | Value |+---------------------------+-------+| innodb_log_files_in_group | 2     |+---------------------------+-------+1 row in set (0.01 sec)

2、扩大日志文件容量

mysql> show global variables like 'innodb_log_file_size';+----------------------+----------+| Variable_name        | Value    |+----------------------+----------+| innodb_log_file_size | 50331648 |+----------------------+----------+1 row in set (0.01 sec)

3、提高log file的写性能:将日志文件放到写性能优质的磁盘上

mysql> show global variables like 'innodb_log_group_home_dir';+---------------------------+-------+| Variable_name             | Value |+---------------------------+-------+| innodb_log_group_home_dir | ./    |+---------------------------+-------+1 row in set (0.01 sec)

 注意:

  上面的这三个参数都非动态参数,需要在配置文件/etc/my.cnf中进行修改保存,再重新启动数据库实例才能生效。












本文转自xsster51CTO博客,原文链接:http://blog.51cto.com/12945177/1948525 ,如需转载请自行联系原作者




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Yahoo的MySQL性能分析器详解
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/45950465 Yahoo的MySQL性能分析器详解 作者:chszs,转载需注明。
722 0
【译】深入分析Spark UDF的性能
这篇博客会阐述一份关于Apache Spark的在Scala UDF、 PySpark UDF 和PySpark Pandas UDF之间的性能评测报告。
1339 0
源码分析 RocketMQ DLedger 多副本存储实现
详细介绍了RocketMQ DLedger 多副本存储实现部分,主要参考RocketMQ 存储部分的设计理念,并重点阐述 DLedger 消除存储格式、索引文件存储格式,诸如内存映射、刷盘、过期文件删除、文件加载与恢复由于在《RocketMQ技术内幕》中详细介绍,故本文并未重复介绍。
2076 0
云存储系统监控服务分析
首先,阐述监控服务重要性和用户需求;然后描述OSS监控现状;最后给出监控服务解决方案。
4968 0
[Linux 性能检测工具]DF
DF NAME: df 报告了文件系统的使用 语法: df [OPTION]... [FILE]... 描述: Df显示了以文件名为从参数查看所在文件系统的可用空间。如果没有指定文件那么会显示所有的文件系统,磁盘空间默认是1k block,除非POSIXLY_CORRECT被设置,这样就会使用512-byte块。
562 0
可观测系统存储分析最佳实践
分享在北京云峰会智能运维场的主题
385 0
基于对象存储 OSS 的智能数据分析处理框架和功能
今年参加了 2019 全球闪存峰会(Flash Memory World),分享了“基于云存储的智能数据分析处理架构”,重点介绍在对象存储 OSS 之上的数据处理功能,现整理相关内容和大家探讨。
2128 0
+关注
10146
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载