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处理信息的标准监视器和其他监视器的信息,请参阅
第 14.18 节,“InnoDB 监视器”。
SHOW ENGINE INNODB
MUTEX显示InnoDB
mutex和
rw-lock统计信息。
InnoDB互斥锁和 rwlocks 也可以使用Performance Schema表进行监控。请参阅
第 14.17.2 节,“使用性能模式监视 InnoDB 互斥等待”。
SHOW ENGINE INNODB
MUTEXMySQL 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';
SHOW ENGINE INNODB
MUTEX也可以通过设置启用
innodb_monitor_enable='all'或禁用
互斥统计信息的收集
innodb_monitor_disable='all'。
SHOW ENGINE INNODB
MUTEX输出有以下列:
Type总是
InnoDB。Name在 MySQL 5.7.8 之前,该
Name字段报告实现互斥锁的源文件,以及创建互斥锁的文件中的行号。行号特定于您的 MySQL 版本。从 MySQL 5.7.8 开始,只报告互斥量名称。仍然会为 rwlocks 报告文件名和行号。Status互斥状态。
在 MySQL 5.7.8 之前,如果在 MySQL 编译时定义,该
Status字段会显示多个值 。WITH_DEBUG如果WITH_DEBUG未定义,则该语句仅显示os_waits值。在后一种情况下(没有WITH_DEBUG),输出所基于的信息不足以区分常规互斥锁和保护 rwlock 的互斥锁(允许多个读取器或单个写入器)。因此,输出可能看起来包含同一互斥锁的多行。MySQL 5.7.8 之前的Status字段值包括:count指示请求互斥量的次数。spin_waits指示自旋锁必须运行的次数。spin_rounds指示自旋锁轮数。(spin_rounds除以spin_waits提供平均回合数。)os_waits表示操作系统等待的次数。当自旋锁不起作用时会发生这种情况(在自旋锁期间互斥量未被锁定,必须让出操作系统并等待)。os_yields指示尝试锁定互斥量的线程放弃其时间片并让给操作系统的次数(假设允许其他线程运行会释放互斥量以便它可以被锁定)。os_wait_times表示操作系统等待的时间量(以毫秒为单位)。在 MySQL 5.7 中,计时被禁用,该值始终为 0。
从 MySQL 5.7.8 开始,该
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.memorysize乘积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 |
实际写入二进制日志的最近纪元 |
有关更多信息,请参阅第 21.7 节,“NDB Cluster 复制”。
输出中的其余行SHOW ENGINE NDB
STATUS最有可能被证明对监视集群有用,如下所示
Name:
NdbTransactionNdbTransaction:已创建对象的数量和大小 。NdbTransaction每次对表执行表架构操作(例如CREATE TABLE或ALTER TABLE)时都会创建一个NDB。NdbOperationNdbOperation:已创建对象 的数量和大小 。NdbIndexScanOperationNdbIndexScanOperation:已创建对象 的数量和大小。NdbIndexOperationNdbIndexOperation:已创建对象 的数量和大小 。NdbRecAttrNdbRecAttr:已创建对象的数量和大小 。通常,每次 SQL 节点执行数据操作语句时都会创建其中一个。NdbBlobNdbBlob:已创建对象的数量和大小 。 为涉及表中列的每个NdbBlob新操作创建一个。BLOBNDBNdbReceiverNdbReceiver:已创建的任何对象的数量和大小 。列中的created数字与 MySQL 服务器已连接的集群中的数据节点数相同。
SHOW ENGINE NDB STATUSNDB如果MySQL 客户端访问运行此语句的 SQL 节点,在当前会话期间未执行
任何涉及表的操作,则返回空结果
。