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
互斥锁 和 读写锁 统计信息。
InnoDB
互斥锁和读写锁也可以使用 Performance Schema 表进行监视。请参见 第 17.16.2 节,“使用 Performance Schema 监视 InnoDB 互斥锁等待”.
互斥锁统计信息收集使用以下选项动态配置
要启用互斥锁统计信息收集,请运行
SET GLOBAL innodb_monitor_enable='latch';
要重置互斥锁统计信息,请运行
SET GLOBAL innodb_monitor_reset='latch';
要禁用互斥锁统计信息收集,请运行
SET GLOBAL innodb_monitor_disable='latch';
可以通过设置 innodb_monitor_enable='all'
来启用 SHOW ENGINE INNODB MUTEX
的互斥锁统计信息收集,或通过设置 innodb_monitor_disable='all'
来禁用。
SHOW ENGINE INNODB MUTEX
输出包含以下列:
类型
始终为
InnoDB
。名称
对于互斥锁,
Name
字段仅报告互斥锁名称。对于读写锁,Name
字段报告实现读写锁的源文件以及创建读写锁的文件中的行号。行号特定于您的 MySQL 版本。状态
互斥锁状态。此字段报告自旋次数、等待次数和调用次数。不会报告在
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
仅显示有关缓冲池外部的互斥锁和读写锁的信息,这些互斥锁和读写锁至少导致一次操作系统级别的 等待。
使用 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 了解不同的 Performance Schema 选项对内存需求的影响。
Name
值包含两个部分,分别命名内部缓冲区和缓冲区属性。解释缓冲区名称如下:
未作为表公开的内部缓冲区在括号内命名。例如:
(pfs_cond_class).size
、(pfs_mutex_class).memory
。作为
performance_schema
数据库中的表公开的内部缓冲区以表名命名,不带括号。例如:events_waits_history.size
、mutex_instances.count
。应用于整个 Performance Schema 的值以
performance_schema
开头。例如:performance_schema.memory
。
缓冲区属性具有以下含义:
size
是实现使用的内部记录的大小,例如表中行的尺寸。size
值不可更改。count
是内部记录的数量,例如表中的行数。count
值可以使用 Performance Schema 配置选项更改。对于表,
是tbl_name
.memorysize
和count
的乘积。对于整个 Performance Schema,performance_schema.memory
是所有使用的内存之和(所有其他memory
值之和)。
在某些情况下,Performance Schema 配置参数与 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 服务器连接到集群时创建的各种集群 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 |
为集群配置的数据节点数量(即集群 config.ini 文件中的 [ndbd] 部分数量) |
number_of_ready_data_nodes |
集群中实际运行的数据节点数量 |
connect_count |
此 mysqld 连接或重新连接到集群数据节点的次数 |
binlog
行的 Status
列包含与 NDB 集群复制相关的的信息。它包含的名称-值对在下表中描述。
名称 | 值 |
---|---|
latest_epoch |
最近在此 MySQL 服务器上运行的最新纪元(即在服务器上运行的最新事务的序列号) |
latest_trans_epoch |
集群数据节点处理的最新纪元 |
latest_received_binlog_epoch |
二进制日志线程接收到的最新纪元 |
latest_handled_binlog_epoch |
二进制日志线程处理的最新纪元(用于写入二进制日志) |
latest_applied_binlog_epoch |
实际写入二进制日志的最新纪元 |
有关更多信息,请参阅 第 25.7 节“NDB 集群复制”。
以下列出了 SHOW ENGINE NDB STATUS
输出中其余最有可能在监控集群中派上用场的行,按 Name
列出
NdbTransaction
:已创建的NdbTransaction
对象的数量和大小。每次在NDB
表上执行表模式操作(例如CREATE TABLE
或ALTER TABLE
)时,都会创建一个NdbTransaction
。NdbOperation
:已创建的NdbOperation
对象的数量和大小。NdbIndexScanOperation
:已创建的NdbIndexScanOperation
对象的数量和大小。NdbIndexOperation
:已创建的NdbIndexOperation
对象的数量和大小。NdbRecAttr
:已创建的NdbRecAttr
对象的数量和大小。通常,每次 SQL 节点执行数据操作语句时都会创建一个NdbRecAttr
。NdbBlob
:已创建的NdbBlob
对象的数量和大小。对于涉及BLOB
列的每个新操作,都会为NDB
表创建一个NdbBlob
。NdbReceiver
:已创建的任何NdbReceiver
对象的数量和大小。created
列中的数字与 MySQL 服务器连接到的集群中的数据节点数量相同。
如果在当前会话期间,访问运行此语句的 SQL 节点的 MySQL 客户端没有执行涉及 NDB
表的操作,则 SHOW ENGINE NDB STATUS
会返回空的结果。