【MySQL实用查询合集】整理高频运维SQL,帮你快速定位数据库问题!涵盖表空间占用查询、主从同步状态检测、慢查询统计、连接分析等7大场景。收藏这篇,让数据库调优更高效
1. 查询磁盘空间占用情况
-
查询表占用空间:
sqlSELECT table_schema AS '数据库', table_name AS '表名', table_rows AS '记录数', ROUND(data_length / 1024 / 1024, 2) AS '数据大小(MB)', ROUND(index_length / 1024 / 1024, 2) AS '索引大小(MB)', ROUND((data_length + index_length) / 1024 / 1024, 2) AS '总大小(MB)' FROM information_schema.tables WHERE table_schema = '数据库名称' ORDER BY (data_length + index_length) DESC;
查看指定数据库中各表的空间占用。
-
查询数据库总占用空间:
sqlSELECT table_schema AS '数据库', ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS '总大小(MB)' FROM information_schema.tables GROUP BY table_schema ORDER BY SUM(data_length + index_length) DESC;
汇总每个数据库的总空间占用。
-
查询分区表的分区大小:
sqlSELECT table_schema AS '数据库', table_name AS '表名', partition_name AS '分区名', table_rows AS '记录数', ROUND(data_length / 1024 / 1024, 2) AS '数据大小(MB)', ROUND(index_length / 1024 / 1024, 2) AS '索引大小(MB)', ROUND((data_length + index_length) / 1024 / 1024, 2) AS '总大小(MB)' FROM information_schema.partitions WHERE table_schema = '数据库名称' AND table_name = '表名';
查看分区表的每个分区大小。
2. 查询主从同步状态
-
检查从库同步状态(在从库执行):
sqlSHOW SLAVE STATUS\G
显示从库的复制状态,关注以下关键字段:
-
Slave_IO_Running
: 是否正在读取主库的 binlog(应为Yes
)。 -
Slave_SQL_Running
: 是否正在应用 binlog(应为Yes
)。 -
Seconds_Behind_Master
: 从库落后主库的秒数(0 表示无延迟)。 -
Last_IO_Error
/Last_SQL_Error
: 复制错误信息。
-
-
检查主库状态(在主库执行):
sqlSHOW MASTER STATUS;
显示主库的 binlog 文件名和位置,用于配置从库或排查问题。
3. 查询性能和运行状态
-
查询慢查询:
sqlSHOW GLOBAL STATUS LIKE 'Slow_queries';
查看慢查询次数(需启用慢查询日志)。
4. 查询连接和会话
-
查看当前连接:
sqlSHOW PROCESSLIST;
显示当前所有连接的详细信息,包括用户、状态、执行的 SQL 等。
-
统计连接数:
sqlSELECT user, COUNT(*) AS connection_count FROM information_schema.processlist GROUP BY user;
按用户统计当前连接数。
-
查看最大连接数和使用情况:
sqlSHOW VARIABLES LIKE 'max_connections'; SHOW GLOBAL STATUS LIKE 'Threads_connected';
检查最大连接数和当前连接数。
5. 查询索引和表结构
-
查看表索引:
sqlSHOW INDEX FROM table_name;
显示指定表的索引信息。
-
查看表结构:
sqlDESCRIBE table_name;
或:
sqlSHOW CREATE TABLE table_name\G
查看表的字段、类型、约束等详细信息。
6. 查询日志和配置
-
查看慢查询日志配置:
sqlSHOW VARIABLES LIKE 'slow_query_log%'; SHOW VARIABLES LIKE 'long_query_time';
检查慢查询日志是否启用及阈值。
-
查看二进制日志状态:
sqlSHOW BINARY LOGS;
列出当前二进制日志文件及其大小。
-
查看通用查询日志:
sqlSHOW VARIABLES LIKE 'general_log%';
检查通用查询日志是否启用。
7. 其他运维相关查询
-
查看用户权限:
sqlSELECT user, host, authentication_string FROM mysql.user;
查看数据库用户及其认证信息。
-
查看表状态:
sqlSHOW TABLE STATUS FROM 数据库名称;
显示表的详细信息,如存储引擎、行数、创建时间等。
本文由博客一文多发平台 OpenWrite 发布!