MySQL存储写入性能严重抖动分析
来源:互联网 发布:godaddy域名dns修改 编辑:程序博客网 时间:2024/06/05 23:39
案例描述:
通过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中进行修改保存,再重新启动数据库实例才能生效。
- MySQL存储写入性能严重抖动分析
- 记一次Mysql数据库性能异常抖动分析全过程
- Android 性能分析之内存抖动分析
- Android 内存抖动 性能分析 <10>
- 大数据量写入性能分析
- python 测试mysql写入性能
- mysql存储性能优化
- MySQL性能测试分析
- mysql性能分析
- MySql性能分析
- MySQL性能分析
- MySQL性能诊断分析
- MySQL性能测试分析
- mysql性能分析
- mysql limit性能分析
- MySQL性能分析
- MySQL性能分析
- mysql性能分析
- 前端学习笔记(JQuery+JavaScript)
- 为什么final类型map和list内容可以修改
- java基础7
- int argc 、char *argv[] 与 char **argv
- mysql5.7修改用户的密码和给用户授权
- MySQL存储写入性能严重抖动分析
- mxnet-ssh环境配置
- thinkphp3.2 Cli定时任务
- LeetCode 214. Shortest Palindrome
- 将 Shiro 作为应用的权限基础
- Java Jdbc
- 算法-旋转数组的最小数字
- 【C语言】函数调用过程解析(栈帧)
- HDU 1075 What Are You Talking About(字典树)