成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解MySQL以寫為主的系統(tǒng)如何進行性能監(jiān)控與調(diào)優(yōu),值得收藏

系統(tǒng) Windows 新聞
今天主要分享下mysql數(shù)據(jù)庫寫壓力的性能監(jiān)控與調(diào)優(yōu),分成性能監(jiān)控、相關(guān)調(diào)優(yōu)參數(shù)兩方面來做介紹。

 概述

[[272150]]

今天主要分享下mysql數(shù)據(jù)庫寫壓力的性能監(jiān)控與調(diào)優(yōu),分成性能監(jiān)控、相關(guān)調(diào)優(yōu)參數(shù)兩方面來做介紹。

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

一、寫壓力性能監(jiān)控

1、OS層面的監(jiān)控:iostat -x

  1. # iostat -x 
詳解MySQL以寫為主的系統(tǒng)如何進行性能監(jiān)控與調(diào)優(yōu),值得收藏

說明:

  • rrqm/s:每秒進行merge的讀操作數(shù)目。
  • wrqm/s:每秒進行merge的寫操作數(shù)目。
  • r/s:每秒完成的讀I/O設(shè)備次數(shù)。
  • w/s:每秒完成的寫I/O設(shè)備次數(shù)。
  • rsec/s:每秒讀扇區(qū)數(shù)。
  • wsec/s:每秒寫扇區(qū)數(shù)。
  • rkB/s:每秒讀K字節(jié)數(shù)。
  • wkB/s:每秒寫K字節(jié)數(shù)。
  • avgrq-sz:平均每次設(shè)備I/O操作的數(shù)據(jù)大小(扇區(qū))。
  • avgqu-sz:平均I/O隊列長度。
  • await:平均每次設(shè)備I/O操作的等待時間(毫秒)。
  • svctm:平均每次設(shè)備I/O操作的服務(wù)時間(毫秒)。
  • %util:一秒中有百分之多少的時間用于I/O操作,或者說一秒中有多少時間I/O隊列是非空的。

其實監(jiān)控系統(tǒng)的io狀況,主要查看%util、r/s、w/s,一般繁忙度在70%,每秒寫也在理想值了;但如果系統(tǒng)目前繁忙度低,每秒寫很低,可以增加寫入。

2、DB層面監(jiān)控:監(jiān)控各種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. rows in set (0.01 sec) 

 

詳解MySQL以寫為主的系統(tǒng)如何進行性能監(jiān)控與調(diào)優(yōu),值得收藏

寫掛起次數(shù)值大于0,甭管是什么寫掛起,出現(xiàn)掛起的話就說明出現(xiàn)寫壓力,所以值最好的是保持為0。監(jiān)控“掛起”狀態(tài)值,出現(xiàn)大于0且持續(xù)增加,報警處理。

3、寫入速度監(jiān)控:日志寫、臟頁寫

3.1、日志寫入速度監(jiān)控

  1. mysql> show global status like '%log%written'

 

詳解MySQL以寫為主的系統(tǒng)如何進行性能監(jiān)控與調(diào)優(yōu),值得收藏

從 Innodb_os_log_written 可以知道 innodb 日志的寫入量,從而判斷 innodb_log_buffer_size 的大小是否合適,同時也可以估計出一個 log_file 大概能支持多長時間。innodb 當buffer滿了,事務(wù)提交或每秒1次刷新,看哪個更早發(fā)生。

3.2、臟頁寫入速度監(jiān)控

  1. mysql> show global status like '%a%written'
  2. +----------------------------+---------+ 
  3. | Variable_name | Value | 
  4. +----------------------------+---------+ 
  5. | Innodb_data_written | 1073152 | #目前為止寫的總的數(shù)據(jù)量,單位字節(jié) 
  6. | Innodb_dblwr_pages_written | 7 | 
  7. | Innodb_pages_written | 58 | #寫數(shù)據(jù)頁的數(shù)量 
  8. +----------------------------+---------+ 
  9. rows in set (0.01 sec) 

 

詳解MySQL以寫為主的系統(tǒng)如何進行性能監(jiān)控與調(diào)優(yōu),值得收藏

3.3、關(guān)注比值: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 | #已經(jīng)寫入到doublewrite buffer的頁的數(shù)量 
  6. | Innodb_dblwr_writes | 3 | #doublewrite寫的次數(shù) 
  7. +----------------------------+-------+ 
  8. rows in set (0.00 sec) 

1、如果該比值是64:1,說明doublewrite每次都是滿寫,寫的壓力很大。

2、如果系統(tǒng)的double_write比較高的話,iostat看到的wrqm/s(每秒合并寫的值)就高,因為double_write高意味著每次寫基本上都是寫2M,這時候就發(fā)生更多的合并,但wrqm/s高并不害怕,因為發(fā)生合并是好事,看wrqm/s和繁忙度能不能接受。

4、臟頁的量監(jiān)控

  1. mysql> show global status like '%dirty%'
  2. +--------------------------------+-------+ 
  3. | Variable_name | Value | 
  4. +--------------------------------+-------+ 
  5. | Innodb_buffer_pool_pages_dirty | 0 | #當前buffer pool中臟頁的數(shù)量 
  6. | Innodb_buffer_pool_bytes_dirty | 0 | #當前buffer pool中臟頁的總字節(jié)數(shù) 
  7. +--------------------------------+-------+ 
  8. 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中數(shù)據(jù)頁總量 
  15. +--------------------------------+-------+ 
  16. 1 row in set (0.01 sec) 

關(guān)注比值:Innodb_buffer_pool_pages_dirty / Innodb_buffer_pool_pages_total,臟頁占比

通過比值看臟頁是否多,比如臟頁10%的話,可以判斷系統(tǒng)可能不是寫為主的系統(tǒng)。

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中已經(jīng)沒有可用頁,等待后臺往回刷臟頁,騰出可用數(shù)據(jù)頁,這樣就很影響業(yè)務(wù)了,hang住。

Innodb_log_waits,如果該值大于0,說明寫壓力很大,出現(xiàn)了日志等待。如果Innodb_log_waits狀態(tài)變量(等待日志緩沖刷出的次數(shù))的值比較高,而且繼續(xù)增長,可以增大log buffer或者降低事務(wù)大小。

6、系統(tǒng)真實負載:rows增刪改查 、事務(wù)提交、事務(wù)回滾

  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. 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. 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. rows in set (0.01 sec) 

通過監(jiān)控系統(tǒng)真實負載,如果業(yè)務(wù)正常,負載上升,此時,就要根據(jù)業(yè)務(wù)具體情況,進行相應(yīng)的調(diào)優(yōu)。

二、寫壓力調(diào)優(yōu)參數(shù)

通過調(diào)整參數(shù)降低寫壓力時,一定要實時關(guān)注iostat系統(tǒng)的各項指標。

1、臟頁刷新的頻率

  1. mysql> show variables like 'i%depth%'

 

詳解MySQL以寫為主的系統(tǒng)如何進行性能監(jiān)控與調(diào)優(yōu),值得收藏

默認1024,遍歷lru list刷新臟頁,值越大,說明刷臟頁頻率越高。

2、磁盤刷新臟頁的量:磁盤io能力

  1. mysql> show variables like '%io_c%'

 

詳解MySQL以寫為主的系統(tǒng)如何進行性能監(jiān)控與調(diào)優(yōu),值得收藏

根據(jù)磁盤io能力進行調(diào)整,值越大,每次刷臟頁的量越大。

3、redolog調(diào)優(yōu)

  1. mysql> show variables like 'innodb_log%'

 

詳解MySQL以寫為主的系統(tǒng)如何進行性能監(jiān)控與調(diào)優(yōu),值得收藏

logfile大小和組數(shù)可能會導致寫抖動:日志切換頻率需要監(jiān)控(文件系統(tǒng)層面技巧)。

4、redolog的刷新機

  1. mysql> show variables like '%flush%commit'

 

詳解MySQL以寫為主的系統(tǒng)如何進行性能監(jiān)控與調(diào)優(yōu),值得收藏

這里我優(yōu)化了一下

默認MySQL的刷盤策略是1,最安全的,但是安全的同時,自然也就會帶來一定的性能壓力。在寫壓力巨大的情況下,根據(jù)具體的業(yè)務(wù)場景,犧牲安全性的將其調(diào)為0或2。

詳解MySQL以寫為主的系統(tǒng)如何進行性能監(jiān)控與調(diào)優(yōu),值得收藏

5、定義每次日志刷新的時間

  1. mysql> show variables like 'innodb_flush_log_at_timeout'

 

詳解MySQL以寫為主的系統(tǒng)如何進行性能監(jiān)控與調(diào)優(yōu),值得收藏

默認是1,也就是每秒log刷盤,配合innodb_flush_log_at_trx_commit來設(shè)置,為了充分保證數(shù)據(jù)的一致性,一般innodb_flush_log_at_trx_commit=1,這樣的話,innodb_flush_log_at_timeout的設(shè)置也就沒有意義了。因此,該參數(shù)的設(shè)置只針對innodb_flush_log_at_trx_commit為0/2起作用。

6、內(nèi)存臟頁占比控制

  1. mysql> show variables like '%dirty%pct%'

 

詳解MySQL以寫為主的系統(tǒng)如何進行性能監(jiān)控與調(diào)優(yōu),值得收藏

在內(nèi)存buffer pool空間允許的范圍下,可以調(diào)大臟頁允許在內(nèi)存空間的占比,可解燃眉之急,降低寫壓力。

7、關(guān)閉doublewrite降低寫壓力

  1. mysql> show variables like '%doub%'
詳解MySQL以寫為主的系統(tǒng)如何進行性能監(jiān)控與調(diào)優(yōu),值得收藏

兩次寫特性,默認開啟,靜態(tài)參數(shù)。

以上就是針對mysql在以寫為主的情況下的相關(guān)參數(shù)監(jiān)控及調(diào)優(yōu),如何調(diào)整(靜態(tài)參數(shù)、動態(tài)參數(shù))最好都要根據(jù)官方文檔來調(diào)整。后面會分享更多devops和DBA方面的內(nèi)容,感興趣的朋友可以關(guān)注一下~

責任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2012-03-26 10:55:03

JavaJava EE

2011-03-10 14:40:54

LAMPMysql

2019-11-01 08:49:07

JVM監(jiān)控性能

2022-11-30 08:17:41

JVM調(diào)優(yōu)技巧

2024-05-21 09:08:57

JVM調(diào)優(yōu)面試

2023-11-15 16:35:31

SQL數(shù)據(jù)庫

2018-11-12 14:53:09

Redis性能調(diào)優(yōu)數(shù)據(jù)庫

2019-09-12 08:03:56

MySQL索引數(shù)據(jù)庫

2019-09-04 08:13:53

MySQLInnodb事務(wù)系統(tǒng)

2019-09-26 08:59:39

DockerGoogle軟件

2020-11-09 07:34:49

JVM性能監(jiān)控

2011-03-18 11:21:48

2023-11-28 08:43:48

2011-04-07 16:15:31

MySQL服務(wù)器調(diào)優(yōu)

2011-03-21 09:35:38

LAMP調(diào)優(yōu)網(wǎng)絡(luò)文件

2011-03-10 14:40:52

2009-04-01 11:17:52

內(nèi)存分配調(diào)優(yōu)Oracle

2014-09-22 13:31:46

Linux

2013-09-24 13:06:56

AngularJS性能優(yōu)化

2019-02-19 10:25:28

JVM性能工具
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久乐国产精品 | 久久久久久99 | 国产精品久久久久久模特 | 激情综合五月天 | 久久精品99 | 欧美高清视频一区 | 亚洲天天| 91美女在线 | 成人小视频在线观看 | 91国产精品 | 999久久久免费精品国产 | 欧美一级三级在线观看 | 久久蜜桃资源一区二区老牛 | 欧美激情久久久 | 久久久天堂 | 国产无人区一区二区三区 | 国产精品一区二区三区久久久 | 免费在线成人 | 在线免费观看成年人视频 | 99精品视频在线观看 | 亚洲91av| 国产精品亚洲成在人线 | 草久久久 | 亚洲美女天堂网 | 91高清在线| 伊人网综合在线观看 | 精品自拍视频在线观看 | 中文字幕亚洲一区二区三区 | 美女在线一区二区 | 久久久久国产一区二区三区 | 欧美日韩一区二区在线观看 | 久久久国产亚洲精品 | 日韩精品一区二区三区中文在线 | 日韩精品在线播放 | 亚洲精品电影 | 亚洲成av人片在线观看 | 亚洲高清电影 | 中文字幕成人av | 亚洲黄色片免费观看 | 精品国产乱码久久久久久闺蜜 | 蜜桃视频在线观看免费视频网站www |