加入收藏 | 设为首页 | 会员中心 | 我要投稿 广州站长网 (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的读操

4、脏页的量监控

  1. mysql> show global status like '%dirty%'; 
  2. +--------------------------------+-------+ 
  3. | Variable_name | Value | 
  4. +--------------------------------+-------+ 
  5. | Innodb_buffer_pool_pages_dirty | 0 | #当前buffer pool中脏页的数量 
  6. | Innodb_buffer_pool_bytes_dirty | 0 | #当前buffer pool中脏页的总字节数 
  7. +--------------------------------+-------+ 
  8. 2 rows in set (0.01 sec) 
  9.   
  10. mysql> show global status like 'i%total%'; 
  11. +--------------------------------+-------+ 
  12. | Variable_name | Value | 
  13. +--------------------------------+-------+ 
  14. | Innodb_buffer_pool_pages_total | 8192 | #buffer pool中数据页总量 
  15. +--------------------------------+-------+ 
  16. 1 row in set (0.01 sec) 

关注比值:Innodb_buffer_pool_pages_dirty / Innodb_buffer_pool_pages_total,脏页占比

通过比值看脏页是否多,比如脏页10%的话,可以判断系统可能不是写为主的系统。

5、写性能瓶颈

  1. mysql> show global status like '%t_free'; 
  2. +------------------------------+-------+ 
  3. | Variable_name | Value | 
  4. +------------------------------+-------+ 
  5. | Innodb_buffer_pool_wait_free | 0 | 
  6. +------------------------------+-------+ 
  7. 1 row in set (0.01 sec) 
  8.   
  9. mysql> show global status like '%g_waits'; 
  10. +------------------+-------+ 
  11. | Variable_name | Value | 
  12. +------------------+-------+ 
  13. | Innodb_log_waits | 0 | 
  14. +------------------+-------+ 
  15. 1 row in set (0.00 sec) 

说明:

Innodb_buffer_pool_wait_free,如果该值大于0,说明buffer pool中已经没有可用页,等待后台往回刷脏页,腾出可用数据页,这样就很影响业务了,hang住。

Innodb_log_waits,如果该值大于0,说明写压力很大,出现了日志等待。如果Innodb_log_waits状态变量(等待日志缓冲刷出的次数)的值比较高,而且继续增长,可以增大log buffer或者降低事务大小。

6、系统真实负载:rows增删改查 、事务提交、事务回滚

  1. mysql> show global status like 'i%rows%'; 
  2. +----------------------+-------+ 
  3. | Variable_name | Value | 
  4. +----------------------+-------+ 
  5. | Innodb_rows_deleted | 0 | 
  6. | Innodb_rows_inserted | 145 | 
  7. | Innodb_rows_read | 233 | 
  8. | Innodb_rows_updated | 5 | 
  9. +----------------------+-------+ 
  10. 4 rows in set (0.01 sec) 
  11.   
  12. mysql> show global status like '%commit%'; 
  13. +----------------+-------+ 
  14. | Variable_name | Value | 
  15. +----------------+-------+ 
  16. | Com_commit | 0 | 
  17. | Com_xa_commit | 0 | 
  18. | Handler_commit | 16 | 
  19. +----------------+-------+ 
  20. 3 rows in set (0.01 sec) 
  21.   
  22. mysql> show global status like '%rollback%'; 
  23. +----------------------------+-------+ 
  24. | Variable_name | Value | 
  25. +----------------------------+-------+ 
  26. | Com_rollback | 0 | 
  27. | Com_rollback_to_savepoint | 0 | 
  28. | Com_xa_rollback | 0 | 
  29. | Handler_rollback | 0 | 
  30. | Handler_savepoint_rollback | 0 | 
  31. +----------------------------+-------+ 
  32. 5 rows in set (0.01 sec) 

通过监控系统真实负载,如果业务正常,负载上升,此时,就要根据业务具体情况,进行相应的调优。

二、写压力调优参数

通过调整参数降低写压力时,一定要实时关注iostat系统的各项指标。

(编辑:广州站长网)

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

热点阅读