7.SQL优化之慢日志
思路:
对于慢sql语句优化,一般会按照下面的几个思路进行优化:开启慢日志,设置超过几秒为慢sql语句(可以视情况),抓取sql语句,通过explain查询执行计划,对慢sql语句分析,创建索引并调整语句,再看执行计划,对比调整结果
慢日志:
慢日志记录不仅有select语句,还有insert/delete/update等DML操作
- slow_query_log:表示是否开启慢查询日志
- slow_query_log_file:当使用文件存储慢查询日志时(log_output设置为“FILE”或者“FILE TABLE”时),指定慢日志存储于哪个日志文件中。
- log_query_time:表示“多长时间的查询”被认定为“慢查询”,默认是10秒
- log_queries_not_using_indexes:表示如果运行的sql语句没有使用到索引,是否也被当作慢查询语句记录到慢查询日志中
- log_throttle_queries_not_using_indexes:可以限制这种语句每分钟记录到慢日志中的次数,因为在生产环境中有可能有很多没有使用索引的语句,此类语句频繁地被记录到慢查询中,可能会导致慢查询日志快速不断地增长,管理员可以通过此参数进行控制。
这里介绍一些关于查看慢日志的小工具:mysqldumpslow
主要的参数有:
- -s 表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar表示相应的倒序
- -t是top n 的意思,即返回前面多少条数据
- -g后边可以写一个正则匹配模式,大小写不敏感。
例如:mysqldumpslow -s r -t 20 :表示为得到返回记录集最多的20个查询
另外如果有pt-query-digest命令查看慢日志的话,会显示的更详细。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~