SHOW ENGINE engine_name {STATUS | MUTEX}
SHOW ENGINE 會顯示儲存引擎的運作資訊。 它需要 PROCESS 權限。 此陳述式有以下變體:
SHOW ENGINE INNODB STATUS
SHOW ENGINE INNODB MUTEX
SHOW ENGINE PERFORMANCE_SCHEMA STATUS
SHOW ENGINE INNODB STATUS 會顯示來自標準 InnoDB 監視器的詳細資訊,關於 InnoDB 儲存引擎的狀態。關於標準監視器和其他提供 InnoDB 處理資訊的 InnoDB 監視器,請參閱 第 17.17 節,「InnoDB 監視器」。
SHOW ENGINE INNODB MUTEX 會顯示 InnoDB 的 互斥鎖 和 讀寫鎖 統計資訊。
InnoDB 的互斥鎖和讀寫鎖也可以使用 Performance Schema 表格來監控。請參閱 第 17.16.2 節,「使用 Performance Schema 監控 InnoDB 互斥鎖等待」。
互斥鎖統計資訊收集可使用下列選項動態設定:
若要啟用互斥鎖統計資訊收集,請執行:
SET GLOBAL innodb_monitor_enable='latch';若要重設互斥鎖統計資訊,請執行:
SET GLOBAL innodb_monitor_reset='latch';若要停用互斥鎖統計資訊收集,請執行:
SET GLOBAL innodb_monitor_disable='latch';
也可以透過設定 innodb_monitor_enable='all' 來啟用 SHOW ENGINE INNODB MUTEX 的互斥鎖統計資訊收集,或是透過設定 innodb_monitor_disable='all' 來停用。
SHOW ENGINE INNODB MUTEX 輸出有下列欄位:
類型永遠為
InnoDB。名稱對於互斥鎖,「
Name」欄位僅報告互斥鎖名稱。對於讀寫鎖,「Name」欄位會報告實作讀寫鎖的原始程式碼檔案,以及建立讀寫鎖的檔案行號。行號會因您的 MySQL 版本而異。狀態互斥鎖狀態。此欄位會報告旋轉、等待和呼叫的次數。不會報告在
InnoDB之外實作的底層作業系統互斥鎖的統計資訊。spins表示旋轉的次數。waits表示互斥鎖等待的次數。calls表示互斥鎖被請求的次數。
SHOW ENGINE INNODB MUTEX 不會列出每個緩衝池區塊的互斥鎖和讀寫鎖,因為在具有大型緩衝池的系統上,輸出量會非常龐大。SHOW ENGINE INNODB MUTEX 確實會針對緩衝池區塊互斥鎖和讀寫鎖列印彙總的 BUF_BLOCK_MUTEX 旋轉、等待和呼叫值。SHOW ENGINE INNODB MUTEX 也不會列出任何從未被等待的互斥鎖或讀寫鎖 (os_waits=0)。因此,SHOW ENGINE INNODB MUTEX 只會顯示緩衝池之外,且造成至少一次作業系統層級等待的互斥鎖和讀寫鎖的資訊。
使用 SHOW ENGINE PERFORMANCE_SCHEMA STATUS 來檢查 Performance Schema 程式碼的內部運作
mysql> SHOW ENGINE PERFORMANCE_SCHEMA STATUS\G
...
*************************** 3. row ***************************
Type: performance_schema
Name: events_waits_history.size
Status: 76
*************************** 4. row ***************************
Type: performance_schema
Name: events_waits_history.count
Status: 10000
*************************** 5. row ***************************
Type: performance_schema
Name: events_waits_history.memory
Status: 760000
...
*************************** 57. row ***************************
Type: performance_schema
Name: performance_schema.memory
Status: 26459600
...此陳述式旨在協助 DBA 了解不同的 Performance Schema 選項對記憶體需求造成的影響。
Name 值由兩個部分組成,分別命名內部緩衝區和緩衝區屬性。將緩衝區名稱解譯如下:
未以表格形式公開的內部緩衝區會在括號內命名。範例:
(pfs_cond_class).size、(pfs_mutex_class).memory。以
performance_schema資料庫中的表格形式公開的內部緩衝區,會以表格名稱命名,不使用括號。範例:events_waits_history.size、mutex_instances.count。適用於整個 Performance Schema 的值,會以
performance_schema開頭。範例:performance_schema.memory。
緩衝區屬性具有下列含義:
size是實作所使用的內部記錄大小,例如表格中一列的大小。size值無法變更。count是內部記錄的數量,例如表格中的列數。count值可以使用 Performance Schema 設定選項來變更。對於表格,
是tbl_name.memorysize和count的乘積。對於整個 Performance Schema,performance_schema.memory是所使用的所有記憶體總和(所有其他memory值的總和)。
在某些情況下,Performance Schema 設定參數與 SHOW ENGINE 值之間存在直接關係。例如,events_waits_history_long.count 對應於 performance_schema_events_waits_history_long_size。在其他情況下,關係更為複雜。例如,events_waits_history.count 對應於 performance_schema_events_waits_history_size(每個執行緒的列數)乘以 performance_schema_max_thread_instances(執行緒數)。
SHOW ENGINE NDB STATUS。 如果伺服器已啟用 NDB 儲存引擎,SHOW ENGINE NDB STATUS 會顯示叢集狀態資訊,例如已連線資料節點數、叢集連線字串和叢集二進位記錄紀元,以及 MySQL 伺服器連線至叢集時建立的各種叢集 API 物件計數。此陳述式的範例輸出如下所示:
mysql> SHOW ENGINE NDB STATUS;
+------------+-----------------------+--------------------------------------------------+
| Type | Name | Status |
+------------+-----------------------+--------------------------------------------------+
| ndbcluster | connection | cluster_node_id=7,
connected_host=198.51.100.103, connected_port=1186, number_of_data_nodes=4,
number_of_ready_data_nodes=3, connect_count=0 |
| ndbcluster | NdbTransaction | created=6, free=0, sizeof=212 |
| ndbcluster | NdbOperation | created=8, free=8, sizeof=660 |
| ndbcluster | NdbIndexScanOperation | created=1, free=1, sizeof=744 |
| ndbcluster | NdbIndexOperation | created=0, free=0, sizeof=664 |
| ndbcluster | NdbRecAttr | created=1285, free=1285, sizeof=60 |
| ndbcluster | NdbApiSignal | created=16, free=16, sizeof=136 |
| ndbcluster | NdbLabel | created=0, free=0, sizeof=196 |
| ndbcluster | NdbBranch | created=0, free=0, sizeof=24 |
| ndbcluster | NdbSubroutine | created=0, free=0, sizeof=68 |
| ndbcluster | NdbCall | created=0, free=0, sizeof=16 |
| ndbcluster | NdbBlob | created=1, free=1, sizeof=264 |
| ndbcluster | NdbReceiver | created=4, free=0, sizeof=68 |
| ndbcluster | binlog | latest_epoch=155467, latest_trans_epoch=148126,
latest_received_binlog_epoch=0, latest_handled_binlog_epoch=0,
latest_applied_binlog_epoch=0 |
+------------+-----------------------+--------------------------------------------------+這些列的 Status 欄位分別提供有關 MySQL 伺服器與叢集連線以及叢集二進位記錄狀態的資訊。Status 資訊採用逗號分隔的名稱值配對形式。
connection 列的 Status 欄包含下表中描述的名稱值配對。
| 名稱 | 值 |
|---|---|
cluster_node_id |
叢集中 MySQL 伺服器的節點 ID |
connected_host |
MySQL 伺服器所連線之叢集管理伺服器的主機名稱或 IP 位址 |
connected_port |
MySQL 伺服器用來連線至管理伺服器的連接埠 (connected_host) |
number_of_data_nodes |
為叢集設定的資料節點數(也就是叢集 config.ini 檔案中 [ndbd] 區段的數量) |
number_of_ready_data_nodes |
叢集中實際執行的資料節點數 |
connect_count |
此 mysqld 連線或重新連線至叢集資料節點的次數 |
binlog 列的 Status 欄包含與 NDB 叢集複寫相關的資訊。它所包含的名稱值配對如下表所述。
| 名稱 | 值 |
|---|---|
latest_epoch |
最近在此 MySQL 伺服器上執行的最新紀元(也就是伺服器上執行的最近交易的序號) |
latest_trans_epoch |
叢集資料節點處理的最新紀元 |
latest_received_binlog_epoch |
二進位記錄執行緒接收的最新紀元 |
latest_handled_binlog_epoch |
二進位記錄執行緒處理的最新紀元(用於寫入二進位記錄) |
latest_applied_binlog_epoch |
實際寫入二進位記錄的最新紀元 |
如需更多資訊,請參閱 第 25.7 節,「NDB 叢集複寫」。
以下列出 SHOW ENGINE NDB STATUS 輸出中其餘的列(這些列最有可能在監視叢集時證明有用),並按 Name 排序:
NdbTransaction:已建立的NdbTransaction物件數量和大小。每次在NDB表格上執行表格結構描述作業時(例如CREATE TABLE或ALTER TABLE),都會建立一個NdbTransaction。NdbOperation:已建立的NdbOperation物件數量和大小。NdbIndexScanOperation:已建立的NdbIndexScanOperation物件數量和大小。NdbIndexOperation:已建立的NdbIndexOperation物件數量和大小。NdbRecAttr:已建立的NdbRecAttr物件數量和大小。一般而言,每次 SQL 節點執行資料操作陳述式時,都會建立其中一個。NdbBlob:已建立的NdbBlob物件數量和大小。對於NDB表格中涉及BLOB欄位的每個新作業,都會建立一個NdbBlob。NdbReceiver:已建立的任何NdbReceiver物件的數量和大小。created欄中的數字與 MySQL 伺服器所連線的叢集中的資料節點數相同。
如果 MySQL 用戶端在存取執行此陳述式的 SQL 節點期間,目前的連線階段沒有執行涉及 NDB 表格的作業,SHOW ENGINE NDB STATUS 會傳回空的結果。