MySQL 服务器维护着许多状态变量,这些变量提供有关其运行的信息。您可以使用 SHOW [GLOBAL | SESSION] STATUS
语句查看这些变量及其值(请参阅 第 15.7.7.36 节 “SHOW STATUS 语句”)。可选的 GLOBAL
关键字汇总所有连接的值,而 SESSION
显示当前连接的值。
mysql> SHOW GLOBAL STATUS;
+-----------------------------------+------------+
| Variable_name | Value |
+-----------------------------------+------------+
| Aborted_clients | 0 |
| Aborted_connects | 0 |
| Bytes_received | 155372598 |
| Bytes_sent | 1176560426 |
...
| Connections | 30023 |
| Created_tmp_disk_tables | 0 |
| Created_tmp_files | 3 |
| Created_tmp_tables | 2 |
...
| Threads_created | 217 |
| Threads_running | 88 |
| Uptime | 1389872 |
+-----------------------------------+------------+
FLUSH STATUS
语句会将许多状态变量重置为 0。
本节介绍每个状态变量。有关状态变量摘要,请参阅 第 7.1.6 节 “服务器状态变量参考”。有关特定于 NDB 集群的状态变量的信息,请参阅 第 25.4.3.9.3 节 “NDB 集群状态变量”。
状态变量具有以下含义。
由于客户端在未正确关闭连接的情况下死亡而导致中止的连接数。请参阅 第 B.3.2.9 节 “通信错误和中止的连接”。
连接到 MySQL 服务器的失败尝试次数。请参阅 第 B.3.2.9 节 “通信错误和中止的连接”。
有关其他连接相关信息,请检查
Connection_errors_
状态变量和xxx
host_cache
表。Authentication_ldap_sasl_supported_methods
实现 SASL LDAP 身份验证的
authentication_ldap_sasl
插件支持多种身份验证方法,但根据主机系统配置,它们可能并非全部可用。Authentication_ldap_sasl_supported_methods
变量提供对受支持方法的可发现性。其值是一个字符串,由空格分隔的受支持方法名称组成。例如:"SCRAM-SHA 1 SCRAM-SHA-256 GSSAPI"
使用了临时二进制日志缓存但超过了
binlog_cache_size
的值并使用临时文件存储来自事务的语句的事务数。导致二进制日志事务缓存写入磁盘的非事务性语句数在
Binlog_stmt_cache_disk_use
状态变量中单独跟踪。缓存的权限对象数。每个对象都是用户及其活动角色的权限组合。
使用二进制日志缓存的事务数。
使用了二进制日志语句缓存但超过了
binlog_stmt_cache_size
的值并使用临时文件存储这些语句的非事务性语句数。使用二进制日志语句缓存的非事务性语句数。
从所有客户端接收的字节数。
发送到所有客户端的字节数。
Caching_sha2_password_rsa_public_key
caching_sha2_password
身份验证插件用于基于 RSA 密钥对的密码交换的公钥。仅当服务器成功初始化caching_sha2_password_private_key_path
和caching_sha2_password_public_key_path
系统变量命名的文件中的私钥和公钥时,该值才为非空。Caching_sha2_password_rsa_public_key
的值来自后一个文件。Com_
语句计数器变量指示每个xxx
xxx
语句已执行的次数。每种类型的语句都有一个状态变量。例如,Com_delete
和Com_update
分别统计DELETE
和UPDATE
语句的次数。Com_delete_multi
和Com_update_multi
类似,但适用于使用多表语法的DELETE
和UPDATE
语句。即使预处理语句参数未知或执行期间发生错误,所有
Com_stmt_
变量都会增加。换句话说,它们的值对应于发出的请求数,而不是成功完成的请求数。例如,因为状态变量在每次服务器启动时初始化并且不会在重启后持久化,所以跟踪xxx
RESTART
和SHUTDOWN
语句的Com_restart
和Com_shutdown
变量通常值为零,但如果执行了RESTART
或SHUTDOWN
语句但失败,则可以是非零值。Com_stmt_
状态变量如下:xxx
Com_stmt_prepare
Com_stmt_execute
Com_stmt_fetch
Com_stmt_send_long_data
Com_stmt_reset
Com_stmt_close
这些变量代表预处理语句命令。它们的名称指的是网络层中使用的
COM_
命令集。换句话说,每当执行预处理语句 API 调用(例如 mysql_stmt_prepare()、mysql_stmt_execute() 等)时,它们的值都会增加。但是,xxx
Com_stmt_prepare
、Com_stmt_execute
和Com_stmt_close
也会分别针对PREPARE
、EXECUTE
或DEALLOCATE PREPARE
增加。此外,较旧的语句计数器变量Com_prepare_sql
、Com_execute_sql
和Com_dealloc_sql
的值也会针对PREPARE
、EXECUTE
和DEALLOCATE PREPARE
语句增加。Com_stmt_fetch
代表从游标获取数据时发出的网络往返总数。Com_stmt_reprepare
指示服务器自动重新准备语句的次数,例如,在对语句引用的表或视图的元数据更改之后。重新准备操作会增加Com_stmt_reprepare
和Com_stmt_prepare
的值。Com_explain_other
指示已执行的EXPLAIN FOR CONNECTION
语句的数量。请参阅 第 10.8.4 节“获取命名连接的执行计划信息”。Com_change_repl_filter
指示已执行的CHANGE REPLICATION FILTER
语句的数量。客户端连接是否在客户端/服务器协议中使用压缩。
此状态变量已弃用;预计在未来版本的 MySQL 中会被移除。请参阅 配置旧版连接压缩。
用于当前与服务器连接的压缩算法的名称。该值可以是
protocol_compression_algorithms
系统变量值中允许的任何算法。例如,如果连接不使用压缩,则值为uncompressed
,如果连接使用zlib
算法,则值为zlib
。有关更多信息,请参阅 第 6.2.8 节“连接压缩控制”。
用于当前与服务器连接的压缩级别。对于
zlib
连接,该值为 6(默认的zlib
算法压缩级别);对于zstd
连接,该值为 1 到 22;对于uncompressed
连接,该值为 0。有关更多信息,请参阅 第 6.2.8 节“连接压缩控制”。
这些变量提供有关客户端连接过程中发生的错误的信息。它们仅是全局的,表示从所有主机聚合的连接的错误计数。这些变量跟踪主机缓存未 accounting 的错误(请参阅 第 7.1.12.3 节“DNS 查询和主机缓存”),例如与 TCP 连接无关的错误、在连接过程的早期(甚至在知道 IP 地址之前)发生的错误,或不特定于任何特定 IP 地址的错误(例如内存不足情况)。
在侦听端口上调用
accept()
期间发生的错误数。由于服务器内部错误(例如无法启动新线程或内存不足情况)而拒绝的连接数。
Connection_errors_max_connections
由于已达到服务器
max_connections
限制而拒绝的连接数。Connection_errors_peer_address
搜索连接客户端 IP 地址时发生的错误数。
在侦听端口上调用
select()
或poll()
期间发生的错误数。(此操作失败并不一定意味着客户端连接被拒绝。)libwrap
库拒绝的连接数。
到 MySQL 服务器的连接尝试次数(无论成功与否)。
服务器在执行语句时创建的内部磁盘上临时表的数量。
您可以将创建的内部磁盘上临时表的数量与创建的内部临时表的总数进行比较,方法是比较
Created_tmp_disk_tables
和Created_tmp_tables
的值。注意由于已知的限制,
Created_tmp_disk_tables
不统计在内存映射文件中创建的磁盘上临时表。默认情况下,TempTable 存储引擎溢出机制会在内存映射文件中创建内部临时表。此行为由temptable_use_mmap
变量控制。mysqld 已创建的临时文件数。
服务器在执行语句时创建的内部临时表的数量。
您可以将创建的内部磁盘上临时表的数量与创建的内部临时表的总数进行比较,方法是比较
Created_tmp_disk_tables
和Created_tmp_tables
的值。另请参阅 第 10.4.4 节“MySQL 中的内部临时表使用”。
SHOW STATUS
语句的每次调用都会使用一个内部临时表,并增加全局Created_tmp_tables
的值。服务器用于新连接的 SSL 上下文中活动的
ssl_ca
值。如果已更改系统变量,但随后未执行ALTER INSTANCE RELOAD TLS
以根据与上下文相关的系统变量值重新配置 SSL 上下文并更新相应的状体变量,则此上下文值可能与当前的ssl_ca
系统变量值不同。(这种潜在的值差异适用于每对相应的与上下文相关的系统变量和状态变量。请参阅 用于加密连接的服务器端运行时配置和监控。)Current_tls_
状态变量的值也可以通过 Performance Schemaxxx
tls_channel_status
表获得。请参阅 第 29.12.22.9 节“tls_channel_status 表”。服务器用于新连接的 TLS 上下文中活动的
ssl_capath
值。有关此状态变量与其对应的系统变量之间关系的说明,请参阅Current_tls_ca
的描述。服务器用于新建连接的 TLS 上下文中活动的
ssl_cert
值。有关此状态变量与其对应系统变量之间关系的说明,请参阅Current_tls_ca
的描述。服务器用于新建连接的 TLS 上下文中活动的
ssl_cipher
值。有关此状态变量与其对应系统变量之间关系的说明,请参阅Current_tls_ca
的描述。服务器用于新建连接的 TLS 上下文中活动的
tls_ciphersuites
值。有关此状态变量与其对应系统变量之间关系的说明,请参阅Current_tls_ca
的描述。服务器用于新建连接的 TLS 上下文中活动的
ssl_crl
值。有关此状态变量与其对应系统变量之间关系的说明,请参阅Current_tls_ca
的描述。注意重新加载 TLS 上下文时,OpenSSL 会重新加载包含 CRL(证书吊销列表)的文件,作为该过程的一部分。如果 CRL 文件很大,服务器会分配一大块内存(文件大小的十倍),在加载新实例且旧实例尚未释放时,该内存会翻倍。释放大量分配的内存后,进程驻留内存不会立即减少,因此,如果使用大型 CRL 文件重复发出
ALTER INSTANCE RELOAD TLS
语句,则进程驻留内存使用量可能会因此而增加。服务器用于新建连接的 TLS 上下文中活动的
ssl_crlpath
值。有关此状态变量与其对应系统变量之间关系的说明,请参阅Current_tls_ca
的描述。服务器用于新建连接的 TLS 上下文中活动的
ssl_key
值。有关此状态变量与其对应系统变量之间关系的说明,请参阅Current_tls_ca
的描述。服务器用于新建连接的 TLS 上下文中活动的
tls_version
值。有关此状态变量与其对应系统变量之间关系的说明,请参阅Current_tls_ca
的描述。此状态变量已弃用(因为不支持
DELAYED
插入);预计在未来版本中将删除它。此状态变量已弃用(因为不支持
DELAYED
插入);预计在未来版本中将删除它。此状态变量已弃用(因为不支持
DELAYED
插入);预计在未来版本中将删除它。Deprecated_use_i_s_processlist_count
自上次重启以来,
information_schema.processlist
表被访问的次数。Deprecated_use_i_s_processlist_last_timestamp
一个时间戳,指示自上次重启以来最后一次访问
information_schema.processlist
表的时间。显示自 Unix 纪元以来的微秒数。最近一次对
dragnet.log_error_filter_rules
系统变量赋值的结果,如果未进行此类赋值,则为空。Performance Schema
error_log
表当前使用的字节数。该值可能会减少,例如,如果新事件在丢弃旧事件之前无法容纳,但新事件小于旧事件。Performance Schema
error_log
表中当前存在的事件数。与Error_log_buffered_bytes
一样,该值可能会减少。从 Performance Schema
error_log
表中丢弃的事件数,以便为新事件腾出空间。最后一次写入 Performance Schema
error_log
表的时间。服务器刷新表的次数,无论是由于用户执行了
FLUSH TABLES
语句还是由于内部服务器操作。收到COM_REFRESH
数据包时,它也会增加。这与Com_flush
形成对比,后者指示执行了多少FLUSH
语句,无论是FLUSH TABLES
、FLUSH LOGS
等等。所有用户连接到服务器使用的内存。系统线程或 MySQL root 帐户使用的内存包含在总计中,但此类线程或用户不会因内存使用情况而断开连接。除非启用了
global_connection_memory_tracking
(默认情况下禁用),否则不会计算此内存。还必须启用 Performance Schema。您可以通过设置
connection_memory_chunk_size
来控制(间接地)更新此变量的频率。内部
COMMIT
语句的数量。从表中删除行的次数。
服务器对其
external_lock()
函数的每次调用都会增加此变量,该函数通常发生在访问表实例的开始和结束时。存储引擎之间可能存在差异。例如,可以使用此变量来发现访问分区表的语句在锁定发生之前有多少个分区被剪枝:检查计数器为该语句增加了多少,减去 2(表本身的 2 次调用),然后除以 2 得到锁定的分区数。服务器使用存储引擎自身的多范围读取实现进行表访问的次数。
两阶段提交操作的准备阶段的计数器。
读取索引中第一个条目的次数。如果此值很高,则表明服务器正在执行大量的完整索引扫描(例如,
SELECT col1 FROM foo
,假设col1
已建立索引)。根据键读取行的请求数。如果此值很高,则表明您的表已针对您的查询正确编制索引。
读取索引中最后一个键的请求数。使用
ORDER BY
时,服务器会发出一个第一个键请求,然后是几个下一个键请求,而使用ORDER BY DESC
时,服务器会发出一个最后一个键请求,然后是几个上一个键请求。按键顺序读取下一行的请求数。如果您正在查询具有范围约束的索引列,或者您正在执行索引扫描,则此值会递增。
按键顺序读取上一行的请求数。此读取方法主要用于优化
ORDER BY ... DESC
。根据固定位置读取行的请求数。如果您正在执行大量需要对结果进行排序的查询,则此值会很高。您可能有很多查询需要 MySQL 扫描整个表,或者您有连接没有正确使用键。
读取数据文件中下一行的请求数。如果您正在执行大量的表扫描,则此值会很高。通常,这表明您的表没有正确编制索引,或者您的查询没有编写为利用您拥有的索引。
请求存储引擎执行回滚操作的次数。
请求存储引擎放置保存点的次数。
存储引擎回滚到保存点的请求数量。
更新表中行的请求数量。
在表中插入行的请求数量。
Innodb_buffer_pool_dump_status
记录
InnoDB
缓冲池 中保存的 页 的操作进度,由设置innodb_buffer_pool_dump_at_shutdown
或innodb_buffer_pool_dump_now
触发。有关信息和示例,请参见 第 17.8.3.6 节“保存和恢复缓冲池状态”。
Innodb_buffer_pool_load_status
通过读入与先前时间点相对应的 页 集来 预热
InnoDB
缓冲池 的操作进度,由设置innodb_buffer_pool_load_at_startup
或innodb_buffer_pool_load_now
触发。如果操作引入了太多开销,可以通过设置innodb_buffer_pool_load_abort
来取消它。有关信息和示例,请参见 第 17.8.3.6 节“保存和恢复缓冲池状态”。
InnoDB
缓冲池 中包含数据的总字节数。该数字包括 脏页 和干净页。当 压缩 表导致缓冲池保存不同大小的页时,与Innodb_buffer_pool_pages_data
相比,内存使用量计算更准确。InnoDB
缓冲池 中包含数据的 页 数。该数字包括 脏页 和干净页。当使用 压缩表 时,报告的Innodb_buffer_pool_pages_data
值可能大于Innodb_buffer_pool_pages_total
(错误 #59550)。Innodb_buffer_pool_bytes_dirty
InnoDB
缓冲池 中 脏页 中保存的当前总字节数。当 压缩 表导致缓冲池保存不同大小的页时,与Innodb_buffer_pool_pages_dirty
相比,内存使用量计算更准确。Innodb_buffer_pool_pages_dirty
Innodb_buffer_pool_pages_flushed
Innodb_buffer_pool_pages_latched
InnoDB
缓冲池 中已锁定的 页 数。这些是当前正在读取或写入的页,或者由于其他原因无法 刷新 或删除的页。此变量的计算成本很高,因此只有在服务器构建时定义了UNIV_DEBUG
系统时才可用。InnoDB
缓冲池 中由于已分配用于管理开销(例如 行锁 或 自适应哈希索引)而繁忙的 页 数。此值也可以计算为Innodb_buffer_pool_pages_total
−Innodb_buffer_pool_pages_free
−Innodb_buffer_pool_pages_data
。当使用 压缩表 时,Innodb_buffer_pool_pages_misc
可能会报告越界值(错误 #59550)。Innodb_buffer_pool_pages_total
InnoDB
缓冲池 的总大小(以 页 为单位)。当使用 压缩表 时,报告的Innodb_buffer_pool_pages_data
值可能大于Innodb_buffer_pool_pages_total
(错误 #59550)。Innodb_buffer_pool_read_ahead_evicted
Innodb_buffer_pool_read_ahead_rnd
由
InnoDB
发起的““随机””预读次数。当查询扫描表的很大一部分但顺序随机时,就会发生这种情况。Innodb_buffer_pool_read_requests
逻辑读取请求的数量。
InnoDB
无法从 缓冲池 中满足并必须直接从磁盘读取的逻辑读取次数。Innodb_buffer_pool_resize_status
动态调整
InnoDB
缓冲池 大小的操作状态,通过动态设置innodb_buffer_pool_size
参数来触发。innodb_buffer_pool_size
参数是动态的,允许您在不重新启动服务器的情况下调整缓冲池的大小。有关相关信息,请参见 在线配置 InnoDB 缓冲池大小。Innodb_buffer_pool_resize_status_code
报告用于跟踪在线缓冲池调整大小操作的状态代码。每个状态代码代表调整大小操作中的一个阶段。状态代码包括:
0:没有正在进行的调整大小操作
1:开始调整大小
2:禁用 AHI(自适应哈希索引)
3:撤回块
4:获取全局锁
5:调整池大小
6:调整哈希大小
7:调整大小失败
您可以将此状态变量与
Innodb_buffer_pool_resize_status_progress
结合使用,以跟踪调整大小操作每个阶段的进度。Innodb_buffer_pool_resize_status_progress
变量报告一个百分比值,指示当前阶段的进度。有关更多信息,请参见 监控在线缓冲池调整大小进度。
Innodb_buffer_pool_resize_status_progress
报告一个百分比值,指示在线缓冲池调整大小操作当前阶段的进度。此变量与
Innodb_buffer_pool_resize_status_code
结合使用,后者报告一个状态代码,指示在线缓冲池调整大小操作的当前阶段。在处理完每个缓冲池实例后,将更新百分比值。随着状态代码(由
Innodb_buffer_pool_resize_status_code
报告)从一种状态变为另一种状态,百分比值将重置为 0。有关相关信息,请参见 监控在线缓冲池调整大小进度。
通常,对
InnoDB
缓冲池 的写入发生在后台。当InnoDB
需要读取或创建 页 并且没有可用的干净页时,InnoDB
会先刷新一些 脏页,然后等待该操作完成。此计数器计算这些等待的实例数。如果innodb_buffer_pool_size
设置正确,则此值应较小。Innodb_buffer_pool_write_requests
写入
InnoDB
缓冲池 的次数。到目前为止
fsync()
操作的次数。fsync()
调用频率受innodb_flush_method
配置选项设置的影响。如果启用了
innodb_use_fdatasync
,则统计fdatasync()
操作的次数。当前挂起的
fsync()
操作数。fsync()
调用频率受innodb_flush_method
配置选项设置的影响。当前挂起的读取操作数。
当前挂起的写入操作数。
自服务器启动以来读取的数据量(以字节为单位)。
数据读取总次数(操作系统文件读取)。
数据写入总次数。
到目前为止写入的数据量(以字节为单位)。
已写入 双写缓冲区 的 页 数。参见 第 17.11.1 节 “InnoDB 磁盘 I/O”。
已执行的双写操作次数。参见 第 17.11.1 节 “InnoDB 磁盘 I/O”。
指示服务器是否使用 原子指令 构建。
InnoDB
重做日志 的写入请求数。对
InnoDB
重做日志 文件的物理写入次数。InnoDB
当前打开的文件数。对
InnoDB
重做日志 文件执行的fsync()
写入次数。InnoDB
重做日志 文件的挂起fsync()
操作数。对
InnoDB
重做日志 文件的挂起写入操作数。写入
InnoDB
重做日志 文件的字节数。InnoDB
页面大小(默认 16KB)。许多值以页为单位进行统计;页面大小使它们可以轻松转换为字节。通过对
InnoDB
表的操作创建的页数。通过对
InnoDB
表的操作从InnoDB
缓冲池读取的页数。通过对
InnoDB
表的操作写入的页数。重做日志记录是启用还是禁用。参见 禁用重做日志记录。
Innodb_redo_log_capacity_resized
最后一次完成容量调整操作后,所有重做日志文件的总重做日志容量(以字节为单位)。该值包括普通和备用重做日志文件。
如果没有挂起的缩减操作,则
Innodb_redo_log_capacity_resized
应等于innodb_redo_log_capacity
设置(如果使用),或者等于 ((innodb_log_files_in_group * innodb_log_file_size))(如果使用)。有关进一步说明,请参阅innodb_redo_log_capacity
文档。扩容操作是瞬时的。有关信息,请参阅 第 17.6.5 节 “重做日志”。
Innodb_redo_log_checkpoint_lsn
重做日志检查点 LSN。有关信息,请参阅 第 17.6.5 节 “重做日志”。
当前 LSN 表示重做日志缓冲区中最后一个写入位置。在请求操作系统将数据写入当前重做日志文件之前,
InnoDB
会将数据写入 MySQL 进程内的重做日志缓冲区。有关信息,请参阅 第 17.6.5 节 “重做日志”。Innodb_redo_log_flushed_to_disk_lsn
已刷新到磁盘的 LSN。
InnoDB
首先将数据写入重做日志,然后请求操作系统将数据刷新到磁盘。已刷新到磁盘的 LSN 表示InnoDB
知道已刷新到磁盘的重做日志中的最后一个位置。有关信息,请参阅 第 17.6.5 节 “重做日志”。一个数据大小值(以字节为单位),表示包含正在使用的重做日志数据的 LSN 范围,范围从重做日志使用者需要的最旧块到最后写入的块。有关信息,请参阅 第 17.6.5 节 “重做日志”。
当前由磁盘上所有重做日志文件消耗的磁盘空间量(以字节为单位),不包括备用重做日志文件。有关信息,请参阅 第 17.6.5 节 “重做日志”。
重做日志是否为只读。
重做日志调整大小状态,指示重做日志容量调整机制的当前状态。可能的值包括
OK
:没有问题,也没有挂起的重做日志容量调整操作。正在缩减
:正在进行缩减操作。
扩容操作是瞬时的,因此没有挂起状态。
重做日志 UUID。
对
InnoDB
表的操作当前正在等待的 行锁 数。获取
InnoDB
表的 行锁 所花费的总时间(以毫秒为单位)。获取
InnoDB
表的 行锁 的平均时间(以毫秒为单位)。获取
InnoDB
表的 行锁 的最长时间(以毫秒为单位)。对
InnoDB
表的操作必须等待 行锁 的次数。从
InnoDB
表中删除的行数。插入到
InnoDB
表中的行数。从
InnoDB
表中读取的行数。InnoDB
表中更新的估计行数。注意此值并非 100% 准确。要获得准确(但成本更高)的结果,请使用
ROW_COUNT()
。从系统创建的模式所属的
InnoDB
表中删除的行数。插入到系统创建的模式所属的
InnoDB
表中的行数。系统创建的模式所属的
InnoDB
表中已更新的行数。从系统创建的模式所属的
InnoDB
表中读取的行数。Innodb_truncated_status_writes
SHOW ENGINE INNODB STATUS
语句的输出被截断的次数。Innodb_undo_tablespaces_active
活动的撤消表空间的数量。包括隐式(
InnoDB
创建的)和显式(用户创建的)撤消表空间。有关撤消表空间的信息,请参阅第 17.6.3.4 节“撤消表空间”。Innodb_undo_tablespaces_explicit
用户创建的撤消表空间的数量。有关撤消表空间的信息,请参阅第 17.6.3.4 节“撤消表空间”。
Innodb_undo_tablespaces_implicit
InnoDB
创建的撤消表空间的数量。初始化 MySQL 实例时,InnoDB
会创建两个默认的撤消表空间。有关撤消表空间的信息,请参阅第 17.6.3.4 节“撤消表空间”。撤消表空间的总数。包括隐式(
InnoDB
创建的)和显式(用户创建的)撤消表空间,包括活动的和非活动的。有关撤消表空间的信息,请参阅第 17.6.3.4 节“撤消表空间”。MyISAM
键缓存中已更改但尚未刷新到磁盘的键块数。MyISAM
键缓存中未使用块的数量。可以使用此值确定键缓存的使用量;请参阅第 7.1.8 节“服务器系统变量”中对key_buffer_size
的讨论。MyISAM
键缓存中已用块的数量。此值是一个高水位线,表示曾经同时使用的最大块数。从
MyISAM
键缓存中读取键块的请求数。从磁盘物理读取键块到
MyISAM
键缓存的次数。如果Key_reads
很大,则您的key_buffer_size
值可能太小。缓存未命中率可以计算为Key_reads
/Key_read_requests
。将键块写入
MyISAM
键缓存的请求数。从
MyISAM
键缓存到磁盘物理写入键块的次数。查询优化器计算的最后一个编译查询的总成本。这对于比较同一查询的不同查询计划的成本很有用。默认值 0 表示尚未编译任何查询。默认值为 0。
Last_query_cost
具有会话范围。此变量显示具有多个查询块的查询的成本,汇总每个查询块的成本估算,估算不可缓存的子查询的执行次数,并将这些查询块的成本乘以子查询执行次数。
查询优化器为上一个查询构建执行计划所做的迭代次数。
Last_query_partial_plans
具有会话范围。尝试连接到已锁定用户帐户的次数。有关帐户锁定和解锁的信息,请参阅第 8.2.20 节“帐户锁定”。
执行超时已超过的
SELECT
语句的数量。设置了非零执行超时的
SELECT
语句的数量。这包括包含非零MAX_EXECUTION_TIME
优化器提示的语句,以及不包含此类提示但在max_execution_time
系统变量指示的超时为非零时执行的语句。尝试设置执行超时失败的
SELECT
语句的数量。自服务器启动以来同时使用的最大连接数。
Max_used_connections
达到其当前值的时间。此状态变量已弃用(因为不支持
DELAYED
插入);预计在未来版本中将删除它。MeCab 全文解析器插件当前使用的字符集。有关信息,请参阅第 14.9.9 节“MeCab 全文解析器插件”。
Ongoing_anonymous_transaction_count
显示已标记为匿名的正在进行的事务的数量。这可以用来确保没有更多的事务在等待处理。
列出 MLE 组件支持的语言。在 MySQL 9.0 中,始终为
JavaScript
。仅当安装了 MLE 组件时可用。有关更多信息,请参阅第 7.5.6.2 节“MLE 组件状态和会话信息”。
MLE 组件使用的堆的当前状态。值为以下之一:
未分配
、已分配
或垃圾回收
。仅当 MLE 组件处于活动状态时(即,如果Mle_status
等于Active
)才会分配堆。仅当安装了 MLE 组件时可用。有关更多信息,请参阅第 7.5.6.3 节“MLE 组件内存和线程使用情况”。
MLE 组件使用的已分配内存的百分比,四舍五入到最接近的整数。
仅当安装了 MLE 组件时可用。有关更多信息,请参阅第 7.5.6.3 节“MLE 组件内存和线程使用情况”。
所有会话中 MLE 存储程序引发的内存不足错误总数。
仅当安装了 MLE 组件时可用。有关更多信息,请参阅第 7.5.6.3 节“MLE 组件内存和线程使用情况”。
使用
mle_session_reset()
函数清除 MLE 会话的次数。仅当安装了 MLE 组件时可用。有关更多信息,请参阅第 7.5.6.2 节“MLE 组件状态和会话信息”。
当前活动 MLE 会话的数量。一旦 MySQL 用户创建或执行 JavaScript 存储程序,就会在给定的 MySQL 用户会话中创建一个 MLE 会话。当 MySQL 用户调用
mle_session_reset()
或 MySQL 会话结束时,它将被删除。如果 MySQL 用户调用
mle_session_reset()
,然后在同一个 MySQL 用户会话中创建或执行 JavaScript 存储程序,则会创建一个新的 MLE 会话。每个 MySQL 会话最多可以有一个 MLE 会话。仅当安装了 MLE 组件时可用。有关更多信息,请参阅第 7.5.6.2 节“MLE 组件状态和会话信息”。
自 MLE 组件激活以来任何时候活动的 MLE 会话的最大数量。
仅当安装了 MLE 组件时可用。有关更多信息,请参阅第 7.5.6.2 节“MLE 组件状态和会话信息”。
MLE 组件的当前状态。值为以下之一:
正在初始化
、非活动
、活动
或等待关闭
。仅当安装了 MLE 组件时可用。有关更多信息,请参阅第 7.5.6.2 节“MLE 组件状态和会话信息”。
这是当前在所有会话中缓存的 MLE 存储函数的数量。
仅当安装了 MLE 组件时可用。有关更多信息,请参阅第 7.5.6.4 节“MLE 组件存储程序使用情况”。
当前在所有会话中缓存的 MLE 存储过程的数量。
仅当安装了 MLE 组件时可用。有关更多信息,请参阅第 7.5.6.4 节“MLE 组件存储程序使用情况”。
返回当前所有会话中缓存的存储程序(存储过程和存储函数)的数量。MLE 存储程序在每次执行它的会话中第一次执行时就会被缓存。当发生以下任何一种情况时,它将从其会话的缓存中删除:
存储程序被显式删除。
MLE 会话被删除(请参阅
Mle_sessions
的说明)在当前 MLE 会话中抛出内存不足错误。
如果在从缓存中删除后再次执行相同的存储程序,它将照常再次缓存。
仅当安装了 MLE 组件时可用。有关更多信息,请参阅第 7.5.6.4 节“MLE 组件存储程序使用情况”。
最大的 MLE 存储程序的大小(以字节为单位)。此值等于存储程序源文本的大小,以字节表示。
仅当安装了 MLE 组件时可用。有关更多信息,请参阅第 7.5.6.4 节“MLE 组件存储程序使用情况”。
任何 MLE 存储程序执行的 SQL 语句的最大数量。
仅当安装了 MLE 组件时可用。有关更多信息,请参阅第 7.5.6.4 节“MLE 组件存储程序使用情况”。
返回附加到 GraalVM 的当前物理线程数。每当物理线程(由 MySQL 服务器的线程管理器提供)开始在 GraalVM 内执行操作时,它就会附加到 GraalVM。此类操作包括堆创建、代码解析、代码执行、参数转换、内存使用查询以及存储程序的反初始化。如果已附加的线程数超过分配给 Graal 的堆的兆字节数,则线程在退出后将从 GraalVM 中分离。附加的物理线程数不能超过分配的 Graal 堆的兆字节数的 1.5 倍。
仅当安装了 MLE 组件时可用。有关更多信息,请参阅第 7.5.6.3 节“MLE 组件内存和线程使用情况”。
自 MLE 组件上次变为活动状态以来,任何给定时间处于活动状态的 MLE 线程的最大数量。
仅当安装了 MLE 组件时可用。有关更多信息,请参阅第 7.5.6.3 节“MLE 组件内存和线程使用情况”。
Ongoing_anonymous_gtid_violating_transaction_count
此状态变量仅在调试版本中可用。显示使用
gtid_next=ANONYMOUS
并且违反 GTID 一致性的正在进行的事务的数量。Ongoing_automatic_gtid_violating_transaction_count
此状态变量仅在调试版本中可用。显示使用
gtid_next=AUTOMATIC
并且违反 GTID 一致性的正在进行的事务的数量。打开的文件数。此计数包括服务器打开的常规文件。它不包括其他类型的文件,例如套接字或管道。此外,该计数不包括存储引擎使用其自己的内部函数打开的文件,而不是要求服务器级别打开的文件。
打开的流的数量(主要用于日志记录)。
缓存的表定义的数量。
打开的表的数量。
已使用
my_open()
(一个mysys
库函数)打开的文件数。不使用此函数打开文件的服务器部分不会增加计数。已缓存的表定义的数量。
已打开的表的数量。如果
Opened_tables
很大,则您的table_open_cache
值可能太小。Performance_schema_
xxx
Performance Schema 状态变量列在 第 29.16 节“Performance Schema 状态变量” 中。这些变量提供有关由于内存限制而无法加载或创建的检测的信息。
当前准备好的语句的数量。(最大语句数由
max_prepared_stmt_count
系统变量给出。)服务器执行的语句的数量。与
Questions
变量不同,此变量包括在存储程序中执行的语句。它不计算COM_PING
或COM_STATISTICS
命令。本节开头的讨论说明了如何将此语句计数状态变量与其他此类变量相关联。
服务器执行的语句的数量。与
Queries
变量不同,这仅包括客户端发送到服务器的语句,不包括在存储程序中执行的语句。此变量不计算COM_PING
、COM_STATISTICS
、COM_STMT_PREPARE
、COM_STMT_CLOSE
或COM_STMT_RESET
命令。本节开头的讨论说明了如何将此语句计数状态变量与其他此类变量相关联。
Replica_open_temp_tables
显示复制 SQL 线程当前打开的临时表的数量。如果该值大于零,则关闭副本是不安全的;请参阅 第 19.5.1.32 节“复制和临时表”。此变量报告所有复制通道的打开临时表的总数。指示是否支持资源组功能。
在某些平台或 MySQL 服务器配置上,资源组不可用或有限制。特别是,Linux 系统可能需要对某些安装方法执行手动步骤。有关详细信息,请参阅 资源组限制。
半同步副本的数量。
Rpl_semi_sync_source_clients
的已弃用同义词。Rpl_semi_sync_master_net_avg_wait_time
Rpl_semi_sync_master_net_wait_time
Rpl_semi_sync_source_net_wait_time
的已弃用同义词。Rpl_semi_sync_master_net_waits
源等待副本回复的总次数。
Rpl_semi_sync_source_net_waits
的已弃用同义词。Rpl_semi_sync_source_no_times
的已弃用同义词。Rpl_semi_sync_source_no_tx
的已弃用同义词。Rpl_semi_sync_source_status
的已弃用同义词。Rpl_semi_sync_master_timefunc_failures
Rpl_semi_sync_master_tx_avg_wait_time
Rpl_semi_sync_master_tx_wait_time
Rpl_semi_sync_source_tx_wait_time
的已弃用同义词。Rpl_semi_sync_source_tx_waits
的已弃用同义词。Rpl_semi_sync_master_wait_pos_backtraverse
Rpl_semi_sync_master_wait_sessions
Rpl_semi_sync_source_wait_sessions
的已弃用同义词。Rpl_semi_sync_source_yes_tx
的已弃用同义词。半同步副本的数量。
当源上安装了
rpl_semi_sync_source
插件(semisync_source.so
库)时可用。Rpl_semi_sync_source_net_avg_wait_time
源等待副本回复的平均时间(以微秒为单位)。此变量始终为
0
,并且已弃用;预计它将在未来版本中删除。当源上安装了
rpl_semi_sync_source
插件(semisync_source.so
库)时可用。Rpl_semi_sync_source_net_wait_time
源等待副本回复的总时间(以微秒为单位)。此变量始终为
0
,并且已弃用;预计它将在未来版本中删除。当源上安装了
rpl_semi_sync_source
插件(semisync_source.so
库)时可用。Rpl_semi_sync_source_net_waits
源等待副本回复的总次数。
当源上安装了
rpl_semi_sync_source
插件(semisync_source.so
库)时可用。源关闭半同步复制的次数。
当源上安装了
rpl_semi_sync_source
插件(semisync_source.so
库)时可用。未被副本成功确认的提交数。
当源上安装了
rpl_semi_sync_source
插件(semisync_source.so
库)时可用。源服务器上半同步复制当前是否正在运行。如果插件已启用且已发生提交确认,则该值为
ON
。如果未启用插件或由于提交确认超时导致源回退到异步复制,则该值为OFF
。当源上安装了
rpl_semi_sync_source
插件(semisync_source.so
库)时可用。Rpl_semi_sync_source_timefunc_failures
源服务器在调用
gettimeofday()
等时间函数时失败的次数。当源上安装了
rpl_semi_sync_source
插件(semisync_source.so
库)时可用。Rpl_semi_sync_source_tx_avg_wait_time
源服务器为每个事务等待的平均时间,以微秒为单位。
当源上安装了
rpl_semi_sync_source
插件(semisync_source.so
库)时可用。Rpl_semi_sync_source_tx_wait_time
源服务器为事务等待的总时间,以微秒为单位。
当源上安装了
rpl_semi_sync_source
插件(semisync_source.so
库)时可用。源服务器为事务等待的总次数。
当源上安装了
rpl_semi_sync_source
插件(semisync_source.so
库)时可用。Rpl_semi_sync_source_wait_pos_backtraverse
源服务器等待的二进制坐标低于先前等待的事件的事件的总次数。当事务开始等待回复的顺序与其二进制日志事件写入的顺序不同时,可能会发生这种情况。
当源上安装了
rpl_semi_sync_source
插件(semisync_source.so
库)时可用。Rpl_semi_sync_source_wait_sessions
当前正在等待副本回复的会话数。
当源上安装了
rpl_semi_sync_source
插件(semisync_source.so
库)时可用。被副本成功确认的提交数。
当源上安装了
rpl_semi_sync_source
插件(semisync_source.so
库)时可用。显示半同步复制当前是否在副本上运行。如果已启用插件并且复制 I/O(接收器)线程正在运行,则为
ON
,否则为OFF
。当源上安装了
rpl_semi_sync_source
插件(semisync_source.so
库)时可用。Rpl_semi_sync_replica_status
的已弃用同义词。此变量的值是
sha256_password
身份验证插件用于基于 RSA 密钥对的密码交换的公钥。仅当服务器成功初始化由sha256_password_private_key_path
和sha256_password_public_key_path
系统变量命名的文件中的私钥和公钥时,该值才为非空。Rsa_public_key
的值来自后一个文件。有关
sha256_password
的信息,请参阅 第 8.4.1.2 节,“SHA-256 可插拔身份验证”。Secondary_engine_execution_count
卸载到辅助引擎的查询数。
与 HeatWave 一起使用。请参阅 HeatWave 用户指南。
由于不使用索引而执行表扫描的联接数。如果此值不为 0,则应仔细检查表的索引。
在引用表上使用范围搜索的联接数。
在第一个表上使用范围的联接数。即使该值相当大,这通常也不是一个严重问题。
在每行之后检查键使用的无键联接数。如果此值不为 0,则应仔细检查表的索引。
对第一个表进行完全扫描的联接数。
Replica_open_temp_tables
的已弃用别名。Slave_rows_last_search_algorithm_used
创建线程所花费时间超过
slow_launch_time
秒的线程数。执行时间超过
long_query_time
秒的查询数。无论是否启用慢查询日志,此计数器都会递增。有关该日志的信息,请参阅 第 7.4.5 节,“慢查询日志”。排序算法必须执行的合并次数。如果此值很大,则应考虑增加
sort_buffer_size
系统变量的值。使用范围完成的排序次数。
已排序的行数。
通过扫描表完成的排序次数。
建立连接所需的协商次数。
已接受的 SSL 连接数。
回调缓存命中次数。
当前加密密码(未加密连接为空)。
可能的 SSL 密码列表(非 SSL 连接为空)。如果 MySQL 支持 TLSv1.3,则该值包括可能的 TLSv1.3 密码套件。请参阅 第 8.3.2 节,“加密连接 TLS 协议和密码”。
到启用 SSL 的复制源服务器的 SSL 连接尝试次数。
建立与启用 SSL 的复制源服务器的连接所需的协商次数。
SSL 上下文验证深度(测试链中的证书数量)。
SSL 上下文验证模式。
默认 SSL 超时。
到服务器的成功 SSL 连接数。
到启用 SSL 的复制源服务器的成功副本连接数。
SSL 证书有效的最后日期。要检查 SSL 证书过期信息,请使用以下语句
mysql> SHOW STATUS LIKE 'Ssl_server_not%'; +-----------------------+--------------------------+ | Variable_name | Value | +-----------------------+--------------------------+ | Ssl_server_not_after | Apr 28 14:16:39 2025 GMT | | Ssl_server_not_before | May 1 14:16:39 2015 GMT | +-----------------------+--------------------------+
SSL 证书有效的第一个日期。
SSL 会话缓存命中次数。
SSL 会话缓存未命中次数。
SSL 会话缓存模式。当
ssl_session_cache_mode
服务器变量的值为ON
时,Ssl_session_cache_mode
状态变量的值为SERVER
。SSL 会话缓存溢出次数。
SSL 会话缓存大小。
缓存中 SSL 会话的超时值(以秒为单位)。
SSL 会话缓存超时次数。
如果在当前 MySQL 会话中未使用 TLS 或未复用 TLS 会话,则此值为 0;否则,它等于 1。
Ssl_sessions_reused
具有会话范围。Ssl_used_session_cache_entries
已使用的 SSL 会话缓存条目数。
复制 SSL 连接的验证深度。
服务器对使用 SSL 的连接使用的验证模式。该值是一个位掩码;位在
openssl/ssl.h
头文件中定义# define SSL_VERIFY_NONE 0x00 # define SSL_VERIFY_PEER 0x01 # define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02 # define SSL_VERIFY_CLIENT_ONCE 0x04
SSL_VERIFY_PEER
指示服务器请求客户端证书。如果客户端提供证书,则服务器会执行验证,并且仅在验证成功时才会继续操作。SSL_VERIFY_CLIENT_ONCE
指示仅在初始握手时才执行对客户端证书的请求。连接的 SSL 协议版本(例如,TLSv1)。如果连接未加密,则该值为为空。
可以立即授予表锁请求的次数。
无法立即授予表锁请求并且需要等待的次数。如果此值很高并且您遇到性能问题,则应首先优化查询,然后拆分一个或多个表或使用复制。
打开的表缓存查找的命中次数。
打开的表缓存查找的未命中次数。
打开的表缓存的溢出次数。这是在打开或关闭表后,缓存实例具有未使用条目且实例大小大于
table_open_cache
/table_open_cache_instances
的次数。对于由 mysqld 在充当内部 XA 事务恢复的事务协调器时使用的内存映射日志实现,此变量指示自服务器启动以来用于日志的最大页数。如果
Tc_log_max_pages_used
和Tc_log_page_size
的乘积始终明显小于日志大小,则该大小大于必要大小,可以减小。(大小由--log-tc-size
选项设置。此变量未使用:基于二进制日志的恢复不需要它,并且除非能够进行两阶段提交并支持 XA 事务的存储引擎数量大于 1,否则不会使用内存映射恢复日志方法。(InnoDB
是唯一适用的引擎。)用于 XA 恢复日志的内存映射实现的页面大小。默认值使用
getpagesize()
确定。出于与Tc_log_max_pages_used
描述的相同原因,此变量未使用。对于恢复日志的内存映射实现,每次服务器无法提交事务并且必须等待日志中的可用页面时,此变量都会递增。如果此值很大,则可能需要增加日志大小(使用
--log-tc-size
选项)。对于基于二进制日志的恢复,每次由于有两阶段提交正在进行而无法关闭二进制日志时,此变量都会递增。(关闭操作会等待所有此类事务完成。)是否支持服务器遥测指标。
有关更多信息,请参阅 MySQL 源代码文档中的“服务器遥测指标服务”部分。
显示当前使用遥测检测的会话数。这在卸载遥测组件时很有用,可以监控有多少个会话阻止了卸载操作。
有关更多信息,请参阅 MySQL 源代码文档中的“服务器遥测跟踪服务”部分和 第 35 章,遥测。
是否支持服务器遥测跟踪。
有关更多信息,请参阅 MySQL 源代码文档中的“服务器遥测跟踪服务”部分。
线程缓存中的线程数。
当前打开的连接数。
为处理连接而创建的线程数。如果
Threads_created
很大,则可能需要增加thread_cache_size
的值。缓存未命中率可以通过Threads_created
/Connections
计算。未休眠的线程数。
此 MySQL 实例正在使用的 OpenSSL 库的运行时版本。
如果客户端指定,则为此会话使用的服务器名称指示 (SNI);否则为空。SNI 是 TLS 协议的扩展(必须使用 TLS 扩展编译 OpenSSL 才能使此状态变量起作用)。SNI 的 MySQL 实现仅代表客户端。
服务器已启动的秒数。
自最近一次
FLUSH STATUS
语句以来的秒数。