mysql运维语句
1、检查表空间状态,包括行数、数据大小以及索引大小
SELECT table_schema AS 'Database',table_name AS 'Table',engine AS 'Engine',table_rows AS 'Rows',round(data_length/1024/1024,2) AS 'Data Length (MB)',round(index_length/1024/1024,2) AS 'Index Length (MB)'
FROM information_schema.tables
WHERE engine = 'InnoDB';
2、显示 InnoDB 状态,包括缓冲池、事务、锁等信息
SHOW ENGINE INNODB STATUS;
3、查看 MySQL 的变量设置
SHOW GLOBAL VARIABLES LIKE '%innodb%';
4、查看当前正在运行的线程,这条命令显示了当前连接到 MySQL 服务器的所有线程及其执行的查询。这对于识别长时间运行的查询或锁问题很有用。
SHOW FULL PROCESSLIST;
5、查看 MySQL 服务器的二进制日志状态
SHOW MASTER STATUS;
6、连接相关
(1)统计当前连接数
SELECT COUNT(*) FROM information_schema.PROCESSLIST;
(2)查看最大允许连接数
SHOW VARIABLES LIKE 'max_connections';
(3)监控连接相关状态变量
SHOW GLOBAL STATUS LIKE 'Connections';
SHOW GLOBAL STATUS LIKE 'Threads_connected';
SHOW GLOBAL STATUS LIKE 'Aborted_connects';
Connections
: 自服务器启动以来收到的连接请求次数。Threads_connected
: 当前打开的连接数量。Aborted_connects
: 尝试连接到服务器失败的次数。
7、检查运行时间较长的sql
这段查询尝试结合语句历史记录和阶段当前事件,以识别出执行时间较长的查询。
SELECT t1.THREAD_ID, t1.SQL_TEXT, t2.EVENT_ID, t2.EVENT_NAME, t2.TIMER_WAIT,t2.WORK_COMPLETED,t2.WORK_ESTIMATED
FROM performance_schema.events_statements_history AS t1
JOIN performance_schema.events_stages_current AS t2 ON t1.THREAD_ID = t2.THREAD_ID
WHERE t1.SQL_TEXT IS NOT NULL
ORDER BY t2.TIMER_WAIT DESC;
查找正在执行语句的耗时
SELECT t.thread_id, t.processlist_user, t.processlist_host, s.sql_text, s.timer_wait
FROM performance_schema.threads AS t
JOIN performance_schema.events_statements_current AS s ON t.thread_id = s.thread_id
WHERE s.sql_text IS NOT NULL
ORDER BY s.timer_wait DESC;
慢查询日志参数
SHOW VARIABLES LIKE 'slow_query_log%';