MySQL系列-分析SQL性能

查找慢SQL

MySQL 慢查询日志是用来记录 MySQL 在执行命令中,响应时间超过预设阈值的 SQL 语句。

开启慢查询

复制代码
# 开启慢查询日志功能
SET GLOBAL slow_query_log = 'ON';
# 慢查询日志存放位置
SET GLOBAL slow_query_log_file = '/var/lib/mysql/ranking-list-slow.log';
# 无论是否超时,未被索引的记录也会记录下来。
SET GLOBAL log_queries_not_using_indexes = 'ON';
# 慢查询阈值(秒),SQL 执行超过这个阈值将被记录在日志中。
SET SESSION long_query_time = 1;
# 慢查询仅记录扫描行数大于此参数的 SQL
SET SESSION min_examined_row_limit = 100;

设置成功之后,使用 show variables like 'slow%'; 命令进行查看。

复制代码

通过查看log可以得到慢查询日志:

sql 复制代码
# Time: 2022-10-09T08:55:37.486797Z
# User@Host: root[root] @  [172.17.0.1]  Id:    14
# Query_time: 0.978054  Lock_time: 0.000164 Rows_sent: 999999  Rows_examined: 1999998
SET timestamp=1665305736;
SELECT `score`,`name` FROM `cus_order` ORDER BY `score` DESC;
  • Time :被日志记录的代码在服务器上的运行时间。

  • User@Host:谁执行的这段代码。

  • Query_time:这段代码运行时长。

  • Lock_time:执行这段代码时,锁定了多久。

  • Rows_sent:慢查询返回的记录。

  • Rows_examined:慢查询扫描过的行数。

实际项目中,慢查询日志通常比较复杂,我们需要借助一些工具对其进行分析。像 MySQL 内置的 mysqldumpslow 工具就可以把相同的 SQL 归为一类,并统计出归类项的执行次数和每次执行的耗时等一系列对应的情况。

如何分析SQL性能

EXPLAIN 命令来分析 SQL 的 执行计划 。执行计划是指一条SQL语句经过MySQL查询优化器的优化后,具体的执行方式。

EXPLAIN并不会真的去执行相关语句,而是通过查询优化器对语句进行分析,找出最有的查询方案,并显示其对应的信息。

相关推荐
创世虚拟世界5 小时前
把 3D 虚拟世界拉到本地:vibe coding 的手感,是从看见自己那一行改动开始的
javascript·数据库·人工智能·3d·gitee·虚拟现实
俊昭喜喜里5 小时前
Springboot的Mybatis中的条件构造器
数据库·mybatis
倔强的石头_5 小时前
列存储到底快在哪 在金仓KES上把原理和实操跑了一遍
数据库
多客:duokelijie5 小时前
婚恋交友小程序合规梳理:上线运营需要准备哪些资质与许可手续?
后端·mysql·微信小程序·前端框架·uni-app·php·持续部署
WikiLeake6 小时前
一个健壮且灵活的大语言模型(LLM)API 配置加载器
数据库·人工智能
我的愿望是成为富婆6 小时前
2027校招准备:从Excel操作到数据分析,还缺业务、SQL与统计思维
sql·数据分析·excel
瑞克-桑切斯7 小时前
企业生产环境:https部署+nginx高可用(业务不中断)
linux·服务器·数据库
zyseo816 小时前
谷歌SEO 准首页词挖掘脚本:找出排在第 8-20 名的隐藏流量
大数据·数据库·人工智能
xiaogai_gai17 小时前
仅查询策略实战:从金蝶云·星空旗舰版定时拉取收料通知单
大数据·数据库·python