1. 程式人生 > >Mysql show global status 各項指標介紹

Mysql show global status 各項指標介紹


Aborted_clients

指出由於某種原因客戶程式不能正常關閉連線而導致失敗的連線的數量。如果客戶不在退出之前調整mysql_close()函式,wait_timeoutinteractive_timeout的限制已經被超出,或者是客戶端程式在傳輸的過程中被關閉,則這種情況會發生。

Aborted_connects

指出試圖連線到MYSQL的失敗的次數。這種情況在客戶嘗試用錯誤的密碼進行連線時,沒有許可權進行連線時,為獲得連線的資料包所花費的時間超過了connect_timeout限制的秒數,或資料包中沒有包含正確的資訊時,都會發生。

Binlog_cache_disk_use   0

Binlog_cache_use   0

Binlog_stmt_cache_disk_use   0

Binlog_stmt_cache_use   0

Bytes_received

從客戶端處已經接收到的位元組數。

Bytes_sent

已經發送給所有客戶端的位元組數。

Com_[statement]  (以下所有以Com_開始的條目)

用於每一種語句的這些變數中的一種。變數值表示這條語句被執行的次數,如com_select,表示select查詢語句被執行的次數。

可以適當的對一些敏感資料,進行下面某些操作的監控。比如刪除語句(delete /drop)。

Created_tmp_disk_tables

執行語句時,磁碟上生成的隱含臨時表的數量

Created_tmp_files

mysqld生成的臨時檔案的數量

Created_tmp_tables

執行語句時,記憶體中生成的隱含臨時表的數量

Delayed_errors

當發生錯誤時,由INSERT DELAYED語句寫入的記錄的。絕大多數普通的錯誤是複製鍵

Delayed_insert_threads

當前正在使用的延遲插入控制代碼的執行緒數量

Delayed_writes

INSERT DELAYED語句寫入的記錄的個數。

Flush_commands

被執行的FLUSH語句的個數

Handler_commit

內部COMMIT命令的個數

Handler_delete

從一個表中刪除行的次數

Handler_discover   0

Handler_prepare   0

Handler_read_first

一條索引中的第一個條目被讀取的次數,通常是指完全索引掃描(例如,假定indexed_col被索引,語句SELECT indexed_col from tablename導致了一個完全索引掃描)

Handler_read_key

當讀取一行資料時,使用索引的請求的個數。如果查詢時使用了索引,就希望這個值快速增加

Handler_read_last   0

Handler_read_next

按照索引順序讀取下一行資料的請求的個數。如果使用了完全索引進行掃描,或者在一個不變的範圍內查詢一個索引,則這個值就會增加

Handler_read_prev

按照索引的順序讀取前面一行資料的請求的個數。這個變數值由SELECT fieldlist ORDER BY fields DESC型別的語句使用

Handler_read_rnd   0

Handler_read_rnd_next   9892

Handler_rollback   0

Handler_savepoint   0

Handler_savepoint_rollback   0

Handler_update   0

Handler_write   9780

Innodb_buffer_pool_pages_data   149

Innodb_buffer_pool_pages_dirty   0

Innodb_buffer_pool_pages_flushed   0

Innodb_buffer_pool_pages_free   6379

Innodb_buffer_pool_pages_misc   0

Innodb_buffer_pool_pages_total   6528

Innodb_buffer_pool_read_ahead_rnd   0

Innodb_buffer_pool_read_ahead   0

Innodb_buffer_pool_read_ahead_evicted   0

Innodb_buffer_pool_read_requests   482

Innodb_buffer_pool_reads   150

Innodb_buffer_pool_wait_free   0

Innodb_buffer_pool_write_requests   0

Innodb_data_fsyncs   3

Innodb_data_pending_fsyncs   0

Innodb_data_pending_reads   0

Innodb_data_pending_writes   0

Innodb_data_read   4640768

Innodb_data_reads   160

Innodb_data_writes   3

Innodb_data_written   1536

Innodb_dblwr_pages_written   0

Innodb_dblwr_writes   0

Innodb_have_atomic_builtins   ON

Innodb_log_waits   0

Innodb_log_write_requests   0

Innodb_log_writes   1

Innodb_os_log_fsyncs   3

Innodb_os_log_pending_fsyncs   0

Innodb_os_log_pending_writes   0

Innodb_os_log_written   512

Innodb_page_size   16384

Innodb_pages_created   0

Innodb_pages_read   149

Innodb_pages_written   0

Innodb_row_lock_current_waits   0

Innodb_row_lock_time   0

Innodb_row_lock_time_avg   0

Innodb_row_lock_time_max   0

Innodb_row_lock_waits   0

Innodb_rows_deleted   0

Innodb_rows_inserted   0

Innodb_rows_read   0

Innodb_rows_updated   0

Innodb_truncated_status_writes   0

Key_blocks_not_flushed   0

Key_blocks_unused   44216

Key_blocks_used   0

Key_read_requests

讀取索引的請求次數.

Key_reads

從磁碟讀取索引的請求次數。

那麼快取的未命中率為:

    key_cache_miss_rate Key_reads / Key_read_requests * 100% =0.27%

針對命中率比較低的情況,我們可以加大 key_buffer_size,即快取的大小(單位為byte,除以(1024*1024)得到單位M)。

    mysql> show variables like 'key_buffer_size';  

        +-----------------+----------+  

        | Variable_name   | Value    |  

        +-----------------+----------+  

        | key_buffer_size | 67108864 |  

        +-----------------+----------+  

通常人們認為Key_read_requests / Key_reads越大越好,否則就應該增大key_buffer_size的設定,但通過計數器的比例來調優有兩個問題:雖說Key_read_requests大比小好,但是對於系統調優而言,更有意義的應該是單位時間內的Key_reads

        Key_reads / Uptime

Key_write_requests   0

向硬碟寫入鍵的資料塊的物理寫操作的次數。

Last_query_cost

它對應的值是一個浮點數。其預設值為0表示沒有查詢(query)被編譯。它的含義是:查詢優化器計算出來的,最後一個被編譯的查詢的消耗。值越大,消耗越大。這個值對於比較同一個查詢語句在不同的查詢狀況下的消耗很有用。

Max_used_connections

響應了多少次連線。已經建立的連線的總數。當這個連線過多的時候,似乎可以作為一個警告。

查詢max_connections變數可以知道,當前被設定的所允許的最大連線數(允許同時存在多少個連線)。下面是500個。

    mysql> show variables like 'max_connections';

        +-----------------+-------+

        | Variable_name   | Value |

        +-----------------+-------+

        | max_connections | 500   |

        +-----------------+-------+

    max_used_connections / max_connections * 100% = 99.6%(理想值 ≈ 85%

Not_flushed_delayed_rows   0

Open_files   0

Open_streams   0

Open_table_definitions   33

Open_tables

表示當前開啟的表快取數,如果執行flush tables操作,則此係統會關閉一些當前沒有使用的表快取而使得此狀態值減小.

Opened_files   77

Opened_table_definitions   33

Opened_tables 

表示曾經開啟的表快取數,會一直進行累加,如果執行flush tables操作,值不會減小。

mysql預設安裝情況下,table_cache的值在2G記憶體以下的機器中的值預設時256512,如果機器有4G記憶體,則預設這個值是2048,但這決意味著機器記憶體越大,這個值應該越大,因為table_cache加大後,使得mysqlSQL響應的速度更快了,不可避免的會產生更多的死鎖(dead lock),這樣反而使得資料庫整個一套操作慢了下來,嚴重影響效能。所以平時維護中還是要根據庫的實際情況去作出判斷,找到最適合你維護的庫的table_cache值。

關於Performance_schema的含義:

MySQL 5.5新增一個儲存引擎:命名PERFORMANCE_SCHEMA ,主要用於收集資料庫伺服器效能引數。MySQL使用者是不能建立儲存引擎為PERFORMANCE_SCHEMA的表

performance_schema提供以下功能:

提供程序等待的詳細資訊,包括鎖、互斥變數、檔案資訊;

儲存歷史的事件彙總資訊,為提供MySQL伺服器效能做出詳細的判斷;

對於新增和刪除監控事件點都非常容易,並可以隨意改變mysql伺服器的監控週期,例如(CYCLEMICROSECOND

MySql 系統相關的表:

mysql> show tables ;

+----------------------------------------------+

| Tables_in_performance_schema                 |

+----------------------------------------------+

| cond_instances                               |

| events_waits_current                         |

| events_waits_history                         |

| events_waits_history_long                    |

| events_waits_summary_by_instance             |

| events_waits_summary_by_thread_by_event_name |

| events_waits_summary_global_by_event_name    |

| file_instances                               |

| file_summary_by_event_name                   |

| file_summary_by_instance                     |

| mutex_instances                              |

| performance_timers                           |

| rwlock_instances                             |

| setup_consumers                              |

| setup_instruments                            |

| setup_timers                                 |

| threads                                      |

+----------------------------------------------+

17 rows in set (0.00 sec)

Performance的開啟很簡單,在my.cnf[mysqld]加入performanc_schema,檢查效能資料庫是否啟動的命令:

SHOW VARIABLES LIKE ‘performance_schema’;

(類似SHOW STATUS LIKE 'perf%';

若是返回的值為ON,則說明效能資料庫正常開啟狀態。

而如下命令

mysql> SHOW VARIABLES LIKE 'perf%';

查詢結果就是涉及到performance_schema的各個系統引數了。

mysql> SELECT * FROM threads;

threads這個表記錄了系統裡當前存在的各種執行緒。

mysql> SELECT * FROM performance_timers;

performance_timers這個表式只讀表,記錄了事件取樣頻率的設定

Performance_schema_開頭的專案:

Performance_schema_xxx_classes_lost表示多少instruments of type xxx不能被載入。

Performance_schema_xxx_instances_lost表示多少物件例項xxx不能被建立(沒有被成功建立,由於記憶體偏少等條件沒達到)。.

Performance_schema_xxx_handles_lost表示多少物件例項xxx沒有被成功開啟。

Performance_schema_locker_lost表示多少 events 丟失,或者說沒有被記錄到。

Performance_schema_cond_classes_lost 

Performance_schema_cond_instances_lost 

Performance_schema_file_classes_lost

Performance_schema_file_handles_lost 

Performance_schema_file_instances_lost 

Performance_schema_locker_lost 

Performance_schema_mutex_classes_lost 

Performance_schema_mutex_instances_lost 

Performance_schema_rwlock_classes_lost 

Performance_schema_rwlock_instances_lost 

Performance_schema_table_handles_lost 

Performance_schema_table_instances_lost 

Performance_schema_thread_classes_lost 

Prepared_stmt_count

當前的預處理語句的數量。 (最大數為系統變數: max_prepared_stmt_count)

Qcache_free_blocks 

查詢快取(query cache)中可以使用的空閒的記憶體塊

Qcache_free_memory 

查詢快取(query cache)可以使用的空閒的記憶體數。

Qcache_hits 

查詢快取的命中數。

Qcache_inserts 

被新增到查詢快取當中的查詢的總數。

Qcache_lowmem_prunes

由於記憶體太少而從查詢快取裡刪除的查詢的總數。

Qcache_not_cached

沒有快取的查詢數量。包括不可快取的,和由於query_cache_type的設定二不能快取的。

Qcache_queries_in_cache

註冊在查詢快取裡的查詢數量。

Qcache_total_blocks

在查詢快取中塊的總數。

Queries

伺服器執行語句的數量。這個變數包含了執行的語句,包括儲存過程。它不統計COM_PINGCOM_STATISTICS兩個命令。這個變數是在MySQL 5.1.31在版本中被加入的。

Questions

伺服器已經執行的語句的數量。它跟 Queries不一樣。這個變數不統計以下命令:COM_PINGCOM_STATISTICSCOM_STMT_PREPARECOM_STMT_CLOSE,   COM_STMT_RESET

Rpl_status  

可能的值:AUTH_MASTER表示fail-safe複製狀態(尚未實現)。這個變數並不再使用,並且MySQL 5.6 中已經去掉了。

Select_full_join 

沒有使用索引的聯接的數量。如果該值不為0,你應仔細檢查表的索引

Select_full_range_join

在引用的表中使用範圍搜尋的聯接的數量

Select_range

在第一個表中使用範圍的聯接(join)的數量。一般情況不是關鍵問題,即使該值相當大。

Select_range_check

在每一行資料後對鍵值進行檢查的不帶鍵值的聯接(JOIN)的數量。如果不為0,你應仔細檢查表的索引。

Select_scan

對第一個表進行全掃描連線的次數。

Slave_heartbeat_period

Slave的心跳驟起。

Slave_open_temp_tables

Slave SQL縣城當前開啟的臨時表的數量。如果這個值大於0,那麼關掉SLAVE是不安全的。

Slave_received_heartbeats

Slave接受到的心跳數。

Slave_retried_transactions

自從啟動以來,SLAVESQL執行緒重試事務的總數。

可能的值為(OFF/ON)。如果該伺服器是連線到MASTERSLAVE,那麼,就是ON。否則就是OFF

Slow_launch_threads

記錄慢查詢開啟的執行緒數

慢查詢的定義與設定:

如果

    mysql> show variables like '%slow%';  

這條語句查詢出來的 log_slow_queries OFF,那麼慢查詢優化是被關閉的。

開啟這一項方便針對慢查詢的優化。

那麼多久沒斷定為慢查詢呢?這個時間是由slow_launch_time的值來決定的。

下面它的值是2,所以,如果一個查詢耗時2秒還沒有完成,那就算是慢查詢。

        +------------------+-------+  

        | Variable_name    | Value |  

        +------------------+-------+  

        | log_slow_queries | OFF   |  

        | slow_launch_time | 2     |  

        +------------------+-------+  

Slow_queries

 慢查詢的次數。慢查詢字數過多,應該警告。慢查詢即:查詢時間超過long_query_time秒(預設值是10秒)的查詢的個數

Sort_merge_passes

排序演算法已經執行的合併的數量。如果這個變數值較大,應考慮增加sort_buffer_size系統變數的值。

Sort_range

在範圍內執行的排序的數量。

Sort_rows

已經排序的行數。

Sort_scan

通過掃描表完成的排序的數量。

Ssl_accept_renegotiates 

需要建立連線,而進行的協商次數。

Ssl_accepts

已接受的SSL連線的數量。

Ssl_callback_cache_hits

SSL回撥快取命中的次數。

Ssl_cipher  

當前的密碼(對於無SSL的連線是空的)

Ssl_cipher_list

當前可能的SSL密碼列表(其值是字串)。

Ssl_client_connects

SSL嘗試連線到 SSL-enabled主裝置的次數。

Ssl_connect_renegotiates

建立到SSL-enable主裝置的連線的協商次數。

Ssl_ctx_verify_depth

SSL的內容認證深度(在鏈中認證被測試的次數)。

Ssl_ctx_verify_mode

SSL內容認證模式。

Ssl_default_timeout

預設是SSL超時。

Ssl_finished_accepts

成功連線到伺服器的SSL連線次數。

Ssl_finished_connects

SSL成功連線(作為從裝置)到開啟SSL的主裝置。

Ssl_session_cache_hits

SSL會還快取的命中數。

Ssl_session_cache_misses 

SSL快取漏掉的數量(就是快取中沒有命中的次數)。

Ssl_session_cache_mode  

SSL會話的快取模式(一般是NONE)。

Ssl_session_cache_overflows 

SSL會話的快取溢位數量。

Ssl_session_cache_size

SSL會話的快取大小。

Ssl_session_cache_timeouts

SSL會話快取的超時時間。

Ssl_sessions_reused

來自快取被重複使用的SSL連線。

Ssl_used_session_cache_entries 

被用到的SSL session cache entries的數量。

Ssl_verify_depth 

SSL連線的認證深度。

Ssl_verify_mode

迴應SSL連線的認證模式。

Ssl_version

SSL協議的版本號。

Table_locks_immediate   36

Table_locks_waited   0

Tc_log_max_pages_used   0

Tc_log_page_size   0

Tc_log_page_waits   0

Threads_cached

執行緒快取內的執行緒的數量。

連線執行緒是 MySQL為了提高建立連線執行緒的效率,將部分空閒的連線執行緒保持在一個快取區以備新進連線請求的時候使用,這尤其對那些使用短連線的應用程式來說可以極大的提高建立連線的效率。當我們通過 thread_cache_size設定了連線執行緒快取池可以快取的連線執行緒的大小之後,可以通過show status查詢出來的結果計算(Connections – Threads_created) / Connections * 100% 得出連線執行緒快取的命中率。注意,這裡設定的是可以快取的連線執行緒的數目,而不是記憶體空間的大小。

Threads_connected

當前開啟的連線的數量。

Threads_created

建立用來處理連線的執行緒數。如果Threads_created較大,你可能要增加thread_cache_size值。快取訪問率的計算方法Threads_created/Connections

Threads_running 

啟用的(非睡眠狀態)執行緒數(執行緒是MYSQL根據查詢的需要建立的,總數肯定不超過Threads_created的值)。

Uptime 

伺服器已經執行的時間(以秒為單位)。【監控點】

Uptime_since_flush_status

最近一次使用FLUSH STATUS的時間(使用的時候,到現在有多久)(以秒為單位)。

總格310個專案。

================參考資訊==============

1, 檢視MySQL伺服器配置資訊
輸入命令 
mysql> show variables; 

mysql> show variables;
2, 檢視MySQL伺服器執行的各種狀態值
輸入命令 
mysql> show global status; 

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   |  
        +---------------------+-------+ 

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