1. 程式人生 > >mysql--檢視mysql狀態的常用命令

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 因為空間不足而等待