#### 13.7.7.15 SHOW ENGINE 语句

[](<>)[](<>)

```
SHOW ENGINE engine_name {STATUS | MUTEX}
```

[`显示引擎`](show-engine.html)显示有关存储引擎的操作信息。它需要[`过程`](privileges-provided.html#priv_process)特权。该语句具有以下变体：

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

[`显示引擎 INNODB 状态`](show-engine.html)显示来自标准的大量信息`InnoDB`监控状态`InnoDB`存储引擎。有关标准显示器和其他信息`InnoDB`提供有关信息的监视器`InnoDB`处理，见[第 15.17 节，“InnoDB 监视器”](innodb-monitors.html).

[`显示引擎 INNODB MUTEX`](show-engine.html)显示`InnoDB` [互斥体](glossary.html#glos_mutex)和[rw锁](glossary.html#glos_rw_lock)统计数据。

笔记

`InnoDB`互斥锁和 rwlock 也可以使用[性能模式](performance-schema.html)表。看[第 15.16.2 节，“使用性能模式监控 InnoDB Mutex 等待”](monitor-innodb-mutex-waits-performance-schema.html).

互斥量统计收集使用以下选项动态配置：

-   要启用互斥体统计信息的收集，请运行：

    ```
    SET GLOBAL innodb_monitor_enable='latch';
    ```

-   要重置互斥体统计信息，请运行：

    ```
    SET GLOBAL innodb_monitor_reset='latch';
    ```

-   要禁用互斥体统计信息的收集，请运行：

    ```
    SET GLOBAL innodb_monitor_disable='latch';
    ```

    互斥体统计信息的收集[`显示引擎 INNODB MUTEX`](show-engine.html)也可以通过设置启用[`innodb_monitor_enable='全部'`](innodb-parameters.html#sysvar_innodb_monitor_enable)，或通过设置禁用[`innodb_monitor_disable='全部'`](innodb-parameters.html#sysvar_innodb_monitor_disable).

[`显示引擎 INNODB MUTEX`](show-engine.html)输出有这些列：

-   `类型`

    总是`InnoDB`.

-   `姓名`

    对于互斥体，`姓名`字段仅报告互斥锁名称。对于 rwlocks，`姓名`字段报告实现 rwlock 的源文件，以及创建 rwlock 的文件中的行号。行号特定于您的 MySQL 版本。

-   `状态`

    互斥锁状态。此字段报告旋转次数、等待次数和调用次数。低级操作系统互斥锁的统计信息，在外部实现`InnoDB`, 不报道。

    -   `旋转`表示旋转次数。

    -   `等待`表示互斥体等待的次数。

    -   `来电`指示互斥体被请求的次数。

`显示引擎 INNODB MUTEX`没有列出每个缓冲池块的互斥锁和 rw 锁，因为在具有大缓冲池的系统上输出量将是压倒性的。`显示引擎 INNODB MUTEX`但是，确实打印聚合`BUF_BLOCK_MUTEX`缓冲池块互斥锁和读写锁的自旋、等待和调用值。`显示引擎 INNODB MUTEX`也没有列出任何从未等待过的互斥锁或读写锁（`os_waits=0`）。因此，`显示引擎 INNODB MUTEX`仅显示有关缓冲池之外的互斥锁和读写锁的信息，这些信息至少导致了一个 OS 级别[等待](glossary.html#glos_wait).

采用[`显示引擎性能_架构状态`](show-engine.html)检查 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 了解不同性能模式选项对内存要求的影响。

`姓名`values 由两部分组成，分别命名为内部缓冲区和缓冲区属性。解释缓冲区名称如下：

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

-   一个内部缓冲区，在`性能模式`数据库以表命名，不带括号。例子：`events_waits_history.size`,`mutex_instances.count`.

-   适用于整个性能模式的值以`性能模式`.例子：`performance_schema.memory`.

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

-   `尺寸`是实现使用的内部记录的大小，例如表中行的大小。`尺寸`值不能更改。

-   `数数`是内部记录的数量，例如表中的行数。`数数`可以使用性能模式配置选项更改值。

-   对于一张桌子，`*`tbl_name`*。记忆`是的产品`尺寸`和`数数`.对于整个性能模式，`performance_schema.memory`是使用的所有内存的总和（所有其他内存的总和）`记忆`值）。

    在某些情况下，Performance Schema 配置参数和`显示引擎`价值。例如，`events_waits_history_long.count`对应于[`performance_schema_events_waits_history_long_size`](performance-schema-system-variables.html#sysvar_performance_schema_events_waits_history_long_size).在其他情况下，这种关系更为复杂。例如，`events_waits_history.count`对应于[`performance_schema_events_waits_history_size`](performance-schema-system-variables.html#sysvar_performance_schema_events_waits_history_size)（每个线程的行数）乘以[`performance_schema_max_thread_instances`](performance-schema-system-variables.html#sysvar_performance_schema_max_thread_instances)（线程数）。

[](<>)**显示引擎 NDB 状态。**如果服务器有[`新开发银行`](mysql-cluster.html)启用存储引擎，`显示引擎 NDB 状态`显示集群状态信息，例如连接的数据节点数、集群连接字符串和集群二进制日志纪元，以及 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                                                         |
+------------+-----------------------+--------------------------------------------------+
```

这`状态`每行中的列分别提供有关 MySQL 服务器与集群的连接和集群二进制日志状态的信息。这`状态`信息采用逗号分隔的名称/值对集合的形式。

这`联系`行的`状态`列包含下表中描述的名称/值对。

| 姓名 | 价值 |
| --- | --- |
| `cluster_node_id` | 集群中 MySQL 服务器的节点 ID |
| `连接主机` | MySQL服务器连接的集群管理服务器的主机名或IP地址 |
| `连接端口` | MySQL 服务器用来连接管理服务器的端口（`连接主机`) |
| `number_of_data_nodes` | 为集群配置的数据节点数（即`[ndbd]`集群中的部分`配置文件`文件） |
| `number_of_ready_data_nodes` | 集群中实际运行的数据节点数 |
| `连接计数` | 这个次数[**mysqld**](mysqld.html)已连接或重新连接到集群数据节点 |

这`二进制日志`行的`状态`列包含与 NDB Cluster Replication 相关的信息。它包含的名称/值对在下表中进行了描述。

| 姓名 | 价值 |
| --- | --- |
| `最新纪元` | 最近在此 MySQL 服务器上运行的最近 epoch（即服务器上最近运行的事务的序列号） |
| `latest_trans_epoch` | 集群数据节点处理的最新纪元 |
| `latest_received_binlog_epoch` | 二进制日志线程接收到的最新纪元 |
| `latest_handled_binlog_epoch` | 二进制日志线程处理的最新纪元（用于写入二进制日志） |
| `latest_applied_binlog_epoch` | 实际写入二进制日志的最新纪元 |

看[第 23.7 节，“NDB 集群复制”](mysql-cluster-replication.html)， 了解更多信息。

输出中的剩余行`显示引擎 NDB 状态`最有可能证明对监控集群有用的列表如下：`姓名`：

-   `Ndb事务`: 数量和大小`Ndb事务`已创建的对象。一个`Ndb事务`每次表模式操作（例如[`创建表`](create-table.html)要么[`更改表`](alter-table.html)) 是在一个[`新开发银行`](mysql-cluster.html)桌子。

-   `Ndb操作`: 数量和大小`Ndb操作`已创建的对象。

-   `NdbIndexScanOperation`: 数量和大小`NdbIndexScanOperation`已创建的对象。

-   `NdbIndex 操作`: 数量和大小`NdbIndex 操作`已创建的对象。

-   `NdbRecAttr`: 数量和大小`NdbRecAttr`已创建的对象。通常，每次 SQL 节点执行数据操作语句时都会创建其中一个。

-   `NdbBlob`: 数量和大小`NdbBlob`已创建的对象。一个`NdbBlob`为每个涉及到的新操作创建[`斑点`](blob.html)列中的[`新开发银行`](mysql-cluster.html)桌子。

-   `Ndb接收器`: 任意数量和大小`Ndb接收器`已创建的对象。中的号码`创建`column 与 MySQL 服务器连接的集群中的数据节点数相同。

笔记

`显示引擎 NDB 状态`如果不涉及任何操作，则返回空结果[`新开发银行`](mysql-cluster.html)在当前会话期间，MySQL 客户端访问运行此语句的 SQL 节点已执行表。
