SHOW ENGINE engine_name {STATUS | MUTEX}
SHOW ENGINE
显示有关存储引擎的操作信息。它需要
PROCESS
特权。该声明有以下变体:
SHOW ENGINE INNODB STATUS
SHOW ENGINE INNODB MUTEX
SHOW ENGINE {NDB | NDBCLUSTER} STATUS
SHOW ENGINE PERFORMANCE_SCHEMA STATUS
SHOW ENGINE INNODB
STATUS
显示来自标准InnoDB
监视器的关于InnoDB
存储引擎状态的大量信息。有关InnoDB
提供有关
InnoDB
处理信息的标准监视器和其他监视器的信息,请参阅
第 14.17 节,“InnoDB 监视器”。
SHOW ENGINE INNODB
MUTEX
显示InnoDB
mutex和
rw-lock统计信息。
大多数SHOW ENGINE
INNODB MUTEX
输出在 5.6.14 中被删除。
SHOW ENGINE
INNODB MUTEX
输出在 MySQL 5.7.2 中被完全删除。InnoDB
可以使用Performance Schema表监视互斥锁。有关示例,请参阅
第 14.16.1 节,“使用性能模式监视 InnoDB 互斥等待”。
Type
总是
InnoDB
。Name
实现互斥量的源文件,以及创建互斥量的文件中的行号。行号特定于您的 MySQL 版本。
Status
互斥状态。
WITH_DEBUG
如果在 MySQL 编译时定义,则此字段显示多个值 。如果WITH_DEBUG
未定义,则该语句仅显示os_waits
值。在后一种情况下(没有WITH_DEBUG
),输出所基于的信息不足以区分常规互斥锁和保护读写锁(允许多个读取器或单个写入器)的互斥锁。因此,输出可能看起来包含同一互斥锁的多行。count
指示请求互斥量的次数。spin_waits
指示自旋锁必须运行的次数。spin_rounds
指示自旋锁轮数。(spin_rounds
除以spin_waits
提供平均回合数。)os_waits
表示操作系统等待的次数。当自旋锁不起作用时会发生这种情况(在自旋锁期间互斥量未被锁定,必须让出操作系统并等待)。os_yields
指示尝试锁定互斥量的线程放弃其时间片并让给操作系统的次数(假设允许其他线程运行会释放互斥量以便它可以被锁定)。os_wait_times
表示操作系统等待的时间量(以毫秒为单位)。在 MySQL 5.6 中,计时被禁用,该值始终为 0。
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 INNODB MUTEX
信息可用于诊断系统问题。例如,较大的
spin_waits
和值spin_rounds
可能表示存在可伸缩性问题。
用于SHOW ENGINE
PERFORMANCE_SCHEMA STATUS
检查 Performance Schema 代码的内部运行:
mysql> SHOW ENGINE PERFORMANCE_SCHEMA STATUS\G
...
*************************** 3. row ***************************
Type: performance_schema
Name: events_waits_history.row_size
Status: 76
*************************** 4. row ***************************
Type: performance_schema
Name: events_waits_history.row_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).row_size
,(pfs_mutex_class).memory
。在数据库中作为表公开的内部缓冲区以表
performance_schema
命名,不带括号。例子:events_waits_history.row_size
,mutex_instances.row_count
。适用于整个性能模式的值以
performance_schema
. 例子:performance_schema.memory
。
缓冲区属性具有以下含义:
row_size
是实现使用的内部记录的大小,例如表中一行的大小。row_size
值无法更改。row_count
是内部记录的数量,例如表中的行数。row_count
可以使用 Performance Schema 配置选项更改值。对于表格,
是 和 的tbl_name
.memoryrow_size
乘积row_count
。对于整个 Performance Schema,performance_schema.memory
是所有已用内存的总和(所有其他memory
值的总和)。
SHOW
ENGINE
在某些情况下,性能模式配置参数和值
之间存在直接关系。例如,
events_waits_history_long.row_count
对应于
performance_schema_events_waits_history_long_size
. 在其他情况下,关系更为复杂。例如,
events_waits_history.row_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 |
实际写入二进制日志的最近纪元 |
有关更多信息,请参阅第 18.7 节,“NDB Cluster 复制”。
输出中的其余行SHOW ENGINE NDB
STATUS
最有可能被证明对监视集群有用,如下所示
Name
:
NdbTransaction
NdbTransaction
:已创建对象的数量和大小 。NdbTransaction
每次对表执行表架构操作(例如CREATE TABLE
或ALTER TABLE
)时都会创建一个NDB
。NdbOperation
NdbOperation
:已创建对象 的数量和大小 。NdbIndexScanOperation
NdbIndexScanOperation
:已创建对象 的数量和大小。NdbIndexOperation
NdbIndexOperation
:已创建对象 的数量和大小 。NdbRecAttr
NdbRecAttr
:已创建对象的数量和大小 。通常,每次 SQL 节点执行数据操作语句时都会创建其中一个。NdbBlob
NdbBlob
:已创建对象的数量和大小 。 为涉及表中列的每个NdbBlob
新操作创建一个。BLOB
NDB
NdbReceiver
NdbReceiver
:已创建的任何对象的数量和大小 。列中的created
数字与 MySQL 服务器已连接的集群中的数据节点数相同。
SHOW ENGINE NDB STATUS
NDB
如果MySQL 客户端访问运行此语句的 SQL 节点,在当前会话期间未执行
任何涉及表的操作,则返回空结果
。