如何监控和优化慢查询?
如何监控和优化慢查询?
监控:
开启慢查询日志(会将查过设定执行时间的sql语句记录到指定的文件)
-- 开启慢查询日志
SET GLOBAL slow_query_log = ON;-- 设置阈值(比如超过 1 秒的 SQL 都算慢)
SET GLOBAL long_query_time = 1;-- 查看当前配置
SHOW VARIABLES LIKE '%slow_query%';
配置如上以后,MySQL 就会把执行超过 1 秒的语句记录到 slow_query_log_file
指定的文件里(一般在数据目录下,文件名类似 hostname-slow.log
)。
优化:
使用explain来分析慢查询语句,查看使用的索引,扫描的行数等。
- 如果索引缺失,添加新索引
- 避免使用select*,仅选择需要的字段
- 让联合索引尽量匹配最左前缀