首頁 > 軟體

MySQL檢視資料庫狀態命令詳細講解

2023-03-05 14:00:33

前言

資料查詢語言(DQL: Data Query Language):其語句,也稱為“資料檢索語句”,用以從表中獲得資料,確定資料怎樣在應用程式給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其它型別的SQL語句一起使用。

show status

使用SHOW STATUS語句能夠獲取MySQL伺服器的一些狀態資訊,這些狀態資訊主要是MySQL資料庫的效能引數。SHOW STATUS語句的語法格式如下:

SHOW [SESSION | GLOBAL] STATUS LIKE 'status_name';

其中,SESSION表示獲取當前對談級別的效能引數,GLOBAL表示獲取全域性級別的效能引數,並且SESSION和GLOBAL可以省略,如果省略不寫,預設為SESSION。status_name表示查詢的引數值。熟練掌握這些引數的使用,能夠更好地瞭解SQL語句的執行頻率。SHOW STATUS語句支援的引數值

Not_flushed_key_blocks   在鍵快取中已經改變但是還沒被清空到磁碟上的鍵塊。
Not_flushed_delayed_rows

mysql> show status;
+-----------------------------------------------+--------------------------------------------------+
| Variable_name                                 | Value                                            |
+-----------------------------------------------+--------------------------------------------------+
| Aborted_clients                               | 1  由於客戶沒有正確關閉連線已經死掉,已經放棄的連線數量|
| Aborted_connects                              | 0  嘗試已經失敗的MySQL伺服器的連線的次數			   |
| Binlog_cache_disk_use                         | 0  該狀態表示有多少個事務使用了臨時檔案       		 |
| Binlog_cache_use                              | 1  有多少個事物使用了ache_size來快取未提交的事物紀錄檔 |
| Binlog_stmt_cache_disk_use                    | 0                                                |
| Binlog_stmt_cache_use                         | 0                                                |
| Bytes_received                                | 248 從客戶處已經接收到的位元組數                      |
| Bytes_sent                                    | 185 已經傳送給所有客戶的位元組數                      |
| Com_statement                                 | 0   每一個變數語句對應的次數                        |
| Connections                                   | 41472     	試圖連線MySQL伺服器的次數 		   |
| Created_tmp_disk_tables                       | 0   伺服器執行語句時在硬碟上自動建立的臨時表的數量    |
| Created_tmp_files                             | 5   mysqld建立的臨時檔案個數                       |
| Created_tmp_tables                            | 0      當執行語句時,已經被創造了的隱含臨時表的數量	  |
| Delayed_errors                                | 0 用INSERT DELAYED寫入的發生某些錯誤(可能重複鍵值)的行數 |
| Delayed_insert_threads                        | 0      正在使用的延遲插入處理器執行緒的數量			  |
| Delayed_writes                                | 0          用INSERT DELAYED寫入的行數     		  |
| Flush_commands                                | 17        	執行FLUSH命令的次數     			  |
| Handler_commit                                | 0      內部COMMIT命令的個數                        |
| Handler_delete                                | 0      請求從一張表中刪除行的次數       			 |
| Handler_discover                              | 0 MySQL伺服器可以問NDB CLUSTER儲存引擎是否知道某一名字的表 |
| Handler_external_lock                         | 0                                                |
| Handler_mrr_init                              | 0                                                |
| Handler_prepare                               | 0      兩階段提交操作準備階段的計數器               |
| Handler_read_first                            | 0      請求讀入表中第一行的次數                     |
| Handler_read_key                              | 0      請求數位基於鍵讀行                          |
| Handler_read_last                             | 0                                                |
| Handler_read_next                             | 0      請求讀入基於一個鍵的一行的次數               |
| Handler_read_prev                             | 0      按照索引的順序讀取前面一行資料的請求的個數     |
| Handler_read_rnd                              | 0      請求讀入基於一個固定位置的一行的次數          |
| Handler_read_rnd_next                         | 0      讀取資料檔案中下一行資料的請求的個數          |
| Handler_rollback                              | 0      內部ROLLBACK命令的數量                     |
| Handler_savepoint                             | 0      在一個儲存引擎放置一個儲存點的請求數量        |
| Handler_savepoint_rollback                    | 0      在一個儲存引擎的要求回滾到一個儲存點數目       |
| Handler_update                                | 0      請求更新表中一行的次數             		  |
| Handler_write                                 | 0      請求向表中插入一行的次數                    |
| Innodb_buffer_pool_dump_status                | Dumping of buffer pool not started               |
| Innodb_buffer_pool_load_status                | Buffer pool(s) load completed at 220224 21:04:35 |
| Innodb_buffer_pool_resize_status              |                                                  |
| Innodb_buffer_pool_pages_data                 | 32422                                            |
| Innodb_buffer_pool_bytes_data                 | 531202048                                        |
| Innodb_buffer_pool_pages_dirty                | 0                                                |
| Innodb_buffer_pool_bytes_dirty                | 0                                                |
| Innodb_buffer_pool_pages_flushed              | 235                                              |
| Innodb_buffer_pool_pages_free                 | 97929                                            |
| Innodb_buffer_pool_pages_misc                 | 705                                              |
| Innodb_buffer_pool_pages_total                | 131056                                           |
| Innodb_buffer_pool_read_ahead_rnd             | 0                                                |
| Innodb_buffer_pool_read_ahead                 | 23377                                            |
| Innodb_buffer_pool_read_ahead_evicted         | 0                                                |
| Innodb_buffer_pool_read_requests              | 330362716      InnoDB已經完成的邏輯讀請求數        |
| Innodb_buffer_pool_reads                      | 9004                                             |
| Innodb_buffer_pool_wait_free                  | 0                                                |
| Innodb_buffer_pool_write_requests             | 3783                                             |
| Innodb_data_fsyncs                            | 47                                               |
| Innodb_data_pending_fsyncs                    | 0                                                |
| Innodb_data_pending_reads                     | 0                                                |
| Innodb_data_pending_writes                    | 0                                                |
| Innodb_data_read                              | 530813440                                        |
| Innodb_data_reads                             | 33379                                            |
| Innodb_data_writes                            | 279                                              |
| Innodb_data_written                           | 4193792      至此已經寫入的資料量(位元組)           |
| Innodb_dblwr_pages_written                    | 20                                               |
| Innodb_dblwr_writes                           | 10                                               |
| Innodb_log_waits                              | 0            我們必須等待的時間                    |
| Innodb_log_write_requests                     | 9              紀錄檔寫請求數                       |
| Innodb_log_writes                             | 15            向紀錄檔檔案的物理寫數量               |
| Innodb_os_log_fsyncs                          | 22           向紀錄檔檔案完成的fsync()寫數量         |
| Innodb_os_log_pending_fsyncs                  | 0            掛起的紀錄檔檔案fsync()運算元量         |
| Innodb_os_log_pending_writes                  | 0            掛起的紀錄檔檔案寫操作                  |
| Innodb_os_log_written                         | 12288          寫入紀錄檔檔案的位元組數                |
| Innodb_page_size                              | 16384          編譯的InnoDB頁大小(預設16KB)        |
| Innodb_pages_created                          | 42                    建立的頁數                  |
| Innodb_pages_read                             | 32380                 讀取的頁數                  |
| Innodb_pages_written                          | 235                   寫入的頁數                  |
| 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                           | 6              從InnoDB表刪除的行數                |
| Innodb_rows_inserted                          | 2193           插入到InnoDB表的行數                |
| Innodb_rows_read                              | 351814064      從InnoDB表讀取的行數                |
| Innodb_rows_updated                           | 0              InnoDB表內更新的行數                |
| Innodb_num_open_files                         | 136                                              |
| Innodb_truncated_status_writes                | 0                                                |
| Innodb_available_undo_logs                    | 128                                              |
| Key_blocks_not_flushed                        | 0  鍵快取內已經更改但還沒有清空到硬碟上的鍵的資料塊數量|
| Key_blocks_unused                             | 53585       鍵快取內未使用的塊數量  			      |
| Key_blocks_used                               | 3           用於關鍵字快取的塊的數量                |
| Key_read_requests                             | 6           請求從快取讀入一個鍵值的次數            |
| Key_reads                                     | 3           從磁碟物理讀入一個鍵值的次數            |
| Key_write_requests                            | 0           請求將一個關鍵字塊寫入快取次數          |
| Key_writes                                    | 0           將一個鍵值塊物理寫入磁碟的次數          |
| Last_query_cost                               | 0.000000                                         |
| Last_query_partial_plans                      | 0                                                |
| Locked_connects                               | 0                                                |
| Max_execution_time_exceeded                   | 0                                                |
| Max_execution_time_set                        | 0                                                |
| Max_execution_time_set_failed                 | 0                                                |
| Max_used_connections                          | 330     			同時使用的連線的最大數目          |
| Max_used_connections_time                     | 2022-02-24 22:07:44                              |
| Not_flushed_delayed_rows                      | 0           在INSERT DELAY佇列中等待寫入的行的數量  |
| Ongoing_anonymous_transaction_count           | 0                                                |
| Open_files                                    | 5          		開啟檔案的數量					  |
| Open_streams                                  | 0                 開啟流的數量(主要用於紀錄檔記載)    |
| Open_table_definitions                        | 11                快取的.frm檔案數                |
| Open_tables                                   | 78   				開啟表的數量                    |
| Opened_files                                  | 7925              系統開啟過的檔案總數             |
| Opened_table_definitions                      | 0                 已快取的.frm檔案數              |
| Opened_tables                                 | 0            		已經開啟的表的數量      		    |             
| Qcache_free_blocks                            | 1           查詢快取內自由記憶體塊的數量              |
| Qcache_free_memory                            | 1031832     用於查詢快取的自由記憶體的數量            |
| Qcache_hits                                   | 0           查詢快取被存取的次數                   |
| Qcache_inserts                                | 0           加入到快取的查詢數量                   |
| Qcache_lowmem_prunes                          | 0           由於記憶體較少從快取刪除的查詢數量         |
| Qcache_not_cached                             | 236889      非快取查詢數						   |
| Qcache_queries_in_cache                       | 0           登記到快取內的查詢的數量                |
| Qcache_total_blocks                           | 1           查詢快取內的總塊數                     |
| Queries                                       | 561204      被伺服器執行的語句個數                 |
| Questions                                     | 2           發往伺服器的查詢的數量				  |
| Select_full_join                              | 0                                                |
| Select_full_range_join                        | 0                                                |
| Select_range                                  | 0                                                |
| Select_range_check                            | 0                                                |
| Select_scan                                   | 0                                                |
| Slave_open_temp_tables                        | 0                                                |
| Slow_launch_threads                           | 0                                                |
| Slow_queries                                  | 0         要花超過long_query_time時間的查詢數量    |
| Sort_merge_passes                             | 0                                                |
| Sort_range                                    | 0                                                |
| Sort_rows                                     | 0                                                |
| Sort_scan                                     | 0                                                |
| Ssl_***                   					| 0             用於SSL連線的變數                   |    
| Table_locks_immediate                         | 123           立即獲得的表的鎖的次數               |
| Table_locks_waited                            | 0            不能立即獲得的表的鎖的次數             |
| Tc_log_max_pages_used                         | 0             紀錄檔使用的最大頁數                   |
| Tc_log_page_size                              | 0          用於XA恢復紀錄檔的記憶體對映實現的頁面大小    |
| Tc_log_page_waits                             | 0          對於恢復紀錄檔的記憶體對映實現               |
| Threads_cached                                | 2                   執行緒的快取值                  |
| Threads_connected                             | 328                當前開啟的連線的數量    		   |
| Threads_created                               | 330               建立用來處理連線的執行緒數          |
| Threads_running                               | 2                  不在睡眠的執行緒數量   		    |
| Uptime                                        | 42686              伺服器工作了多少秒				|
| Uptime_since_flush_status                     | 42686   最近一次使用FLUSH STATUS 的時間(以秒為單位)|

# 狀態資訊查詢語句
--檢視試圖連線到MySQL(不管是否連線成功)的連線數
show status like 'connections';
--檢視執行緒快取內的執行緒的數量。
show status like 'threads_cached';
--檢視當前開啟的連線的數量。
show status like 'threads_connected';
--檢視查詢時間超過long_query_time秒的查詢的個數。
show status like 'slow_queries';
--檢視執行緒數
show status like  'Threads%';
Threads_connected : 這個數值指的是開啟的連線數.
Threads_running :	這個數值指的是啟用的連線數,這個數值一般遠低於connected數值.
Threads_connected 	 跟show processlist結果相同,表示當前連線數。準確的來說,Threads_running是代表當前並行數
Threads_created		 表示建立過的執行緒數,通過檢視Threads_created就可以檢視MySQL伺服器的程序狀態。(MySQL伺服器的執行緒數需要在一個合理的範圍之內,這樣才能保證MySQL伺服器健康平穩地執行)
如果我們在MySQL伺服器組態檔中設定了thread_cache_size,當用戶端斷開之後,伺服器處理此客戶的執行緒將會快取起來以響應下一個客戶而不是銷燬(前提是快取數未達上限)。Threads_created表示建立過的執行緒數,如果發現Threads_created值過大的話,表明MySQL伺服器一直在建立執行緒,這也是比較耗資源,可以適當增加組態檔中thread_cache_size值,查詢伺服器thread_cache_size的值:      show variables like 'thread_cache_size';

# 通常mysql的最大連線數預設是100, 最大可以達到16384。
show variables like '%max_connection%'; 檢視最大連線數
set global max_connections=200
SET GLOBAL innodb_lru_scan_depth=256;
影響對InnoDB緩衝池進行重新整理操作的演演算法和啟發式的引數。效能專家對調優I/ o密集型工作負載感興趣。它指定了每個緩衝池範例,在緩衝池LRU頁面下列出頁面清潔執行緒掃描以查詢要重新整理的髒頁的距離。這是每秒執行一次的後臺操作。`小於預設值的設定通常適用於大多數工作負載`。如果值遠高於必要值,可能會影響效能。只有在典型工作負載下有空閒I/O容量時,才考慮增加該值。相反,如果寫密集的工作負載使I/O容量飽和,則減少該值,特別是在使用大型緩衝池的情況下。調優innodb_lru_scan_depth時,從一個較低的值開始,向上設定,目標是很少看到零空閒頁面。另外,當改變緩衝池範例數時,可以考慮調整innodb_lru_scan_depth,因為innodb_lru_scan_depth * innodb_buffer_pool_instances定義了頁面清理執行緒每秒執行的工作量。

show processlist;

show full processlist; 或 show processlist(預設只列出前100); //顯示哪些執行緒正在執行

id       #ID標識,要kill一個語句的時候很有用
user     #當前連線使用者
host     #顯示這個連線從哪個ip的哪個埠上發出
db       #資料庫名
command  #連線狀態,一般是休眠(sleep),查詢(query),連線(connect)
time     #連線持續時間,單位是秒
state    #顯示當前sql語句的狀態
info     #顯示這個sql語句

show slave status G;

MySQL同步功能由3個執行緒(master上1個,slave上2個)來實現。執行 DE>START SLAVEDE> 語句後,slave就建立一個I/O執行緒。I/O執行緒連線到master上,並請求master傳送二進位制紀錄檔中的語句。master建立一個執行緒來把紀錄檔的內容傳送到slave上。這個執行緒在master上執行 DE>SHOW PROCESSLISTDE> 語句後的結果中的 DE>Binlog DumpDE> 執行緒便是。slave上的I/O執行緒讀取master的 DE>Binlog DumpDE> 執行緒傳送的語句,並且把它們拷貝到其資料目錄下的中繼紀錄檔(relay logs)中。第三個是SQL執行緒,slave用它來讀取中繼紀錄檔,然後執行它們來更新資料。

用於提供有關從屬伺服器執行緒的關鍵引數的資訊

Slave_IO_State:		ID執行緒的狀態,如果master 的所有變更都已經收到這個狀態會顯示為 Waiting for master to send event
Master_Log_File:		IO執行緒正在讀取的master binlog 檔名
Read_Master_Log_Pos:	IO執行緒已經讀完的位置
Relay_Master_Log_File:	SQL執行緒正在讀取的master binlog 檔名
Exec_Master_Log_Pos:	SQL執行緒已經讀取完的位置
Slave_IO_State:
SHOW PROCESSLIST輸出的State欄位的拷貝。
SHOW PROCESSLIST用於從屬I/O執行緒。如果執行緒正在試圖連線到主伺服器,正在等待來自主伺服器的時間或正在連線到主伺服器等,本語句會通知您

紀錄檔

紀錄檔型別寫入紀錄檔的資訊
錯誤紀錄檔記錄在啟動,執行或停止mysqld時遇到的問題
通用查詢紀錄檔記錄建立的使用者端連線和執行的語句
二進位制紀錄檔記錄更改資料的語句
中繼紀錄檔從複製主伺服器接收的資料更改
慢查詢紀錄檔記錄所有執行時間超過 long_query_time 秒的所有查詢或不使用索引的查詢
DDL紀錄檔(後設資料紀錄檔)後設資料操作由DDL語句執行
# mysqlbinlog [options] logfile1 logfile2 ...
mysqlbinlog的選項
-d, --database=name      僅顯示指定資料庫的轉儲內容。
-o, --offset=#           跳過前N行的紀錄檔條目。
-r, --result-file=name   將輸入的文字格式的檔案轉儲到指定的檔案。
-R, --read-from-remote-server	指示mysqlbinlog命令從遠端伺服器讀取紀錄檔檔案
-s, --short-form         使用簡單格式(只顯示SQL語句)。
--server-id 			 指定mysql伺服器,確保是由給定伺服器id的mysql伺服器所生成的紀錄檔。
--set-charset=name       在轉儲檔案的開頭增加'SET NAMES character_set'語句。
--start-datetime=name    轉儲紀錄檔的起始時間。
--stop-datetime=name     轉儲紀錄檔的截止時間。
-j, --start-position=#   轉儲紀錄檔的起始位置。
--stop-position=#        轉儲紀錄檔的截止位置。
-v, --verbose       	 用行事件重構偽sql語句。   
-vv  					 顯示sql語句加欄位型別。

檢視紀錄檔

mysqlbinlog --no-defaults --database=qq --start-datetime='2022-02-11 18:00:00' --stop-datetime='2022-02-11 20:00:00' --base64-output=decode-rows -v mysql-bin.000052 >18-20.log

增加 --base64-output=decode-rows –v 選項解析(目的:變成人類可以讀懂的SQL語句了)
使用base64-output選項,可以控制輸出語句何時是輸出base64編碼的BINLOG語句。以下是base64輸出設定的可能值:

never			//它將在輸出中顯示base64編碼的BINLOG語句
always			//只要有可能,它將只顯示BINLOG項
decode-rows	    //將把基於行的事件解碼成一個SQL語句
auto(預設)	    //僅為某些事件型別列印BINLOG項,例如基於行的事件和格式描述事件

總結

到此這篇關於MySQL檢視資料庫狀態命令的文章就介紹到這了,更多相關MySQL檢視資料庫狀態命令內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com