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
會傳回空的結果。