MySql需要關(guān)注的性能測(cè)試指標(biāo):
1歌溉、對(duì)服務(wù)器硬件設(shè)施的監(jiān)控:
(1)惠窄,獲取MySQL用戶下的進(jìn)程總數(shù) :ps -ef | awk '{print $1}' | grep "mysql" | grep -v "grep" | wc-1
(2)、CPU使用率:# top # vmstat
2、數(shù)據(jù)庫性能指標(biāo):
(1)QPS(每秒Query量)
QPS = Questions(or Queries) / seconds
mysql > show /*50000 global */ status like 'Question';
(2)TPS(每秒事務(wù)量)
TPS = (Com_commit + Com_rollback) / seconds
mysql > show status like 'Com_commit';
1.系統(tǒng)mysql的進(jìn)程數(shù)
ps -ef | grep "mysql" | grep -v "grep" | wc ?Cl
2.Slave_running
mysql > show status like 'Slave_running';
如果系統(tǒng)有一個(gè)從復(fù)***務(wù)器,這個(gè)值指明了從服務(wù)器的健康度
3.Threads_connected
mysql > show status like 'Threads_connected';
當(dāng)前客戶端已連接的數(shù)量。這個(gè)值會(huì)少于預(yù)設(shè)的值唯笙,但你也能監(jiān)視到這個(gè)值較大,這可保證客戶端是處在活躍狀態(tài)盒使。
4.Threads_running
mysql > show status like 'Threads_running';
如果數(shù)據(jù)庫超負(fù)荷了崩掘,你將會(huì)得到一個(gè)正在(查詢的語句持續(xù))增長(zhǎng)的數(shù)值。這個(gè)值也可以少于預(yù)先設(shè)定的值少办。這個(gè)值在很短的時(shí)間內(nèi)超過限定值是沒問題的苞慢。當(dāng)Threads_running值超過預(yù)設(shè)值時(shí)并且該值在5秒內(nèi)沒有回落時(shí), 要同時(shí)監(jiān)視其他的一些值英妓。
5.Aborted_clients
mysql > show status like 'Aborted_clients';
客戶端被異常中斷的數(shù)值挽放,即連接到mysql服務(wù)器的客戶端沒有正常地?cái)嚅_或關(guān)閉。對(duì)于一些應(yīng)用程序是沒有影響的蔓纠,但對(duì)于另一些應(yīng)用程序可能你要跟蹤該值辑畦,因?yàn)楫惓V袛噙B接可能表明了一些應(yīng)用程序有問題。
6.Questions
mysql> show status like 'Questions';
每秒鐘獲得的查詢數(shù)量腿倚,也可以是全部查詢的數(shù)量纯出,根據(jù)你輸入不同的命令會(huì)得到你想要的不同的值。
7.Handler_*
mysql> show status like 'Handler_%';
如果你想監(jiān)視底層(low-level)數(shù)據(jù)庫負(fù)載敷燎,這些值是值得去跟蹤的暂筝。
如果Handler_read_rnd_next值相對(duì)于你認(rèn)為是正常值相差懸殊,可能會(huì)告訴你需要優(yōu)化或索引出問題了懈叹。Handler_rollback表明事務(wù)被回滾的查詢數(shù)量乖杠。你可能想調(diào)查一下原因分扎。
8.Opened_tables
mysql> show status like 'Opened_tables';
表緩存沒有命中的數(shù)量澄成。如果該值很大,你可能需要增加table_cache的數(shù)值畏吓。典型地墨状,你可能想要這個(gè)值每秒打開的表數(shù)量少于1或2。
9.Select_full_join
mysql> show status like 'Select_full_join';
沒有主鍵(key)聯(lián)合(Join)的執(zhí)行菲饼。該值可能是零肾砂。這是捕獲開發(fā)錯(cuò)誤的好方法,因?yàn)橐恍┻@樣的查詢可能降低系統(tǒng)的性能宏悦。
10.Select_scan
mysql> show status like 'Select_scan';
執(zhí)行全表搜索查詢的數(shù)量镐确。在某些情況下是沒問題的包吝,但占總查詢數(shù)量該比值應(yīng)該是常量(即Select_scan/總查詢數(shù)量商應(yīng)該是常數(shù))。如果你發(fā)現(xiàn)該值持續(xù)增長(zhǎng)源葫,說明需要優(yōu)化诗越,缺乏必要的索引或其他問題。
11.Slow_queries
mysql> show status like 'Slow_queries';
超過該值(--long-query-time)的查詢數(shù)量息堂,或沒有使用索引查詢數(shù)量嚷狞。對(duì)于全部查詢會(huì)有小的沖突。如果該值增長(zhǎng)荣堰,表明系統(tǒng)有性能問題床未。
12.Threads_created
mysql> show status like 'Threads_created';
該值應(yīng)該是低的。較高的值可能意味著你需要增加thread_cache的數(shù)值振坚,或你遇到了持續(xù)增加的連接薇搁,表明了潛在的問題。
13.客戶端連接進(jìn)程數(shù)
shell> mysqladmin processlist
mysql> show processlist;
你可以通過使用其他的統(tǒng)計(jì)信息得到已連接線程數(shù)量和正在運(yùn)行線程的數(shù)量屡拨,檢查正在運(yùn)行的查詢花了多長(zhǎng)時(shí)間是一個(gè)好主意只酥。如果有一些長(zhǎng)時(shí)間的查詢,管理員可以被通知呀狼。你可能也想了解多少個(gè)查詢是在"Locked"的狀態(tài)―---該值作為正在運(yùn)行的查詢不被計(jì)算在內(nèi)而是作為非活躍的裂允。一個(gè)用戶正在等待一個(gè)數(shù)據(jù)庫響應(yīng)。
14.innodb狀態(tài)
mysql> show engine innodb status\G;
該語句產(chǎn)生很多信息哥艇,從中你可以得到你感興趣的绝编。首先你要檢查的就是“從最近的XX秒計(jì)算出來的每秒的平均負(fù)載”。
(1)Pending normal aio reads:該值是innodb io請(qǐng)求查詢的大忻蔡ぁ(size)十饥。如果該值大到超過了10―20,你可能有一些瓶頸祖乳。
(2)reads/s, avg bytes/read, writes/s, fsyncs/s:這些值是io統(tǒng)計(jì)逗堵。對(duì)于reads/writes大值意味著io子系統(tǒng)正在被裝載。適當(dāng)?shù)闹等Q于你系統(tǒng)的配置眷昆。
(3)Buffer pool hit rate:這個(gè)命中率非常依賴于你的應(yīng)用程序蜒秤。當(dāng)你覺得有問題時(shí)請(qǐng)檢查你的命中率
(4)inserts/s, updates/s, deletes/s, reads/s:有一些Innodb的底層操作。你可以用這些值檢查你的負(fù)載情況查看是否是期待的數(shù)值范圍亚斋。
15.主機(jī)性能狀態(tài)
shell> uptime
16.CPU使用率
shell> top
shell> vmstat
17.磁盤IO
shell> vmstat
shell> iostat
18.swap進(jìn)出量(內(nèi)存)
shell> free
19.MySQL錯(cuò)誤日志
在服務(wù)器正常完成初始化后作媚,什么都不會(huì)寫到錯(cuò)誤日志中,因此任何在該日志中的信息都要引起管理員的注意帅刊。
20.InnoDB表空間信息
InnoDB僅有的危險(xiǎn)情況就是表空間填滿----日志不會(huì)填滿纸泡。檢查的最好方式就是:show table status;你可以用任何InnoDB表來監(jiān)視InnoDB表的剩余空間。
21.QPS每秒Query量
QPS = Questions(or Queries) / seconds
mysql > show /* global */ status like 'Question';
22.TPS(每秒事務(wù)量)
TPS = (Com_commit + Com_rollback) / seconds
mysql > show status like 'Com_commit';
mysql > show status like 'Com_rollback';
23.key Buffer?命中率
key_buffer_read_hits = (1-key_reads / key_read_requests) * 100%
key_buffer_write_hits = (1-key_writes / key_write_requests) * 100%
mysql> show status like 'Key%';
24.InnoDB Buffer命中率
Innodb_buffer_read_hits = (1 - innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100%
mysql> show status like 'innodb_buffer_pool_read%';
25.Query Cache命中率
Query_cache_hits = (Qcahce_hits / (Qcache_hits + Qcache_inserts )) * 100%;
mysql> show status like 'Qcache%';
26.Table Cache狀態(tài)量
mysql> show status like 'open%';
27.Thread Cache?命中率
Thread_cache_hits = (1 - Threads_created / connections ) * 100%
mysql> show status like 'Thread%';
mysql> show status like 'Connections';
28.鎖定狀態(tài)
mysql> show status like '%lock%';
29.復(fù)制延時(shí)量
mysql > show slave status
30.Tmp Table狀況(臨時(shí)表狀況)
mysql > show status like 'Create_tmp%';
31.Binlog Cache使用狀況
mysql > show status like 'Binlog_cache%';
32.Innodb_log_waits量
mysql > show status like 'innodb_log_waits';