page contents

还记不住数据库MySQL的基本语句?这篇文章来帮助你

SHOW ENGINE INNODB MUTEX 没有列出每个缓冲池块的互斥和读写锁,因为在具有大缓冲池的系统上,输出量会非常大。不过,SHOW ENGINE INNODB MUTEX 会打印缓冲池块互斥和读写锁的聚合 BUF_BLOCK_MUTEX 自旋、等待和调用值。

attachments-2021-04-yZ4B4CNK606d4a7599f9f.png

这篇文章主要介绍了MuSQL语句中的SHOW ENGINE 语句,咨询其他相关内容欢迎前往数据库MySQL基本语句

SHOW ENGINE 语句

SHOW ENGINE engine_name {STATUS | MUTEX}

SHOW ENGINE 显示有关存储引擎的操作信息。它需要 PROCESS 权限。该语句有以下变体:

SHOW ENGINE INNODB STATUSSHOW ENGINE INNODB MUTEXSHOW ENGINE PERFORMANCE_SCHEMA STATUS

SHOW ENGINE INNODB STATUS 显示标准 INNODB 监视器中有关 INNODB 存储引擎状态的大量信息。SHOW ENGINE INNODB MUTEX 显示 INNODB mutex  rw-lock 统计信息。


注意

InnoDB 互斥锁和读写锁也可以通过 Performance Schema 中相关表来监控。 


使用以下选项动态配置互斥统计信息收集:


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

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 字段仅报告互斥锁名称。对于读写锁,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 检查 Performance Schema 代码的内部操作:

mysql> SHOW ENGINE PERFORMANCE_SCHEMA STATUS\G...*************************** 3. row ***************************  Type: performance_schema  Name: events_waits_history.sizeStatus: 76*************************** 4. row ***************************  Type: performance_schema  Name: events_waits_history.countStatus: 10000*************************** 5. row ***************************  Type: performance_schema  Name: events_waits_history.memoryStatus: 760000...*************************** 57. row ***************************  Type: performance_schema  Name: performance_schema.memoryStatus: 26459600...


此语句旨在帮助 DBA 了解不同 Performance Schema 选项对内存需求的影响。 Name 值由两部分组成,分别指定内部缓冲区和缓冲区属性。按如下方式解释缓冲区名称: 

● 未公开为表的内部缓冲区在括号内命名。示例:(pfs_cond_class).size(pfs_mutex_class).memory 

● 在 performance_schema 数据库中作为表公开的内部缓冲区在表后面指定,不带括号。示例:events_waits_history.sizemutex_instances.count 

● 应用于整个 Performance Schema 的值以 performance_schema. 开始。示例:performance_schema.memory 


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

● size 是具体实现使用的内部记录的大小,例如表中行的大小。size 值无法更改。 

● count 是内部记录数,例如表中的行数。可以使用 Performance Schema 配置选项更改count 值。 

● 对于表,tbl_name.memory 是大小和数量的乘积。对于 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 Cluster Replication 相关的信息。下表描述了它包含的名称/值对。 

名称
latest_epoch此 MySQL 服务器上最近运行的 epoch(即服务器上最近运行的事务的序列号)
latest_trans_epoch由群集的数据节点处理的最新 epoch
latest_received_binlog_epoch      二进制日志线程接收的最新 epoch
latest_handled_binlog_epoch二进制日志线程处理的最新 epoch(用于写入二进制日志)
latest_applied_binlog_epoch实际写入二进制日志的最新 epoch


SHOW ENGINE NDB STATUS 输出中最有可能被证明对监视集群有用的其余行按 Name 列出: 


 NdbTransaction: 已创建的 NdbTransaction 对象的数量和大小。每次对 NDB 表执行表模式操作(如 CREATE TABLE  ALTER TABLE)时,都会创建一个 NdbTransaction 

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

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

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

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

 NdbBlob:已创建的 NdbBlob 对象的数量和大小。涉及 NDB 表中 BLOB 列的每个新操作都会创建一个 NdbBlob 

 NdbReceiver: 已创建的任何 NdbReceiver 对象的数量和大小。created 列中的数字与MySQL 服务器连接到的集群中的数据节点数相同。 


注意 如果 MySQL 客户端访问运行此语句的 SQL 节点时,在当前会话期间没有执行任何涉及NDB 表的操作,SHOW ENGINE NDB STATUS 将返回空结果。


如果觉得意犹未尽,还有什么不了解的,欢迎前往:六星社区咨询相关内容。

如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。

attachments-2022-06-2yKPSodL62abe5144684f.jpeg

  • 发表于 2021-04-07 14:11
  • 阅读 ( 540 )
  • 分类:数据库

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1320 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章