文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  SHOW ENGINE 陳述式

15.7.7.16 SHOW ENGINE 陳述式

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.sizemutex_instances.count

  • 適用於整個 Performance Schema 的值,會以 performance_schema 開頭。範例:performance_schema.memory

緩衝區屬性具有下列含義:

  • size 是實作所使用的內部記錄大小,例如表格中一列的大小。size 值無法變更。

  • count 是內部記錄的數量,例如表格中的列數。count 值可以使用 Performance Schema 設定選項來變更。

  • 對於表格,tbl_name.memorysizecount 的乘積。對於整個 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 TABLEALTER 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 會傳回空的結果。