13.7.5.15 SHOW ENGINE 语句

SHOW ENGINE engine_name {STATUS | MUTEX}

SHOW ENGINE显示有关存储引擎的操作信息。它需要PROCESS特权。该语句具有以下变体:

SHOW ENGINE INNODB STATUS
SHOW ENGINE INNODB MUTEX
SHOW ENGINE PERFORMANCE_SCHEMA STATUS

显示引擎的 INNODB 状态显示来自标准InnoDB监视器的有关InnoDB存储引擎状态的大量信息。有关标准监视器和提供有关InnoDB处理的信息的其他InnoDB监视器的信息,请参见第 14.18 节“ InnoDB 监视器”

显示引擎 INNODB MUTEX显示InnoDB mutexrw-lock统计信息。

Note

InnoDB互斥锁和 rwlock 也可以使用Performance Schematable 进行监视。参见第 14.17.2 节“使用性能模式监视 InnoDB Mutexawait”

显示引擎 INNODB MUTEX输出已在 MySQL 5.7.2 中删除。它在 MySQL 5.7.8 中进行了修订并重新引入。

在 MySQL 5.7.8 中,使用以下选项动态配置互斥量统计信息收集:

SET GLOBAL innodb_monitor_enable='latch';
SET GLOBAL innodb_monitor_reset='latch';
SET GLOBAL innodb_monitor_disable='latch';

显示引擎 INNODB MUTEX的互斥量统计信息收集也可以通过设置innodb_monitor_enable='all'启用,或通过设置innodb_monitor_disable='all'禁用。

显示引擎 INNODB MUTEX输出包含以下列:

一律InnoDB

在 MySQL 5.7.8 之前,Name字段报告实现互斥锁的源文件,以及创建互斥锁的文件中的行号。行号特定于您的 MySQL 版本。从 MySQL 5.7.8 开始,仅报告 Mutex 名称。仍然报告 rwlocks 的文件名和行号。

互斥状态。

在 MySQL 5.7.8 之前,如果WITH_DEBUG是在 MySQL 编译时定义的,则Status字段显示多个值。如果未定义WITH_DEBUG,则该语句仅显示os_waits值。在后一种情况下(没有WITH_DEBUG),输出所基于的信息不足以区分常规互斥锁和保护 rwlock 的互斥锁(允许多个读取器或单个写入器)。因此,输出似乎包含同一互斥锁的多个行。 MySQL 5.7.8 之前的Status字段值包括:

从 MySQL 5.7.8 开始,Status字段报告旋转,await 和调用的次数。不报告在InnoDB之外实现的低级 os 互斥量的统计信息。

SHOW ENGINE INNODB MUTEX并未列出每个缓冲池块的互斥锁和 rw 锁,因为在具有较大缓冲池的系统上,输出量将不堪重负。 SHOW ENGINE INNODB MUTEX确实会为缓冲池块互斥锁和 rw 锁打印聚合BUF_BLOCK_MUTEX旋转,await 和调用值。 SHOW ENGINE INNODB MUTEX也不会列出从未 await 过的任何互斥或 rw 锁(os_waits=0)。因此,SHOW ENGINE INNODB MUTEX仅显示有关导致至少一个 OS 级wait的缓冲池之外的互斥锁和 rw 锁的信息。

使用显示引擎 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 了解不同的“性能模式”选项对内存要求的影响。

Name值由两部分组成,分别命名为内部缓冲区和缓冲区属性。解释缓冲区名称,如下所示:

缓冲区属性具有以下含义:

在某些情况下,性能模式配置参数和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列包含下 table 中描述的名称/值对。

Name Value
cluster_node_id 集群中 MySQL 服务器的节点 ID
connected_host 与 MySQL 服务器连接的集群 Management 服务器的主机名或 IP 地址
connected_port MySQL 服务器用来连接 Management 服务器的端口(connected_host)
number_of_data_nodes 为集群配置的数据节点数(即,集群config.ini文件中的[ndbd]个部分的数量)
number_of_ready_data_nodes 集群中实际运行的数据节点数
connect_count mysqld已连接或重新连接到集群数据节点的次数

binlog行的Status列包含与 NDB 群集复制有关的信息。下 table 描述了它包含的名称/值对。

Name Value
latest_epoch 此 MySQL 服务器上最近运行的最新纪元(即服务器上运行的最新事务的序列号)
latest_trans_epoch 集群的数据节点处理的最新纪元
latest_received_binlog_epoch 二进制日志线程接收到的最新纪元
latest_handled_binlog_epoch 二进制日志线程处理的最新纪元(用于写入二进制日志)
latest_applied_binlog_epoch 实际写入二进制日志的最新纪元

有关更多信息,请参见第 21.6 节“ NDB 群集复制”

SHOW ENGINE NDB STATUS的输出中剩余的行最有可能被证明对监视集群有用,在这里由Name列出:

Note

如果在当前会话期间,MySQLClient 端访问运行此语句的 SQL 节点没有执行涉及NDBtable 的操作,则SHOW ENGINE NDB STATUS返回空结果。

首页