MySQL慢查询优化
MySQL慢查询优化
一、慢查询开启
slow_query_log 慢查询开启状态
slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)
long_query_time 查询超过多少秒才记录
查看参数配置情况:
show variables like 'slow_query_log%';
1. 全局变量设置
set global slow_query_log='ON';
2. 配置文件设置
[mysqld]
slow_query_log = ON
3. 日志分析工具
生产环境中,如果要手工分析日志,查找、分析SQL,显然是个体力活,这个时候就需要日志分析工具。
1)mysqldumpslow
这是MySQL自带的工具,主要作用是对 MySQL 的慢查询日志进行分析,并输出查询统计信息。它根据日志中的 SQL 语句进行汇总,展示出哪些查询的执行时间最长、执行次数最多,或者是可能存在优化空间的查询。
2. pt-query-digest
它可以从logs、processlist、和 tcpdump来分析 MySQL 的状况,logs包括 slow log、general log、binlog。也可以把分析结果输出到文件中,或则把文件写到表中。分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。
二、慢sql优化思路
1. 优化索引
通过explain去分析索引
比如不加索引,索引不生效、不合理等,这时候,我们可以优化索引
2. sql 语句
- 避免select *,只取所需列
- 分页查询,一次查询数据不要过多,offset limit
- 深度分页的问题,考虑基于主键去分页
- 事务粒度
3. 分库分表
单表数据量过大的情况下,考虑分库分表
也可以考虑将将部分数据归档
4. 数据库连接池
根据应用的负载情况,合理增加数据库并发连接数
5. 分担查询压力
1)改用ES查询
2)使用redis缓存
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2018-11-13 Laravel 5.7 使用 PHP artisan migrate 的问题