共计 10004 个字符,预计需要花费 26 分钟才能阅读完成。
这篇文章主要介绍了 MySQL 查看数据库状态命令是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇 MySQL 查看数据库状态命令是什么文章都会有所收获,下面我们一起来看看吧。
前言
数据查询语言(DQL: Data Query Language):其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字 SELECT 是 DQL(也是所有 SQL)用得最多的动词,其他 DQL 常用的保留字有 WHERE,ORDER BY,GROUP BY 和 HAVING。这些 DQL 保留字常与其它类型的 SQL 语句一起使用。
show status
使用 SHOW STATUS 语句能够获取 MySQL 服务器的一些状态信息,这些状态信息主要是 MySQL 数据库的性能参数。SHOW STATUS 语句的语法格式如下:
SHOW [SESSION | GLOBAL] STATUS LIKE status_name
其中,SESSION 表示获取当前会话级别的性能参数,GLOBAL 表示获取全局级别的性能参数,并且 SESSION 和 GLOBAL 可以省略,如果省略不写,默认为 SESSION。status_name 表示查询的参数值。熟练掌握这些参数的使用,能够更好地了解 SQL 语句的执行频率。SHOW STATUS 语句支持的参数值
Not_flushed_key_blocks 在键缓存中已经改变但是还没被清空到磁盘上的键块。Not_flushed_delayed_rows
mysql show status;
+-----------------------------------------------+--------------------------------------------------+
| Variable_name | Value |
+-----------------------------------------------+--------------------------------------------------+
| Aborted_clients | 1 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量 |
| Aborted_connects | 0 尝试已经失败的 MySQL 服务器的连接的次数 |
| Binlog_cache_disk_use | 0 该状态表示有多少个事务使用了临时文件 |
| Binlog_cache_use | 1 有多少个事物使用了 ache_size 来缓存未提交的事物日志 |
| Binlog_stmt_cache_disk_use | 0 |
| Binlog_stmt_cache_use | 0 |
| Bytes_received | 248 从客户处已经接收到的字节数 |
| Bytes_sent | 185 已经发送给所有客户的字节数 |
| Com_statement | 0 每一个变量语句对应的次数 |
| Connections | 41472 试图连接 MySQL 服务器的次数 |
| Created_tmp_disk_tables | 0 服务器执行语句时在硬盘上自动创建的临时表的数量 |
| Created_tmp_files | 5 mysqld 创建的临时文件个数 |
| Created_tmp_tables | 0 当执行语句时,已经被创造了的隐含临时表的数量 |
| Delayed_errors | 0 用 INSERT DELAYED 写入的发生某些错误 (可能重复键值) 的行数 |
| Delayed_insert_threads | 0 正在使用的延迟插入处理器线程的数量 |
| Delayed_writes | 0 用 INSERT DELAYED 写入的行数 |
| Flush_commands | 17 执行 FLUSH 命令的次数 |
| Handler_commit | 0 内部 COMMIT 命令的个数 |
| Handler_delete | 0 请求从一张表中删除行的次数 |
| Handler_discover | 0 MySQL 服务器可以问 NDB CLUSTER 存储引擎是否知道某一名字的表 |
| Handler_external_lock | 0 |
| Handler_mrr_init | 0 |
| Handler_prepare | 0 两阶段提交操作准备阶段的计数器 |
| Handler_read_first | 0 请求读入表中第一行的次数 |
| Handler_read_key | 0 请求数字基于键读行 |
| Handler_read_last | 0 |
| Handler_read_next | 0 请求读入基于一个键的一行的次数 |
| Handler_read_prev | 0 按照索引的顺序读取前面一行数据的请求的个数 |
| Handler_read_rnd | 0 请求读入基于一个固定位置的一行的次数 |
| Handler_read_rnd_next | 0 读取数据文件中下一行数据的请求的个数 |
| Handler_rollback | 0 内部 ROLLBACK 命令的数量 |
| Handler_savepoint | 0 在一个存储引擎放置一个保存点的请求数量 |
| Handler_savepoint_rollback | 0 在一个存储引擎的要求回滚到一个保存点数目 |
| Handler_update | 0 请求更新表中一行的次数 |
| Handler_write | 0 请求向表中插入一行的次数 |
| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started |
| Innodb_buffer_pool_load_status | Buffer pool(s) load completed at 220224 21:04:35 |
| Innodb_buffer_pool_resize_status | |
| Innodb_buffer_pool_pages_data | 32422 |
| Innodb_buffer_pool_bytes_data | 531202048 |
| Innodb_buffer_pool_pages_dirty | 0 |
| Innodb_buffer_pool_bytes_dirty | 0 |
| Innodb_buffer_pool_pages_flushed | 235 |
| Innodb_buffer_pool_pages_free | 97929 |
| Innodb_buffer_pool_pages_misc | 705 |
| Innodb_buffer_pool_pages_total | 131056 |
| Innodb_buffer_pool_read_ahead_rnd | 0 |
| Innodb_buffer_pool_read_ahead | 23377 |
| Innodb_buffer_pool_read_ahead_evicted | 0 |
| Innodb_buffer_pool_read_requests | 330362716 InnoDB 已经完成的逻辑读请求数 |
| Innodb_buffer_pool_reads | 9004 |
| Innodb_buffer_pool_wait_free | 0 |
| Innodb_buffer_pool_write_requests | 3783 |
| Innodb_data_fsyncs | 47 |
| Innodb_data_pending_fsyncs | 0 |
| Innodb_data_pending_reads | 0 |
| Innodb_data_pending_writes | 0 |
| Innodb_data_read | 530813440 |
| Innodb_data_reads | 33379 |
| Innodb_data_writes | 279 |
| Innodb_data_written | 4193792 至此已经写入的数据量(字节) |
| Innodb_dblwr_pages_written | 20 |
| Innodb_dblwr_writes | 10 |
| Innodb_log_waits | 0 我们必须等待的时间 |
| Innodb_log_write_requests | 9 日志写请求数 |
| Innodb_log_writes | 15 向日志文件的物理写数量 |
| Innodb_os_log_fsyncs | 22 向日志文件完成的 fsync()写数量 |
| Innodb_os_log_pending_fsyncs | 0 挂起的日志文件 fsync()操作数量 |
| Innodb_os_log_pending_writes | 0 挂起的日志文件写操作 |
| Innodb_os_log_written | 12288 写入日志文件的字节数 |
| Innodb_page_size | 16384 编译的 InnoDB 页大小(默认 16KB) |
| Innodb_pages_created | 42 创建的页数 |
| Innodb_pages_read | 32380 读取的页数 |
| Innodb_pages_written | 235 写入的页数 |
| Innodb_row_lock_current_waits | 0 当前等待的待锁定的行数 |
| Innodb_row_lock_time | 0 行锁定花费的总时间,单位毫秒 |
| Innodb_row_lock_time_avg | 0 行锁定的平均时间,单位毫秒 |
| Innodb_row_lock_time_max | 0 行锁定的最长时间,单位毫秒 |
| Innodb_row_lock_waits | 0 一行锁定必须等待的时间数 |
| Innodb_rows_deleted | 6 从 InnoDB 表删除的行数 |
| Innodb_rows_inserted | 2193 插入到 InnoDB 表的行数 |
| Innodb_rows_read | 351814064 从 InnoDB 表读取的行数 |
| Innodb_rows_updated | 0 InnoDB 表内更新的行数 |
| Innodb_num_open_files | 136 |
| Innodb_truncated_status_writes | 0 |
| Innodb_available_undo_logs | 128 |
| Key_blocks_not_flushed | 0 键缓存内已经更改但还没有清空到硬盘上的键的数据块数量 |
| Key_blocks_unused | 53585 键缓存内未使用的块数量 |
| Key_blocks_used | 3 用于关键字缓存的块的数量 |
| Key_read_requests | 6 请求从缓存读入一个键值的次数 |
| Key_reads | 3 从磁盘物理读入一个键值的次数 |
| Key_write_requests | 0 请求将一个关键字块写入缓存次数 |
| Key_writes | 0 将一个键值块物理写入磁盘的次数 |
| Last_query_cost | 0.000000 |
| Last_query_partial_plans | 0 |
| Locked_connects | 0 |
| Max_execution_time_exceeded | 0 |
| Max_execution_time_set | 0 |
| Max_execution_time_set_failed | 0 |
| Max_used_connections | 330 同时使用的连接的最大数目 |
| Max_used_connections_time | 2022-02-24 22:07:44 |
| Not_flushed_delayed_rows | 0 在 INSERT DELAY 队列中等待写入的行的数量 |
| Ongoing_anonymous_transaction_count | 0 |
| Open_files | 5 打开文件的数量 |
| Open_streams | 0 打开流的数量(主要用于日志记载) |
| Open_table_definitions | 11 缓存的.frm 文件数 |
| Open_tables | 78 打开表的数量 |
| Opened_files | 7925 系统打开过的文件总数 |
| Opened_table_definitions | 0 已缓存的.frm 文件数 |
| Opened_tables | 0 已经打开的表的数量 |
| Qcache_free_blocks | 1 查询缓存内自由内存块的数量 |
| Qcache_free_memory | 1031832 用于查询缓存的自由内存的数量 |
| Qcache_hits | 0 查询缓存被访问的次数 |
| Qcache_inserts | 0 加入到缓存的查询数量 |
| Qcache_lowmem_prunes | 0 由于内存较少从缓存删除的查询数量 |
| Qcache_not_cached | 236889 非缓存查询数 |
| Qcache_queries_in_cache | 0 登记到缓存内的查询的数量 |
| Qcache_total_blocks | 1 查询缓存内的总块数 |
| Queries | 561204 被服务器执行的语句个数 |
| Questions | 2 发往服务器的查询的数量 |
| Select_full_join | 0 |
| Select_full_range_join | 0 |
| Select_range | 0 |
| Select_range_check | 0 |
| Select_scan | 0 |
| Slave_open_temp_tables | 0 |
| Slow_launch_threads | 0 |
| Slow_queries | 0 要花超过 long_query_time 时间的查询数量 |
| Sort_merge_passes | 0 |
| Sort_range | 0 |
| Sort_rows | 0 |
| Sort_scan | 0 |
| Ssl_*** | 0 用于 SSL 连接的变量 |
| Table_locks_immediate | 123 立即获得的表的锁的次数 |
| Table_locks_waited | 0 不能立即获得的表的锁的次数 |
| Tc_log_max_pages_used | 0 日志使用的最大页数 |
| Tc_log_page_size | 0 用于 XA 恢复日志的内存映射实现的页面大小 |
| Tc_log_page_waits | 0 对于恢复日志的内存映射实现 |
| Threads_cached | 2 线程的缓存值 |
| Threads_connected | 328 当前打开的连接的数量 |
| Threads_created | 330 创建用来处理连接的线程数 |
| Threads_running | 2 不在睡眠的线程数量 |
| Uptime | 42686 服务器工作了多少秒 |
| Uptime_since_flush_status | 42686 最近一次使用 FLUSH STATUS 的时间(以秒为单位)|
# 状态信息查询语句
-- 查看试图连接到 MySQL(不管是否连接成功)的连接数
show status like connections
-- 查看线程缓存内的线程的数量。show status like threads_cached
-- 查看当前打开的连接的数量。show status like threads_connected
-- 查看查询时间超过 long_query_time 秒的查询的个数。show status like slow_queries
-- 查看线程数
show status like Threads%
Threads_connected : 这个数值指的是打开的连接数.
Threads_running :这个数值指的是激活的连接数,这个数值一般远低于 connected 数值.
Threads_connected 跟 show processlist 结果相同,表示当前连接数。准确的来说,Threads_running 是代表当前并发数
Threads_created 表示创建过的线程数,通过查看 Threads_created 就可以查看 MySQL 服务器的进程状态。(MySQL 服务器的线程数需要在一个合理的范围之内,这样才能保证 MySQL 服务器健康平稳地运行)如果我们在 MySQL 服务器配置文件中设置了 thread_cache_size,当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)。Threads_created 表示创建过的线程数,如果发现 Threads_created 值过大的话,表明 MySQL 服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中 thread_cache_size 值,查询服务器 thread_cache_size 的值: show variables like thread_cache_size
# 通常 mysql 的最大连接数默认是 100, 最大可以达到 16384。show variables like %max_connection% 查看最大连接数
set global max_connections=200
SET GLOBAL innodb_lru_scan_depth=256;
影响对 InnoDB 缓冲池进行刷新操作的算法和启发式的参数。性能专家对调优 I / o 密集型工作负载感兴趣。它指定了每个缓冲池实例,在缓冲池 LRU 页面下列出页面清洁线程扫描以查找要刷新的脏页的距离。这是每秒执行一次的后台操作。` 小于默认值的设置通常适用于大多数工作负载 `。如果值远高于必要值,可能会影响性能。只有在典型工作负载下有空闲 I / O 容量时,才考虑增加该值。相反,如果写密集的工作负载使 I / O 容量饱和,则减少该值,特别是在使用大型缓冲池的情况下。调优 innodb_lru_scan_depth 时,从一个较低的值开始,向上配置,目标是很少看到零空闲页面。另外,当改变缓冲池实例数时,可以考虑调整 innodb_lru_scan_depth,因为 innodb_lru_scan_depth * innodb_buffer_pool_instances 定义了页面清理线程每秒执行的工作量。
show processlist;
show full processlist; 或 show processlist(默认只列出前 100); // 显示哪些线程正在运行
id #ID 标识,要 kill 一个语句的时候很有用
user # 当前连接用户
host # 显示这个连接从哪个 ip 的哪个端口上发出
db # 数据库名
command # 连接状态,一般是休眠(sleep),查询(query),连接(connect)time # 连接持续时间,单位是秒
state # 显示当前 sql 语句的状态
info # 显示这个 sql 语句
show slave status \G;
MySQL 同步功能由 3 个线程 (master 上 1 个,slave 上 2 个) 来实现。执行 DE START SLAVEDE 语句后,slave 就创建一个 I / O 线程。I/ O 线程连接到 master 上,并请求 master 发送二进制日志中的语句。master 创建一个线程来把日志的内容发送到 slave 上。这个线程在 master 上执行 DE SHOW PROCESSLISTDE 语句后的结果中的 DE Binlog DumpDE 线程便是。slave 上的 I / O 线程读取 master 的 DE Binlog DumpDE 线程发送的语句,并且把它们拷贝到其数据目录下的中继日志 (relay logs) 中。第三个是 SQL 线程,slave 用它来读取中继日志,然后执行它们来更新数据。
用于提供有关从属服务器线程的关键参数的信息
Slave_IO_State:ID 线程的状态,如果 master 的所有变更都已经收到这个状态会显示为 Waiting for master to send event
Master_Log_File:IO 线程正在读取的 master binlog 文件名
Read_Master_Log_Pos:IO 线程已经读完的位置
Relay_Master_Log_File:SQL 线程正在读取的 master binlog 文件名
Exec_Master_Log_Pos:SQL 线程已经读取完的位置
Slave_IO_State:SHOW PROCESSLIST 输出的 State 字段的拷贝。SHOW PROCESSLIST 用于从属 I / O 线程。如果线程正在试图连接到主服务器,正在等待来自主服务器的时间或正在连接到主服务器等,本语句会通知您
日志
日志类型写入日志的信息错误日志记录在启动,运行或停止 mysqld 时遇到的问题通用查询日志记录建立的客户端连接和执行的语句二进制日志记录更改数据的语句中继日志从复制主服务器接收的数据更改慢查询日志记录所有执行时间超过 long_query_time 秒的所有查询或不使用索引的查询 DDL 日志(元数据日志)元数据操作由 DDL 语句执行
# mysqlbinlog [options] logfile1 logfile2 ...
mysqlbinlog 的选项
-d, --database=name 仅显示指定数据库的转储内容。-o, --offset=# 跳过前 N 行的日志条目。-r, --result-file=name 将输入的文本格式的文件转储到指定的文件。-R, --read-from-remote-server 指示 mysqlbinlog 命令从远程服务器读取日志文件
-s, --short-form 使用简单格式(只显示 SQL 语句)。--server-id 指定 mysql 服务器,确保是由给定服务器 id 的 mysql 服务器所生成的日志。--set-charset=name 在转储文件的开头增加 SET NAMES character_set 语句。--start-datetime=name 转储日志的起始时间。--stop-datetime=name 转储日志的截止时间。-j, --start-position=# 转储日志的起始位置。--stop-position=# 转储日志的截止位置。-v, --verbose 用行事件重构伪 sql 语句。
-vv 显示 sql 语句加字段类型。
查看日志
mysqlbinlog --no-defaults --database=qq --start-datetime= 2022-02-11 18:00:00 --stop-datetime= 2022-02-11 20:00:00 --base64-output=decode-rows -v mysql-bin.000052 18-20.log
增加 –base64-output=decode-rows ndash;v 选项解析 (目的: 变成人类可以读懂的 SQL 语句了)
使用 base64-output 选项,可以控制输出语句何时是输出 base64 编码的 BINLOG 语句。以下是 base64 输出设置的可能值:
never // 它将在输出中显示 base64 编码的 BINLOG 语句
always // 只要有可能,它将只显示 BINLOG 项
decode-rows // 将把基于行的事件解码成一个 SQL 语句
auto(默认) // 仅为某些事件类型打印 BINLOG 项,例如基于行的事件和格式描述事件
关于“MySQL 查看数据库状态命令是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“MySQL 查看数据库状态命令是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道。