Mysql show global status 各項指標介紹
Aborted_clients
指出由於某種原因客戶程式不能正常關閉連線而導致失敗的連線的數量。如果客戶不在退出之前調整mysql_close()函式,wait_timeout或interactive_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記憶體以下的機器中的值預設時256到512,如果機器有4G記憶體,則預設這個值是2048,但這決意味著機器記憶體越大,這個值應該越大,因為table_cache加大後,使得mysql對SQL響應的速度更快了,不可避免的會產生更多的死鎖(dead lock),這樣反而使得資料庫整個一套操作慢了下來,嚴重影響效能。所以平時維護中還是要根據庫的實際情況去作出判斷,找到最適合你維護的庫的table_cache值。
關於Performance_schema的含義:
MySQL 5.5新增一個儲存引擎:命名PERFORMANCE_SCHEMA ,主要用於收集資料庫伺服器效能引數。MySQL使用者是不能建立儲存引擎為PERFORMANCE_SCHEMA的表
performance_schema提供以下功能:
提供程序等待的詳細資訊,包括鎖、互斥變數、檔案資訊;
儲存歷史的事件彙總資訊,為提供MySQL伺服器效能做出詳細的判斷;
對於新增和刪除監控事件點都非常容易,並可以隨意改變mysql伺服器的監控週期,例如(CYCLE、MICROSECOND)
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_PING
和COM_STATISTICS
兩個命令。這個變數是在
MySQL 5.1.31在版本中被加入的。
Questions
伺服器已經執行的語句的數量。它跟 Queries不一樣。這個變數不統計以下命令:COM_PING
, COM_STATISTICS
, COM_STMT_PREPARE
, COM_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
自從啟動以來,SLAVE的SQL執行緒重試事務的總數。
可能的值為(OFF/ON)。如果該伺服器是連線到MASTER的SLAVE,那麼,就是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%';
+---------------------+-------+