当前位置: 首页 > article >正文

MySQL慢查询

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

MySQL慢查询

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

慢查询开启方法
命令开启
特点:只对当此数据库运行生效,一旦数据库重启便失效
-- 1.查询当前数据库是否开启慢查询
mysql> show variables like "%slow%"; 

在这里插入图片描述

mysql> show variables like "%long%"; 

在这里插入图片描述

-- 2.修改慢查询阈值时间
mysql> set global long_query_time=2;  #将阈值时间改为2s,修改完成后由于刷新时间不确定需要重新登录查看
-- 3.开启慢查询
mysql> set global slow_query_log='ON'; 
-- 4.重新查看慢查询信息,验证是否开启
-- 5.查看sql日志记录是否开启
mysql>show variables like "%general_log%";

在这里插入图片描述

-- 6.开启sql日志记录,会将所有sql记录在指定位置
mysql>set global general_log='ON'; 
至此开启慢查询,当某个sql执行时间超过了指定阈值时间,将会记录到慢查询日志中
注意:
general_log的sql记录会记录所有的sql,日志量极大,日常一般只开启慢查询不开启sql日志记录,
只有当发现数据库异常(比如已经有慢查询产生)才会临时开启,以便完整掌握数据库信息
修改配置文件开启

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

# 打开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
此处配置如果不生效,需要在log下面手动创建mysql目录,并将mysql的属主属组给到mysql用户(chown -R mysql:mysql mysql)
慢查询优化

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

  1. 创建索引:通过创建合适的索引来加速查询。可以使用 EXPLAIN 命令来查看查询语句的执行计划,从而判断是否需要创建索引。
  2. 优化查询语句:写出性能更好的查询语句,避免使用子查询、嵌套查询、多表连接等复杂语句,尽量减少跨表查询。
  3. 分析表结构:合理设计表结构,尽量减少字段数量、使用合适的数据类型、避免使用大字段等。
  4. 调整 MySQL 配置:根据系统负载和硬件配置,调整 MySQL 的配置参数,如调整缓存大小、最大连接数、并发连接数等。
  5. 使用缓存:使用缓存技术来减少对数据库的查询次数,如使用 Memcached、Redis 等缓存系统来缓存热点数据。

http://www.kler.cn/a/148843.html

相关文章:

  • 【LeetCode】每日一题 2024_11_14 统计好节点的数目(图/树的 DFS)
  • 38配置管理工具(如Ansible、Puppet、Chef)
  • 【mysql的当前读和快照读】
  • AndroidStudio-常用布局
  • 量化交易系统开发-实时行情自动化交易-3.4.1.2.A股交易数据
  • C++模板特化实战:在使用开源库boost::geometry::index::rtree时,用特化来让其支持自己的数据类型
  • Flink Flink中的合流
  • Python---lambda表达式
  • 交换机的VRRP主备配置例子
  • 计网Lesson3 - 计算机网络评价指标与封包解包
  • 别再让假的fiddler教程毒害你了,来看这套最全最新的fiddler全工具讲解
  • 基于C#实现Kruskal算法
  • DGL在异构图上的GraphConv模块
  • 【Redisson】基于自定义注解的Redisson分布式锁实现
  • 堆的应用(堆排序、Top-K问题)
  • 大模型的开源闭源
  • linux -系统通用命令查询
  • viple模拟器使用(四):unity模拟器中实现沿右墙迷宫算法
  • 门面模式-C++实现
  • java中IO知识点概念
  • GoLong的学习之路,进阶,RabbitMQ (消息队列)
  • Jmeter-分布式压测(远程启动服务器,windows)
  • 代码随想录-刷题第九天
  • 通义千问 Qwen-7B-Chat-Int4 模型本地化部署
  • 机器人规划算法——movebase导航框架源码分析
  • Linux的软件安装