Documentation Home

13.7.7.15 显示引擎语句

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处理信息的标准监视器和其他监视器的信息,请参阅 第 15.17 节,“InnoDB 监视器”

SHOW ENGINE INNODB MUTEX显示InnoDB mutexrw-lock统计信息。

笔记

InnoDB互斥锁和 rwlocks 也可以使用Performance Schema表进行监控。请参阅 第 15.16.2 节,“使用性能模式监视 InnoDB 互斥等待”

使用以下选项动态配置互斥锁统计信息收集:

  • 要启用互斥锁统计信息的收集,请运行:

    SET GLOBAL innodb_monitor_enable='latch';
  • 要重置互斥量统计信息,请运行:

    SET GLOBAL innodb_monitor_reset='latch';
  • 要禁用互斥锁统计信息的收集,请运行:

    SET GLOBAL innodb_monitor_disable='latch';

SHOW ENGINE INNODB MUTEX也可以通过设置启用 innodb_monitor_enable='all'或禁用 互斥统计信息的收集 innodb_monitor_disable='all'

SHOW ENGINE INNODB MUTEX输出有以下列:

  • Type

    总是InnoDB

  • Name

    对于互斥量,该Name字段仅报告互斥量名称。对于 rwlock,该Name 字段报告实现 rwlock 的源文件,以及创建 rwlock 的文件中的行号。行号特定于您的 MySQL 版本。

  • Status

    互斥状态。该字段报告旋转、等待和调用的次数。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仅显示有关已导致至少一个 OS-level wait的缓冲池之外的互斥锁和读写锁的信息。

用于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 了解不同的性能模式选项对内存需求的影响。

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

  • 未作为表公开的内部缓冲区在括号内命名。例子: (pfs_cond_class).size, (pfs_mutex_class).memory

  • 在数据库中作为表公开的内部缓冲区以表 performance_schema命名,不带括号。例子: events_waits_history.size, mutex_instances.count

  • 适用于整个性能模式的值以performance_schema. 例子: performance_schema.memory

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

  • size是实现使用的内部记录的大小,例如表中一行的大小。size值无法更改。

  • count是内部记录的数量,例如表中的行数。 count可以使用 Performance Schema 配置选项更改值。

  • 对于表格, tbl_name.memory 是 和 的size乘积 count。对于整个 Performance Schema,performance_schema.memory是所有已用内存的总和(所有其他 memory值的总和)。

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 (线程数)。

显示引擎 NDB 状态。  如果服务器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 为集群配置的数据节点数(即[ndbd]集群 config.ini文件中的section数)
number_of_ready_data_nodes 集群中实际运行的数据节点数
connect_count mysqld已连接或重新连接到集群数据节点的次数

binlog行的 Status列包含与 NDB Cluster Replication 相关的信息。它包含的名称/值对如下表所述。

姓名 价值
latest_epoch most recent epoch most recently run on this MySQL server(即最近在服务器上运行的事务的序号)
latest_trans_epoch 集群数据节点处理的最近时期
latest_received_binlog_epoch 二进制日志线程收到的最新纪元
latest_handled_binlog_epoch 二进制日志线程处理的最近纪元(用于写入二进制日志)
latest_applied_binlog_epoch 实际写入二进制日志的最近纪元

有关更多信息,请参阅第 23.7 节,“NDB Cluster 复制”

输出中的其余行SHOW ENGINE NDB STATUS最有可能被证明对监视集群有用,如下所示 Name

  • NdbTransactionNdbTransaction:已创建对象的数量和大小 。NdbTransaction每次对表执行表架构操作(例如 CREATE TABLEALTER TABLE)时都会创建一个NDB

  • NdbOperationNdbOperation:已创建对象 的数量和大小 。

  • NdbIndexScanOperationNdbIndexScanOperation:已创建对象 的数量和大小。

  • NdbIndexOperationNdbIndexOperation:已创建对象 的数量和大小 。

  • NdbRecAttr: The number and size of NdbRecAttr objects that have been created. In general, one of these is created each time a data manipulation statement is performed by an SQL node.

  • NdbBlob: The number and size of NdbBlob objects that have been created. An NdbBlob is created for each new operation involving a BLOB column in an NDB table.

  • NdbReceiver: The number and size of any NdbReceiver object that have been created. The number in the created column is the same as the number of data nodes in the cluster to which the MySQL server has connected.

Note

SHOW ENGINE NDB STATUSNDB如果MySQL 客户端访问运行此语句的 SQL 节点,在当前会话期间未执行 任何涉及表的操​​作,则返回空结果 。