MySQL调优 - 汇总
汇总下平时开发中对mysql的调优过程。
(一)mysql server的调优
首先需要知道哪些配置可以调整,通过 show variables可以查看配置项。
可以通过set方式更改配置项:
方式一:(例子)set long_query_time=1;
但仅对当前session生效,新连接更改无作用,如下
方式二:(例子)set global long_query_time=1;
之后新建连接的long_query_time更新为1s。
方式三:配置到my.cnf文件中再重启mysql服务(永久生效)
[mysqld]下增加或者更新参数,比如开启慢查询日志功能:
slow_query_log=1
slow_query_log_file=/var/lib/mysql/localhost-slow.log
long_query_time=3
log_output=FILE
回到调优,mysql server的配置不专业,也就调整下sort_buffer_size(用于排序)和 join_buffer_size(用于join,bnlj算法)
(二)sql调优
针对sql语句的调优,涉及比较杂,罗列如下:
1. "select * " 尽量换成select 必要字段
2. 批量insert/update并分段commit
3. delete all可以用truncate替换
4. join表不超过3个且用小表驱动大表
5. 频繁查询字段建立索引
6. 时间字段类型,若不考虑时区使用datetime否则timestamp
7. 未完待续
(三)索引调优
1. 先看有没有创建索引(show create table xxx)
2. 再看索引有没有生效(explain select)
若想看索引的选择过程,可以开启optimizer_trace
(四)慢查询调优
1. 开启慢查询日志
set global slow_query_log=1;
2. 设置慢查询阈值
set global long_query_time=2;
3. 分析慢查询日志
可以使用mysqldumpslow(windows环境需要安装perl,再运行perl mysqldumpslow ...)
比如:
1. 得到返回记录集最多的前10个SQL:mysqldumpslow -s r -t 10 /var/lib/mysql/localhost-slow.log 2. 得到访问次数最多的前10个SQL:mysqldumpslow -s c -t 10 /var/lib/mysql/localhost-slow.log 3. 得到按照时间排序的前10条里面含有左连接的查询语句:mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/localhost-slow.log 另外,建议在使用这些命令时结合 | more 使用,否则有可能出现爆屏情况:mysqldumpslow -s r -t 10 /var/lib/mysql/localhost-slow.log | more
或者使用pt工具,参考pt-query-digest。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
2014-05-06 JAVA Hashmap不能用基本的数据类型