MySQL慢查询

快捷查看指令 ctrl+f 进行搜索会直接定位到需要的知识点和命令讲解(如有不正确的地方欢迎各位小伙伴在评论区提意见,博主会及时修改)

MySQL慢查询

MySQL 慢查询是指查询语句执行速度过慢,影响系统整体性能和查询效率的情况。MySQL 提供了慢查询日志来记录执行时间超过特定阈值(slow_query_log_time)的查询语句,可以通过分析慢查询日志找出查询语句执行缓慢的原因并进行优化。

MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过设定时间的语句

慢查询开启方法
命令开启
powershell 复制代码
特点:只对当此数据库运行生效,一旦数据库重启便失效
sql 复制代码
-- 1.查询当前数据库是否开启慢查询
mysql> show variables like "%slow%"; 
sql 复制代码
mysql> show variables like "%long%"; 
sql 复制代码
-- 2.修改慢查询阈值时间
mysql> set global long_query_time=2;  #将阈值时间改为2s,修改完成后由于刷新时间不确定需要重新登录查看
sql 复制代码
-- 3.开启慢查询
mysql> set global slow_query_log='ON'; 
sql 复制代码
-- 4.重新查看慢查询信息,验证是否开启
sql 复制代码
-- 5.查看sql日志记录是否开启
mysql>show variables like "%general_log%";
sql 复制代码
-- 6.开启sql日志记录,会将所有sql记录在指定位置
mysql>set global general_log='ON'; 
shell 复制代码
至此开启慢查询,当某个sql执行时间超过了指定阈值时间,将会记录到慢查询日志中
注意:
general_log的sql记录会记录所有的sql,日志量极大,日常一般只开启慢查询不开启sql日志记录,
只有当发现数据库异常(比如已经有慢查询产生)才会临时开启,以便完整掌握数据库信息
修改配置文件开启

特点:通过配置/etc/my.cnf配置文件开启,开启永久生效

powershell 复制代码
# 打开mysql的配置文件 /etc/my.cnf 添加如下信息
slow_query_log=1  #设置开启慢查询 值可以为1也可以为ON
slow_query_log_file=/opt/liuyh/log/mysql/mysql-slow.log  #设置慢查询日志位置,保证数据库所在用户拥有该位置权限
long_query_time=3  #设置慢查询阈值时间,单位s
powershell 复制代码
此处配置如果不生效,需要在log下面手动创建mysql目录,并将mysql的属主属组给到mysql用户(chown -R mysql:mysql mysql)
慢查询优化

以下是一些常见的优化方法:

  1. 创建索引:通过创建合适的索引来加速查询。可以使用 EXPLAIN 命令来查看查询语句的执行计划,从而判断是否需要创建索引。
  2. 优化查询语句:写出性能更好的查询语句,避免使用子查询、嵌套查询、多表连接等复杂语句,尽量减少跨表查询。
  3. 分析表结构:合理设计表结构,尽量减少字段数量、使用合适的数据类型、避免使用大字段等。
  4. 调整 MySQL 配置:根据系统负载和硬件配置,调整 MySQL 的配置参数,如调整缓存大小、最大连接数、并发连接数等。
  5. 使用缓存:使用缓存技术来减少对数据库的查询次数,如使用 Memcached、Redis 等缓存系统来缓存热点数据。
相关推荐
随逸1777 小时前
《Milvus向量数据库从入门到实战,手把手搭建语义检索系统》
数据库
神秘的猪头8 小时前
🚀 React 开发者进阶:RAG 核心——手把手带你玩转 Milvus 向量数据库
数据库·后端·llm
0xDevNull1 天前
MySQL索引进阶用法
后端·mysql
0xDevNull1 天前
MySQL索引用法
mysql
IvorySQL1 天前
PostgreSQL 技术日报 (3月6日)|为什么 Ctrl-C 在 psql 里让人不安?
数据库·postgresql·开源
NineData1 天前
数据库管理工具NineData,一年进化成为数万+开发者的首选数据库工具?
运维·数据结构·数据库
程序员小崔日记1 天前
一篇文章彻底搞懂 MySQL 和 Redis:原理、区别、项目用法全解析(建议收藏)
redis·mysql·项目实战
IvorySQL1 天前
PostgreSQL 技术日报 (3月5日)|规划器控制力升级,内核能力再进阶
数据库·postgresql·开源
武子康1 天前
大数据-241 离线数仓 - 实战:电商核心交易数据模型与 MySQL 源表设计(订单/商品/品类/店铺/支付)
大数据·后端·mysql