加入收藏 | 设为首页 | 会员中心 | 我要投稿 广州站长网 (https://www.020zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 移动互联 > 评测 > 正文

详解MySQL以写为主的系统如何进行性能监控与调优,值得收藏

发布时间:2019-07-30 18:22:56 所属栏目:评测 来源:波波说运维
导读:副标题#e# 概述 今天主要分享下mysql数据库写压力的性能监控与调优,分成性能监控、相关调优参数两方面来做介绍。 参考:http://www.cnblogs.com/geaozhang/ 一、写压力性能监控 1、OS层面的监控:iostat -x #iostat-x 说明: rrqm/s:每秒进行merge的读操
副标题[/!--empirenews.page--]

 概述

详解MySQL以写为主的系统如何进行性能监控与调优,值得收藏

今天主要分享下mysql数据库写压力的性能监控与调优,分成性能监控、相关调优参数两方面来做介绍。

参考:http://www.cnblogs.com/geaozhang/

一、写压力性能监控

1、OS层面的监控:iostat -x

  1. # iostat -x 
详解MySQL以写为主的系统如何进行性能监控与调优,值得收藏

说明:

  • rrqm/s:每秒进行merge的读操作数目。
  • wrqm/s:每秒进行merge的写操作数目。
  • r/s:每秒完成的读I/O设备次数。
  • w/s:每秒完成的写I/O设备次数。
  • rsec/s:每秒读扇区数。
  • wsec/s:每秒写扇区数。
  • rkB/s:每秒读K字节数。
  • wkB/s:每秒写K字节数。
  • avgrq-sz:平均每次设备I/O操作的数据大小(扇区)。
  • avgqu-sz:平均I/O队列长度。
  • await:平均每次设备I/O操作的等待时间(毫秒)。
  • svctm:平均每次设备I/O操作的服务时间(毫秒)。
  • %util:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的。

其实监控系统的io状况,主要查看%util、r/s、w/s,一般繁忙度在70%,每秒写也在理想值了;但如果系统目前繁忙度低,每秒写很低,可以增加写入。

2、DB层面监控:监控各种pending(挂起)

  1. mysql> show global status like '%pend%'; 
  2. +------------------------------+-------+ 
  3. | Variable_name | Value | 
  4. +------------------------------+-------+ 
  5. | Innodb_data_pending_fsyncs | 0 | #被挂起的fsync 
  6. | Innodb_data_pending_reads | 0 | #被挂起的物理读 
  7. | Innodb_data_pending_writes | 0 | #被挂起的写 
  8. | Innodb_os_log_pending_fsyncs | 0 | #被挂起的日志fsync 
  9. | Innodb_os_log_pending_writes | 0 | #被挂起的日志写 
  10. +------------------------------+-------+ 
  11. 5 rows in set (0.01 sec) 
详解MySQL以写为主的系统如何进行性能监控与调优,值得收藏

写挂起次数值大于0,甭管是什么写挂起,出现挂起的话就说明出现写压力,所以值最好的是保持为0。监控“挂起”状态值,出现大于0且持续增加,报警处理。

3、写入速度监控:日志写、脏页写

3.1、日志写入速度监控

  1. mysql> show global status like '%log%written'; 
详解MySQL以写为主的系统如何进行性能监控与调优,值得收藏

从 Innodb_os_log_written 可以知道 innodb 日志的写入量,从而判断 innodb_log_buffer_size 的大小是否合适,同时也可以估计出一个 log_file 大概能支持多长时间。innodb 当buffer满了,事务提交或每秒1次刷新,看哪个更早发生。

3.2、脏页写入速度监控

  1. mysql> show global status like '%a%written'; 
  2. +----------------------------+---------+ 
  3. | Variable_name | Value | 
  4. +----------------------------+---------+ 
  5. | Innodb_data_written | 1073152 | #目前为止写的总的数据量,单位字节 
  6. | Innodb_dblwr_pages_written | 7 | 
  7. | Innodb_pages_written | 58 | #写数据页的数量 
  8. +----------------------------+---------+ 
  9. 3 rows in set (0.01 sec) 
详解MySQL以写为主的系统如何进行性能监控与调优,值得收藏

3.3、关注比值:Innodb_dblwr_pages_written / Innodb_dblwr_writes,表示一次写了多少页

  1. mysql> show global status like '%dblwr%'; 
  2. +----------------------------+-------+ 
  3. | Variable_name | Value | 
  4. +----------------------------+-------+ 
  5. | Innodb_dblwr_pages_written | 7 | #已经写入到doublewrite buffer的页的数量 
  6. | Innodb_dblwr_writes | 3 | #doublewrite写的次数 
  7. +----------------------------+-------+ 
  8. 2 rows in set (0.00 sec) 

1、如果该比值是64:1,说明doublewrite每次都是满写,写的压力很大。

(编辑:广州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读