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


MySQL 9.0 參考手冊  /  ...  /  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 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 TABLEALTER 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 會傳回空的結果。