萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> MySQL中SHOW STATUS查看運行狀況

MySQL中SHOW STATUS查看運行狀況

在mysql中SHOW STATUS是我們最好的朋友,它可以快速的查看運行狀況一些情況,讓我們及時對數據庫進行優化操作,下面我總結了一些用法。

直接在命令行下登陸MySQL運行SHOW STATUS;

1, 查看MySQL服務器配置信息

 

 代碼如下 復制代碼  
mysql> show variables;

2, 查看MySQL服務器運行的各種狀態值

 

 代碼如下 復制代碼 mysql> show global status;

3, 慢查詢

 代碼如下 復制代碼

 
mysql> show variables like '%slow%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| log_slow_queries | OFF   |
| slow_launch_time | 2     |
+------------------+-------+
mysql> show global status like '%slow%';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| Slow_launch_threads | 0     |
| Slow_queries        | 279   |
+---------------------+-------+

配置中關閉了記錄慢查詢(最好是打開,方便優化),超過2秒即為慢查詢,一共有279條慢查詢

 

 代碼如下 復制代碼 SHOW VARIABLES

SHOW VARIABLES是查看MySQL的配置參數,還可以使用類似SHOW VARIABLES LIKE ‘Key%’

 代碼如下 復制代碼

SHOW PROCESSLIST

SHOW PROCESSLIST是查看當前正在進行的進程,對於有鎖表等情況的排查很有用處。一般情況下,打開MySQL的慢查詢

記錄同樣有利於排查。

 代碼如下 復制代碼

SHOW OPEN TABLES

SHOW OPEN TABLES是顯示當前已經被打開的表列表。

mysqladmin status

使用MySQL自帶的mysqladmin 工具查看status,使用以下命令

 代碼如下 復制代碼

mysqladmin -uroot –password=’password’ status

顯示的結果如下:

Uptime: 87117 Threads: 1 Questions: 5481626 Slow queries: 16 Opens: 2211 Flush tables: 1 Open tables:

512 Queries per second avg: 62.923

另外可以添加 -i 5 參數,讓其每五秒自動刷新之。

 代碼如下 復制代碼

mysqladmin -uroot –password=’password’ status -i 5

mysqladmin extended-status

同樣的可以使用mysqladmin -uroot –password=’password’ extended-status來查看更多的MySQL運行信息,這種

方式和第一種查看的信息基本一樣。


分享一些名詞說明

query_cache_limit:超過此大小的查詢將不緩存
query_cache_min_res_unit:緩存塊的最小大小
query_cache_size:查詢緩存大小
query_cache_type:緩存類型,決定緩存什麼樣的查詢,示例中表示不緩存 select sql_no_cache 查詢
query_cache_wlock_invalidate:當有其他客戶端正在對MyISAM表進行寫操作時,如果查詢在query cache中,是否返

回cache結果還是等寫操作完成再讀表獲取結果。

query_cache_min_res_unit的配置是一柄”雙刃劍”,默認是4KB,設置值大對大數據查詢有好處,但如果你的查詢都

是小數據查詢,就容易造成內存碎片和浪費。

查詢緩存碎片率 = Qcache_free_blocks / Qcache_total_blocks * 100%

如果查詢緩存碎片率超過20%,可以用FLUSH QUERY CACHE整理緩存碎片,或者試試減小query_cache_min_res_unit,

如果你的查詢都是小數據量的話。

查詢緩存利用率 = (query_cache_size – Qcache_free_memory) / query_cache_size * 100%

查詢緩存利用率在25%以下的話說明query_cache_size設置的過大,可適當減小;查詢緩存利用率在80%以上而且

Qcache_lowmem_prunes > 50的話說明query_cache_size可能有點小,要不就是碎片太多。

查詢緩存命中率 = (Qcache_hits – Qcache_inserts) / Qcache_hits * 100%

示例服務器 查詢緩存碎片率 = 20.46%,查詢緩存利用率 = 62.26%,查詢緩存命中率 = 1.94%,命中率很差,

可能寫操作比較頻繁吧,而且可能有些碎片。

一些解釋

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  伺服器工作了多少秒

copyright © 萬盛學電腦網 all rights reserved