MySQL 服务器维护了许多状态变量,提供了关于其操作的信息。您可以使用 SHOW [GLOBAL | SESSION] STATUS
语句查看这些变量及其值(见 第 15.7.7.39 节,“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
系统变量指定。该值来自后一个文件。 -
Com_
语句计数器变量指示每个xxx
xxx
语句的执行次数。例如,Com_delete
和Com_update
分别计数DELETE
和UPDATE
语句。Com_delete_multi
和Com_update_multi
类似,但适用于DELETE
和UPDATE
语句使用多表语法。所有
Com_stmt_
变量都会增加,即使准备语句参数未知或执行时出错。在其他 words,这些值对应于请求的数量,而不是成功完成的请求数量。例如,因为状态变量在每个服务器启动时初始化并且不跨重启持久化,因此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
这些变量代表准备语句命令。它们的名称引用网络层中使用的
COM_
命令集。在其他 words,他们的值将在执行准备语句 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 节,“连接压缩控制”。
-
当前连接到服务器的压缩级别。该值为 6,表示
zlib
连接(默认zlib
算法压缩级别),1 到 22 表示zstd
连接,0 表示uncompressed
连接。更多信息,请见 第 6.2.8 节,“连接压缩控制”。
-
这些变量提供了客户端连接过程中发生的错误信息。它们是全局的,只代表来自所有主机的连接聚合错误计数。这些变量跟踪了主机缓存(见第 7.1.12.3 节,“DNS 查找和主机缓存”)以外的错误,例如在 TCP 连接之前很早发生的错误,或者不特定于任何特定 IP 地址的错误(例如内存不足条件)。
-
在监听端口上的
accept()
调用期间发生的错误数。 -
由于服务器内部错误而拒绝的连接数,例如无法启动新线程或内存不足条件。
-
Connection_errors_max_connections
由于服务器
max_connections
限制而拒绝的连接数。 -
Connection_errors_peer_address
在搜索连接客户端 IP 地址时发生的错误数。
-
在监听端口上的
select()
或poll()
调用期间发生的错误数。(该操作的失败并不一定意味着客户端连接被拒绝。) -
由
libwrap
库拒绝的连接数。
-
-
对 MySQL 服务器的连接尝试次数(成功或不成功)。
-
服务器在执行语句时创建的内部磁盘临时表的数量。
您可以通过比较
Created_tmp_disk_tables
和Created_tmp_tables
值来比较内部磁盘临时表的数量和总的内部临时表的数量。Note由于已知的限制,
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_ca
值在 TLS 上下文中。这个上下文值可能与当前ssl_ca
系统变量值不同,如果系统变量已经被更改,但尚未执行ALTER INSTANCE RELOAD TLS
来重新配置 TLS 上下文从相关系统变量值并更新相应的状态变量。(这种潜在的值差异适用于每对相应的系统和状态变量。请参阅 服务器端运行时配置和加密连接的监控。)状态变量
Current_tls_
的值也可以通过性能架构xxx
tls_channel_status
表获得。请参阅 第 29.12.22.9 节,“tls_channel_status 表”。 -
服务器用于新连接的活动
ssl_capath
值在 TLS 上下文中。关于该状态变量与其对应系统变量之间的关系的注释,请参阅Current_tls_ca
的描述。 -
服务器用于新连接的活动
ssl_cert
值在 TLS 上下文中。关于该状态变量与其对应系统变量之间的关系的注释,请参阅Current_tls_ca
的描述。 -
服务器用于新连接的活动
ssl_cipher
值在 TLS 上下文中。关于该状态变量与其对应系统变量之间的关系的注释,请参阅Current_tls_ca
的描述。 -
服务器用于新连接的活动
tls_ciphersuites
值在 TLS 上下文中。关于该状态变量与其对应系统变量之间的关系的注释,请参阅Current_tls_ca
的描述。 -
服务器用于新连接的活动
ssl_crl
值在 TLS 上下文中。关于该状态变量与其对应系统变量之间的关系的注释,请参阅Current_tls_ca
的描述。Note当您重新加载TLS上下文时,OpenSSL会重新加载包含CRL(证书撤销列表)的文件作为该过程的一部分。如果CRL文件很大,服务器将分配大量内存(文件大小的十倍),并在加载新实例时将其加倍,而旧实例尚未释放。进程驻留内存不会立即减少,因为大型分配被释放,所以如果您反复发出
ALTER INSTANCE RELOAD TLS
语句,带有大型CRL文件,进程驻留内存使用可能会增长。 -
服务器用于新连接的活动
ssl_crlpath
值。在该状态变量与其对应系统变量之间的关系的注释,请参阅Current_tls_ca
的描述。 -
服务器用于新连接的活动
ssl_key
值。在该状态变量与其对应系统变量之间的关系的注释,请参阅Current_tls_ca
的描述。 -
服务器用于新连接的活动
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 Epoch 的微秒表示。 -
最近一次分配给
dragnet.log_error_filter_rules
系统变量的结果,如果没有这样的分配,则为空。 -
Performance Schema
error_log
表中当前使用的字节数。该值可能会减少,例如,如果新的事件不能容纳直到丢弃旧事件,但新的事件小于旧事件。 -
Performance Schema
error_log
表中的当前事件数。与Error_log_buffered_bytes
一样,该值可能会减少。该变量是在 MySQL 8.0.22 中添加的。
-
从 Performance Schema
error_log
表中删除的事件数,以便为新事件腾出空间。 -
Performance Schema
error_log
表的最后写入时间。 -
服务器刷新表的次数,无论是用户执行
FLUSH TABLES
语句还是由于内部服务器操作。它也会因收到COM_REFRESH
数据包而增加。这与Com_flush
不同,后者表示执行了多少个FLUSH
语句,无论是FLUSH TABLES
、FLUSH LOGS
等。 -
服务器中所有用户连接的内存使用量。系统线程或 MySQL 根账户的内存使用量也包括在总量中,但这些线程或用户不受内存使用限制。只有在
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
(Bug #59550)。 -
Innodb_buffer_pool_bytes_dirty
InnoDB 缓冲池中脏页的当前总字节数。对于压缩表导致缓冲池持有不同大小的页时,使用该变量可以进行更准确的内存使用情况计算,而不是使用
Innodb_buffer_pool_pages_dirty
。 -
Innodb_buffer_pool_pages_dirty
InnoDB 缓冲池中当前的脏页数。
-
Innodb_buffer_pool_pages_flushed
从 InnoDB 缓冲池中刷新页的请求数。
-
InnoDB 缓冲池中的空闲页数。
-
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
可能报告一个超出范围的值(Bug #59550)。 -
Innodb_buffer_pool_pages_total
该
InnoDB
缓冲池 的总大小,以 页 为单位。当使用 压缩表 时,报告的Innodb_buffer_pool_pages_data
值可能大于Innodb_buffer_pool_pages_total
(Bug #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
配置选项的影响。 -
当前挂起的读取次数。
-
当前挂起的写操作数。
-
服务器启动以来读取的数据量(以字节为单位)。
-
总的数据读取次数(OS 文件读取)。
-
总的数据写入次数。
-
到目前为止写入的数据量,以字节为单位。
-
执行的双写操作次数。见第 17.11.1 节,“InnoDB 磁盘 I/O”。
-
指示服务器是否使用原子指令构建。
-
日志缓冲区太小,需要等待刷新的次数。
-
InnoDB 重做日志的写入请求次数。
-
InnoDB 重做日志文件的物理写入次数。
-
InnoDB 当前打开的文件数。
-
对 InnoDB 重做日志文件执行的
fsync()
写入次数。 -
对 InnoDB 重做日志文件的挂起
fsync()
操作次数。 -
对 InnoDB 重做日志文件的挂起写入次数。
-
写入到 InnoDB 重做日志文件的字节数。
-
InnoDB
页大小(默认 16KB)。许多值以页为单位计数;页大小使它们易于转换为字节。 -
由
InnoDB
表操作创建的页数。 -
从
InnoDB
缓冲池中读取的页数,由InnoDB
表操作读取。 -
由
InnoDB
表操作写入的页数。 -
redo 日志记录是否启用或禁用。请参阅 禁用 Redo 日志记录。
-
Innodb_redo_log_capacity_resized
所有 redo 日志文件的总 redo 日志容量(以字节为单位),在最后一次完成的容量调整操作后。该值包括普通和备用 redo 日志文件。
如果没有挂起的降低操作,
Innodb_redo_log_capacity_resized
应该等于innodb_redo_log_capacity
设置。resize 上操作是即时的。有关信息,请参阅 第 17.6.5 节,“Redo 日志”。
-
Innodb_redo_log_checkpoint_lsn
redo 日志检查点 LSN。有关信息,请参阅 第 17.6.5 节,“Redo 日志”。
-
当前 LSN 代表 redo 日志缓冲区中的最后写入位置。
InnoDB
先将数据写入 redo 日志缓冲区,然后请求操作系统将数据写入当前 redo 日志文件。有关信息,请参阅 第 17.6.5 节,“Redo 日志”。 -
Innodb_redo_log_flushed_to_disk_lsn
flush 到磁盘的 LSN。
InnoDB
首先将数据写入 redo 日志,然后请求操作系统将数据 flush 到磁盘。flush 到磁盘的 LSN 代表 redo 日志中最后一个已知的位置,InnoDB
确认已经 flush 到磁盘。有关信息,请参阅 第 17.6.5 节,“Redo 日志”。 -
以字节为单位的数据大小值,表示 redo 日志中使用的数据范围,从 redo 日志使用的最老块到最新写入的块。有关信息,请参阅 第 17.6.5 节,“Redo 日志”。
-
所有 redo 日志文件当前在磁盘上占用的总空间(以字节为单位),不包括备用 redo 日志文件。有关信息,请参阅 第 17.6.5 节,“Redo 日志”。
-
redo 日志是否为只读。
-
redo日志resize状态,指示当前redo日志容量resize机制的状态。可能的值包括:
-
OK
:没有问题,也没有pending redo日志容量resize操作。 -
Resizing down
:resize down操作正在进行中。
resize up操作是即时的,因此没有pending状态。
-
-
redo日志UUID。
-
当前等待行锁的操作数目在
InnoDB
表上。 -
获取
InnoDB
表的行锁的总时间,以毫秒为单位。 -
获取
InnoDB
表的行锁的平均时间,以毫秒为单位。 -
获取
InnoDB
表的行锁的最大时间,以毫秒为单位。 -
InnoDB
表上的操作需要等待行锁的次数。 -
从
InnoDB
表中删除的行数。 -
插入到
InnoDB
表中的行数。 -
从
InnoDB
表中读取的行数。 -
在
InnoDB
表中更新的行数的估算值。Note该值不一定是100%准确的。要获取准确(但更昂贵)的结果,请使用
ROW_COUNT()
。 -
从系统创建的模式中的
InnoDB
表中删除的行数。 -
插入到系统创建的模式中的
InnoDB
表中的行数。 -
从系统创建的模式中的
InnoDB
表中读取的行数。 -
Innodb_truncated_status_writes
从
SHOW ENGINE INNODB STATUS
语句输出被截断的次数。 -
Innodb_undo_tablespaces_active
活动撤销表空间的数量。包括隐式(
InnoDB
-created)和显式(用户创建的)撤销表空间。有关撤销表空间的信息,请参阅第 17.6.3.4 节,“撤销表空间”。 -
Innodb_undo_tablespaces_explicit
用户创建的撤销表空间的数量。有关撤销表空间的信息,请参阅第 17.6.3.4 节,“撤销表空间”。
-
Innodb_undo_tablespaces_implicit
由
InnoDB
创建的撤销表空间的数量。两个默认的撤销表空间是在 MySQL 实例初始化时由InnoDB
创建的。有关撤销表空间的信息,请参阅第 17.6.3.4 节,“撤销表空间”。 -
撤销表空间的总数量。包括隐式(
InnoDB
-created)和显式(用户创建的)撤销表空间,活动和非活动的。有关撤销表空间的信息,请参阅第 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,表示尚未编译查询。
Last_query_cost
具有会话作用域。该变量显示了具有多个查询块的查询的成本,总和每个查询块的成本估算,估算非缓存子查询的执行次数,并将这些查询块的成本乘以子查询执行次数。
-
查询优化器在执行计划构建中为前一个查询所做的迭代次数。
Last_query_partial_plans
具有会话作用域。 -
尝试连接锁定的用户账户的次数。有关账户锁定和解锁的信息,请参阅 第 8.2.20 节,“账户锁定”。
-
执行超时被超过的
SELECT
语句的数量。 -
设置了非零执行超时的
SELECT
语句的数量。这包括包含非零MAX_EXECUTION_TIME
优化器提示的语句,以及执行时max_execution_time
系统变量非零的语句。 -
尝试设置执行超时失败的
SELECT
语句的数量。 -
服务器启动以来同时使用的最大连接数。
-
达到当前值的
Max_used_connections
的时间。 -
该状态变量已弃用(因为不支持延迟插入);预计在未来版本中删除。
-
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 库函数)打开的文件数。服务器的某些部分打开文件不使用该函数,不会增加计数。 -
缓存的表定义数。
-
已打开的表数。如果
已打开的表数
很大,可能是table_open_cache
值太小。 -
性能模式_
xxx
性能模式状态变量列在 第 29.16 节,“性能模式状态变量”。这些变量提供了关于无法加载或创建的仪器信息,这是由于内存约束所致。
-
当前的已准备语句数。(最大语句数由
max_prepared_stmt_count
系统变量指定。) -
服务器执行的语句数。这包括存储程序中的语句执行,不同于
问题数
变量。它不包括COM_PING
或COM_STATISTICS
命令。本节开头的讨论表明如何将该语句计数状态变量与其他类似变量相关联。
-
服务器执行的语句数。这只包括客户端发送到服务器的语句,不包括存储程序中的语句执行,不同于
查询数
变量。它不包括COM_PING
、COM_STATISTICS
、COM_STMT_PREPARE
、COM_STMT_CLOSE
或COM_STMT_RESET
命令。本节开头的讨论表明如何将该语句计数状态变量与其他类似变量相关联。
-
副本打开的临时表数
显示副本 SQL 线程当前打开的临时表数。如果该值大于零,不安全关闭副本;见 第 19.5.1.31 节,“复制和临时表”。该变量报告所有复制通道的打开临时表总数。 -
指示资源组功能是否受支持。
在某些平台或 MySQL 服务器配置中,资源组不可用或具有限制。特别是,Linux 系统可能需要手动步骤来安装某些方法。有关详细信息,请参阅 资源组限制。
-
半同步副本的数量。
已弃用,换用
Rpl_semi_sync_source_clients
。 -
源等待副本回复的总次数。
已弃用,换用
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_source_tx_waits
。 -
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(receiver)线程正在运行,则为
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
系统变量指定。有关
sha256_password
的信息,请参阅第 8.4.1.3 节,“SHA-256 Pluggable Authentication”。 -
Secondary_engine_execution_count
卸载到辅助引擎的查询数。
用于 HeatWave。请参阅MySQL 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
的次数。 -
对于内存映射实现的日志,该变量指示服务器启动以来日志的最大页面使用次数。如果
Tc_log_max_pages_used
和Tc_log_page_size
的乘积始终远小于日志大小,则日志大小太大,可以减小。(日志大小由--log-tc-size
选项设置。)该变量未使用:它对二进制日志基于恢复无用,对内存映射恢复日志方法不使用,除非支持XA事务的存储引擎数量大于一个。(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 协议的扩展(OpenSSL 必须使用 TLS 扩展来编译以使此状态变量生效)。MySQL 实现的 SNI 仅表示客户端。
-
服务器已经运行的秒数。
-
自最后一次
FLUSH STATUS
语句以来经过的秒数。