mysql--檢視mysql狀態的常用命令
mysql優化的第一步就是要知道查詢mysql服務的狀態,之後再定位慢查詢。
執行show status命令後將會列出300個關於mysql狀態的引數,我們常用的也就那麼幾個。
列舉了一些常用命令代表的含義:
Aborted_clients 由於客戶沒有正確關閉連線已經死掉,已經放棄的連線數量.
Aborted_connects 嘗試已經失敗的MySQL伺服器的連線的次數.
Connections 試圖連線MySQL伺服器的次數.
Created_tmp_tables 當執行語句時,已經被創造了的隱含臨時表的數量.
Delayed_insert_threads 正在使用的延遲插入處理器執行緒的數量.
Delayed_writes 用INSERT DELAYED寫入的行數.
Delayed_errors 用INSERT DELAYED寫入的發生某些錯誤(可能重複鍵值)的行數.
Flush_commands 執行FLUSH命令的次數.
Handler_delete 請求從一張表中刪除行的次數.
Handler_read_first 請求讀入表中第一行的次數.
Handler_read_key 請求數字基於鍵讀行.
Handler_read_next 請求讀入基於一個鍵的一行的次數.
Handler_read_rnd 請求讀入基於一個固定位置的一行的次數.
Handler_update 請求更新表中一行的次數.
Handler_write 請求向表中插入一行的次數.
Key_blocks_used 用於關鍵字快取的塊的數量.
Key_read_requests 請求從快取讀入一個鍵值的次數.
Key_reads 從磁碟物理讀入一個鍵值的次數.
Key_write_requests 請求將一個關鍵字塊寫入快取次數.
Key_writes 將一個鍵值塊物理寫入磁碟的次數.
Max_used_connections 同時使用的連線的最大數目.
Not_flushed_key_blocks 在鍵快取中已經改變但是還沒被清空到磁碟上的鍵塊.
Not_flushed_delayed_rows 在INSERT DELAY佇列中等待寫入的行的數量.
Open_tables 開啟表的數量.
Open_files 開啟檔案的數量.
Open_streams 開啟流的數量(主要用於日誌記載)
Opened_tables 已經開啟的表的數量.
Questions 發往伺服器的查詢的數量.
Slow_queries 要花超過long_query_time時間的查詢數量.
Threads_connected 當前開啟的連線的數量.
Threads_running 不在睡眠的執行緒數量.
Uptime 伺服器工作了多少秒.
下面列出幾個常用的命令
1. QPS(每秒Query量)
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 命中率
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命中率
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命中率
mysql> show status like 'Qcache%';
Query_cache_hits = (Qcahce_hits / (Qcache_hits + Qcache_inserts )) * 100%;
6. Table Cache狀態量
mysql> show global status like 'open%';
比較 open_tables 與 opend_tables 值
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% 如果這個比值比較大的話,說明表鎖造成的阻塞比較嚴重
Innodb_row_lock_waits innodb行鎖,太大可能是間隙鎖造成的
9. 複製延時量
mysql > show slave status
檢視延時時間
10. Tmp Table 狀況(臨時表狀況)
mysql > show status like 'Create_tmp%';
Created_tmp_disk_tables/Created_tmp_tables比值最好不要超過10%,如果Created_tmp_tables值比較大,
可能是排序句子過多或者是連線句子不夠優化
11. Binlog Cache 使用狀況
mysql > show status like 'Binlog_cache%';
如果Binlog_cache_disk_use值不為0 ,可能需要調大 binlog_cache_size大小
12. Innodb_log_waits 量
mysql > show status like 'innodb_log_waits';
Innodb_log_waits值不等於0的話,表明 innodb log buffer 因為空間不足而等待