MySQL慢查询分析与处理-第二篇

在第一篇介绍慢查询的文章中,提到了什么是慢查询,如何解读慢日志,如何使用pt-query-digest工具快速分析慢日志,本篇文章接着分享慢查询的常见原因和处理思路。

一、慢查询的常见原因

1、大事务

2、无主键表

3、未有效创建索引

4、统计信息未及时收集导致执行计划不准确

5、多个大表关联

6、大表DDL操作

7、操作系统负载高

8、内存或是磁盘故障导致os性能降低

二、慢查询的处理思路

步骤一:掌握慢SQL语句信息

1、了解该SQL是新上的还是以前就有

2、该SQL以前执行情况如何,现在执行耗时多少

3、该SQL是批量还是联机交易,能容忍的耗时是多少

4、该SQL单次提交是否有限制行数,是哪种类型的SQL

5、该SQL所在事务是否还有其他SQL,其他SQL涉及行数是多少

步骤二:分析慢SQL执行计划

通过explain语句,分析执行计划,检查是否走了索引,对比扫描行数和返回行数。若走了索引,分析索引区分度。

步骤三:优化慢SQL

sql优化和索引优化可以参考前面的文章。

相关推荐
zh1570232 小时前
JavaScript中WorkerThreads解决服务端计算瓶颈
jvm·数据库·python
代码AI弗森2 小时前
一文理清楚“算力申请 / 成本测算 / 并发评估”
java·服务器·数据库
摇滚侠3 小时前
expdp 查看帮助
java·数据库·oracle
流年似水~3 小时前
MCP协议实战:从零搭建一个让Claude能“看见“数据库的工具服务
数据库·人工智能·程序人生·ai·ai编程
2401_871492853 小时前
Vue.js监听器watch利用回调函数处理级联下拉框数据联动
jvm·数据库·python
志栋智能4 小时前
超自动化安全:构建智能安全运营的核心引擎
大数据·运维·服务器·数据库·安全·自动化·产品运营
zhoutongsheng4 小时前
C#怎么实现Swagger文档 C#如何在ASP.NET Core中集成Swagger自动生成API文档【框架】
jvm·数据库·python
WinterKay5 小时前
【开源】我写了一个轻量级本地数据库浏览工具,支持 MySQL/Redis 只读查询
数据库·mysql·开源
AIDF20266 小时前
国产替代实战系列(三):性能优化——填补算力、显存与带宽的三大 Gap
性能优化
zxrhhm6 小时前
Oracle 索引完整指南
数据库·oracle