1.QPS(每秒Query量)
每秒查詢量,多次查詢diff
QPS = Questions(or Queries) / seconds
mysql > show global status like 'Question%';
2.TPS(每秒事務量)
TPS = (Com_commit + Com_rollback) / seconds
mysql > show global status like 'Com_commit';
mysql > show global status like 'Com_rollback';
3.key Buffer 命中率
對應my.cnf中Key_buffer_size參數設置
mysql>show global status like 'key%';
key_buffer_read_hits = (1-key_reads / key_read_requests) * 100%
key_buffer_write_hits = (1-key_writes / key_write_requests) * 100%
4.InnoDB Buffer命中率
對應innodb_buffer_pool_size參數設置,主要針對InnoDB表性能影響最大的一個參數。功能與Key_buffer_size一樣。InnoDB佔用的內存,除innodb_buffer_pool_size用於存儲頁面緩存數據外,另外正常情況下還有大約8%的開銷,主要用在每個緩存頁幀的描述、adaptive hash等數據結構,一般設置爲機器內存的80%
mysql> show status like 'innodb_buffer_pool_read%';
innodb_buffer_read_hits = (1 - innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100%
5.Query Cache命中率
query_cache_size: 主要用來緩存MySQL中的ResultSet,也就是一條SQL語句執行的結果集,所以僅僅只能針對select語句。當我們打開了 Query Cache功能,MySQL在接受到一條select語句的請求後,如果該語句滿足Query Cache的要求(未顯式說明不允許使用Query Cache,或者已經顯式申明需要使用Query Cache),MySQL會直接根據預先設定好的HASH算法將接受到的select語句以字符串方式進行hash,然後到Query Cache中直接查找是否已經緩存。也就是說,如果已經在緩存中,該select請求就會直接將數據返回,從而省略了後面所有的步驟(如SQL語句的解析,優化器優化以及向存儲引擎請求數據等),極大的提高性能
當然,Query Cache也有一個致命的缺陷,那就是當某個表的數據有任何任何變化,都會導致所有引用了該表的select語句在Query Cache中的緩存數據失效。所以,當我們的數據變化非常頻繁的情況下,使用Query Cache可能會得不償失
mysql> show status like 'Qcache%';
Query_cache_hits = (Qcahce_hits / (Qcache_hits + Qcache_inserts )) * 100%;
例如
| Qcache_hits | 1892463 |
| Qcache_inserts | 35627
命中率98.17%=1892463/(1892463 +35627 )*100
6.Table Cache狀態量
mysql> show global status like 'open%';
7.Thread Cache 命中率
mysql> show global status like 'Thread%';
mysql> show global status like 'Connections';
Thread_cache_hits = (1 - Threads_created / connections ) * 100%
8.鎖定情況
mysql> show global status like '%lock%';
Table_locks_waited/Table_locks_immediate=0.3%
show open table from XXX(數據庫名);//查看數據庫哪些表正在使用In_use 以及鎖定Name_locked
show global status like 'table_locks%';
Table_locks_immediate 發生表鎖定操作, 但表鎖定後馬上釋放
Table_locks_waited 發生表鎖定, 並因此具有鎖等待
9.主從延遲情況
mysql > show slave status
10.臨時表情況
mysql > show status like 'Create_tmp%';
Created_tmp_disk_tables/Created_tmp_tables比值最好不要超過10%,如果Created_tmp_tables值比較大,
可能是排序句子過多或者是連接句子不夠優化
11.Innodb_log_waits
mysql > show status like 'innodb_log_waits';
12.慢查詢情況
mysql> show global status like '%slow%';