Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


15.7.7.16 显示引擎语句

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 互斥锁读写锁 统计信息。

Note

InnoDB 互斥锁和读写锁也可以使用性能 Schema 表来监控。请见第17.16.2节,“使用性能 Schema 监控 InnoDB 互斥锁等待”

互斥锁统计信息的配置是动态的,可以使用以下选项进行配置:

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

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

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

    SET GLOBAL innodb_monitor_disable='latch';

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

SHOW ENGINE INNODB MUTEX 输出具有以下列:

  • Type

    总是 InnoDB

  • Name

    对于互斥锁,Name 字段报告互斥锁的名称。对于读写锁,Name 字段报告读写锁的实现文件和行号。行号是特定于 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级别等待的互斥锁和读写锁。

使用 SHOW 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 值由两个部分组成,分别命名内部缓冲区和缓冲区属性。解释缓冲区名称如下:

  • 内部缓冲区不 exposures 作为表的名称在括号中。示例:(pfs_cond_class).size(pfs_mutex_class).memory

  • 内部缓冲区 exposures 作为表在性能方案数据库中的名称不在括号中。示例:events_waits_history.sizemutex_instances.count

  • 对性能方案的整体值以performance_schema开头。示例:performance_schema.memory

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

  • size 是实现中使用的内部记录大小,例如表中的行大小。size 值不能被改变。

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

  • 对于表,tbl_name.memorysizecount 的乘积。对于性能方案的整体,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(线程数)。

SHOW ENGINE NDB STATUS.  如果服务器启用了NDB存储引擎,SHOW ENGINE NDB STATUS将显示集群状态信息,如数据节点的连接数、集群连接字符串和集群二进制日志epochs,以及各种Cluster API对象在MySQL Server连接到集群时创建的数量。以下是该语句的示例输出:

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列中包含以下表格中描述的名称-值对。

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 MySQL服务器连接或重新连接到集群数据节点的次数

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

请参阅Section 25.7, “NDB Cluster Replication”,了解更多信息。

SHOW ENGINE NDB STATUS语句的输出中,以下行最可能证明有用在监控集群的名称:

  • NdbTransaction: 创建的 NdbTransaction 对象的数量和大小。每次对CREATE TABLEALTER TABLE进行表架构操作时都会创建一个 NdbTransaction 对象。

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

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

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

  • NdbRecAttr: 创建的 NdbRecAttr 对象的数量和大小。通常,每执行一次数据操作语句时都会创建一个这样的对象。

  • NdbBlob: 创建的 NdbBlob 对象的数量和大小。每执行一次涉及到BLOB 列的操作时都会创建一个 NdbBlob 对象。

  • NdbReceiver: 创建的 NdbReceiver 对象的数量和大小。该对象的数量等于连接到该 MySQL 服务器的数据节点的数量。

Note

SHOW ENGINE NDB STATUS 如果当前会话中没有执行涉及到NDB 表的操作,则返回一个空结果。