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 Cluster 特定状态变量的信息,请参见 第 25.4.3.9.3 节,“NDB Cluster 状态变量”。
状态变量具有以下含义。
由于客户端在没有正确关闭连接的情况下死机而中止的连接数量。参见 第 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
Com_delete
Com_update
DELETE
UPDATE
Com_delete_multi
Com_update_multi
类似但适用于使用多表语法的和语句。DELETE
UPDATE
所有变量都会增加,即使准备好的语句参数未知或执行期间发生错误。换句话说,它们的值对应于发出的请求数,而不是成功完成的请求数。例如,由于状态变量在每次服务器启动时都会初始化并且不会跨重启保留,跟踪和语句的变量通常值为零,但如果语句或语句被执行但失败,则可能为非零。
Com_stmt_
xxx
Com_restart
Com_shutdown
RESTART
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
这些变量代表准备好的语句命令。它们的名称是指网络层中使用的命令集。换句话说,每当执行准备好的语句 API 调用(如、
COM_
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 节,“连接压缩控制”。
当前连接到服务器时使用的压缩级别。值为 6 用于连接(默认的算法压缩级别),1 到 22 用于连接,0 用于连接。
zlib
zlib
zstd
uncompressed
有关更多信息,请参阅 第 6.2.8 节,“连接压缩控制”。
这些变量提供有关客户端连接过程中发生的错误的信息。它们仅是全局的,表示跨来自所有主机的连接汇总的错误计数。这些变量跟踪主机缓存未记录的错误(请参阅 第 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
注意由于已知的限制,不会计算在内存映射文件中创建的磁盘上临时表。默认情况下,TempTable 存储引擎溢出机制在内存映射文件中创建内部临时表。此行为由变量控制。
Created_tmp_disk_tables
temptable_use_mmap
已创建的临时文件数。 mysqld
服务器在执行语句时创建的内部临时表的数量。
您可以通过比较创建的内部磁盘上临时表的数量与创建的内部临时表的总数来比较它们。将与的值进行比较。
Created_tmp_disk_tables
Created_tmp_tables
另请参阅 第 10.4.4 节,“MySQL 中的内部临时表使用”。
每次调用语句都会使用内部临时表并增加全局的值。
SHOW STATUS
Created_tmp_tables
服务器用于新连接的 SSL 上下文中活动的的值。如果系统变量已被更改但尚未执行,则此上下文值可能与当前的系统变量值不同。
ssl_ca
ssl_ca
ALTER INSTANCE RELOAD TLS
(此潜在的差异适用于每对相应的上下文相关系统和状态变量。请参阅 加密连接的服务器端运行时配置和监控。)的值也可通过性能模式表获得。请参阅 第 29.12.22.9 节,“tls_channel_status 表”。
Current_tls_
xxx
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
:没有问题,也没有待处理的重做日志容量调整操作。Resizing down
:正在进行缩减调整操作。
增量调整操作是即时的,因此没有待处理的状态。
重做日志 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
键缓存中未使用的块数。可以使用此值来确定键缓存的使用量;请参见key_buffer_size
在 第 7.1.8 节,“服务器系统变量” 中的讨论。在
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
显示已标记为匿名正在进行的事务数。这可以用来确保没有更多的事务正在等待处理。
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.31 节,“复制和临时表”。此变量报告 所有 复制通道的打开临时表的总数。指示是否支持资源组功能。
在某些平台或 MySQL 服务器配置中,资源组不可用或存在限制。特别是,Linux 系统可能需要对某些安装方法进行手动操作。有关详细信息,请参阅 资源组限制。
半同步副本的数量。
已弃用的
Rpl_semi_sync_source_clients
的同义词。Rpl_semi_sync_master_net_avg_wait_time
已弃用的
Rpl_semi_sync_source_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_source_timefunc_failures
的同义词。Rpl_semi_sync_master_tx_avg_wait_time
已弃用的
Rpl_semi_sync_source_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_source_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.3 节,“SHA-256 可插拔身份验证”。Secondary_engine_execution_count
卸载到辅助引擎的查询数量。
用于 HeatWave。请参阅 HeatWave 用户指南。
执行表扫描的联接数量,因为它们不使用索引。如果此值不为 0,则应仔细检查表的索引。
在引用表上使用范围搜索的联接数量。
在第一个表上使用范围的联接数量。即使该值很大,通常也不是什么大问题。
没有键的联接数量,这些联接在每行之后检查键的使用情况。如果此值不为 0,则应仔细检查表的索引。
对第一个表进行完全扫描的联接数量。
已弃用的
Replica_open_temp_tables
的别名。Slave_rows_last_search_algorithm_used
已弃用的
Replica_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 源代码文档中的 Server telemetry metrics service 部分。
显示当前使用遥测进行检测的会话数。这在卸载遥测组件时很有用,以便监控有多少会话阻止了卸载操作。
有关更多信息,请参见 MySQL 源代码文档中的 Server telemetry traces service 部分和 第 35 章,遥测。
服务器遥测跟踪是否受支持。
有关更多信息,请参见 MySQL 源代码文档中的 Server telemetry traces service 部分。
线程缓存中的线程数。
当前打开的连接数。
用于处理连接的线程数量。如果
Threads_created
很大,您可能需要增加thread_cache_size
值。缓存未命中率可以计算为Threads_created
/Connections
。未休眠线程的数量。
此 MySQL 实例使用的 OpenSSL 库的运行时版本。
如果客户端指定,则此会话使用的服务器名称指示 (SNI);否则为空。SNI 是 TLS 协议的扩展(OpenSSL 必须使用 TLS 扩展编译才能使此状态变量正常工作)。MySQL 的 SNI 实现仅代表客户端。
服务器已启动的秒数。
自上次
FLUSH STATUS
语句以来的秒数。