SHOW ENGINE engine_name {STATUS | MUTEX}
显示 ENGINE 显示存储引擎的操作信息。它需要 PROCESS 权限。该语句有以下变体:
SHOW ENGINE INNODB STATUS
SHOW ENGINE INNODB MUTEX
SHOW ENGINE PERFORMANCE_SCHEMA STATUS
显示 ENGINE INNODB STATUS 显示来自标准 InnoDB 监控器的详细信息,关于 InnoDB 存储引擎的状态。有关标准监控器和其他 InnoDB 监控器的信息,请参见 第 17.17 节,“InnoDB 监控器”。
显示 ENGINE INNODB MUTEX 显示 InnoDB 互斥锁 和 读写锁 统计信息。
InnoDB 互斥锁和读写锁也可以使用 性能架构 表监控。请参见 第 17.16.2 节,“使用性能架构监控 InnoDB 互斥锁等待”。
互斥锁统计信息的收集是通过以下选项动态配置的:
-
要启用互斥锁统计信息的收集,请运行:
SET GLOBAL innodb_monitor_enable='latch'; -
要重置互斥锁统计信息,请运行:
SET GLOBAL innodb_monitor_reset='latch'; -
要禁用互斥锁统计信息的收集,请运行:
SET GLOBAL innodb_monitor_disable='latch';
对于 显示 ENGINE INNODB MUTEX,也可以通过设置 innodb_monitor_enable='all' 启用互斥锁统计信息的收集,或者通过设置 innodb_monitor_disable='all' 禁用它。
显示 ENGINE INNODB MUTEX 输出具有以下列:
-
Type总是
InnoDB。 -
Name对于互斥锁,
Name字段仅报告互斥锁名称。对于读写锁,Name字段报告源文件,其中实现了读写锁,并报告文件中的行号,该行号特定于您的 MySQL 版本。 -
Status互斥锁状态。该字段报告自旋次数、等待次数和调用次数。低级操作系统互斥锁的统计信息,不在
InnoDB中实现,不会被报告。-
spins表示自旋次数。 -
waits表示互斥锁等待次数。 -
calls表示互斥锁被请求的次数。
-
显示 ENGINE INNODB MUTEX 不会列出每个缓冲池块的互斥锁和读写锁,因为输出量将在具有大缓冲池的系统上变得过于庞大。显示 ENGINE INNODB MUTEX 但是,会打印聚合 BUF_BLOCK_MUTEX 自旋、等待和调用值,用于缓冲池块互斥锁和读写锁。显示 ENGINE INNODB MUTEX 也不会列出从不等待的互斥锁或读写锁 (os_waits=0)。因此,显示 ENGINE INNODB MUTEX 只显示缓冲池外部的互斥锁和读写锁信息,这些锁至少曾经等待过 OS 级别的等待。
使用 显示 ENGINE PERFORMANCE_SCHEMA STATUS 来检查性能架构代码的内部操作:
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 了解不同性能架构选项对内存要求的影响。
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 将显示集群状态信息,例如连接的数据节点数、集群连接字符串和集群二进制日志纪元,以及集群 API 对象的计数,创建于 MySQL 服务器连接到集群时。以下是该语句的示例输出:
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 服务器连接到集群的信息,以及集群二进制日志的状态信息,分别。状态信息以逗号分隔的名称/值对形式出现。
The connection 行的 Status 列包含以下表中描述的名称/值对。
| Name | Value |
|---|---|
cluster_node_id |
集群中的 MySQL 服务器节点 ID |
connected_host |
MySQL 服务器连接到的集群管理服务器的主机名或 IP 地址 |
connected_port |
MySQL 服务器连接到管理服务器 (connected_host) 的端口 |
number_of_data_nodes |
集群中配置的数据节点数(即 [ndbd] 部分在集群 config.ini 文件中的数量) |
number_of_ready_data_nodes |
集群中实际运行的数据节点数 |
connect_count |
该 mysqld 连接或重新连接到集群数据节点的次数 |
The binlog 行的 Status 列包含 NDB 集群复制信息。它包含的名称/值对在以下表中描述。
| Name | Value |
|---|---|
latest_epoch |
该 MySQL 服务器上最近运行的 epoch(即最近的事务序号) |
latest_trans_epoch |
集群数据节点上最近处理的 epoch |
latest_received_binlog_epoch |
二进制日志线程收到的最新 epoch |
latest_handled_binlog_epoch |
二进制日志线程处理的最新 epoch(用于写入二进制日志) |
latest_applied_binlog_epoch |
实际写入二进制日志的最新 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对象的数量和大小。创建的数量与 MySQL 服务器连接的数据节点数相同。
SHOW ENGINE NDB STATUS 如果在当前会话中没有执行涉及 NDB 表的操作,则返回空结果。