SHOW ENGINE语句
SHOW ENGINE engine_name {STATUS |MUTEX }
SHOW ENGINE显示有关存储引擎的操作信息。它需要PROCESS特权。该语句具有以下变体:
SHOW ENGINE INNODBSTATUS SHOW ENGINE INNODBMUTEX SHOW ENGINE PERFORMANCE_SCHEMASTATUS
SHOW ENGINE INNODB STATUS显示来自标准InnoDBMonitor的有关InnoDB存储引擎状态的大量信息。有关标准监视器和其他InnoDB提供有关InnoDB处理信息的监视器的信息,请参见“ InnoDB监视器”。
SHOW ENGINE INNODB MUTEX显示InnoDB互斥和 rw-lock统计信息。
注意
InnoDB互斥锁和rwlock也可以使用Performance Schema表进行监视。请参见“使用性能模式监视InnoDB Mutex等待”。
使用以下选项动态配置Mutex统计信息收集:
要启用互斥量统计信息收集,请运行:
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对于互斥锁,该
Name字段仅报告互斥锁名称。对于rwlock,该Name字段报告实现rwlock的源文件以及创建rwlock的文件中的行号。行号特定于您的MySQL版本。Status互斥状态。此字段报告旋转,等待和呼叫的次数。
InnoDB不报告在之外实现的底层操作系统互斥量的统计信息。spins指示旋转次数。waits表示互斥体等待的次数。calls指示请求互斥锁的次数。
SHOW ENGINE INNODB MUTEX跳过互斥和 RW-锁的缓冲池块,作为输出的量可以在具有大的缓冲池系统是压倒性的。(每个16K缓冲池块中有一个互斥锁和一个rw锁,每千兆字节有65,536个块。)SHOW ENGINE INNODB MUTEX也不列出从未等待过的任何互斥锁或rw锁(os_waits=0)。因此,SHOW ENGINE INNODB MUTEX仅显示有关导致至少一个OS级等待的缓冲池之外的互斥锁和rw锁的信息。
使用SHOW ENGINE PERFORMANCE_SCHEMA STATUS检查绩效模式的代码的内部操作:
mysql>SHOW ENGINE PERFORMANCE_SCHEMASTATUS \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.memory是产品size和count。对于整个性能模式,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服务器时由MySQL Server创建的各种群集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文件中的节数) |
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 | 实际写入二进制日志的最新纪元 |
有关更多信息,请参见“ NDB群集复制”。
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如果NDBMySQL客户端访问运行此语句的SQL节点在当前会话期间未执行任何涉及表的操作,则返回空结果。
