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 Server 連線至叢集時建立的各種叢集 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 伺服器連線到的叢集中的資料節點數目相同。
如果在此陳述式執行的 SQL 節點上,存取 MySQL 用戶端目前的連線階段期間,未執行任何牽涉到 NDB 資料表的作業,SHOW ENGINE NDB STATUS 會傳回空的結果。