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

MySQL之慢查询sql排查及优化

排查慢查询sql
ps:mysql版本为5.7

1.连接mysql

mysql -uroot -p

在这里插入图片描述


2.查看数据库服务慢查询日志是否开启

show variables like ‘slow_query_log’;

在这里插入图片描述


3.开启慢查询

set global slow_query_log=on;

在这里插入图片描述


4.查看慢查询阈值(超过这个时间sql就会被记录在慢查询日志中)

show variables like ‘long_query_time’;

在这里插入图片描述


5.设置慢查询阈值
慢查询阈值默认为10秒,为了方便测试,这里设置了0.3秒。

set long_query_time=0.3;

在这里插入图片描述


6.查看慢查询日志所在地址

show variables like ‘slow_query_log_file’;

在这里插入图片描述


7.修改慢查询日志所在地址(方便后面查找)

set global slow_query_log_file=’/usr/local/mysql/data/slow_query.log’;

在这里插入图片描述


8.准备测试数据
为了直观展示查询区别,准备了130万多条数据(造数据有点曲折)

在这里插入图片描述

9.执行查询sql

这条sql查询用时0.45秒,超过设置0.3秒,查看慢查询日志中是否有记录

在这里插入图片描述
10.查看慢查询日志

根据日志可看出:sql语句,查询时间,查询耗时,查询行数等信息。

在这里插入图片描述

小结
mysql判断sql语句是不是慢查询,是根据语句的执行时间来衡量的,mysql会用语句的执行时间和long_query_time这个系统参数做比较,如果语句执行时间大于long_query_time,都会把这个语句记录到慢查询日志里面。long_query_time的默认值是10s,一般生产环境不会设置这么大的值,一般设置1秒。

慢查询优化
找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。

1.查询sql语句执行计划
执行 EXPLAIN 命令

EXPLAIN select algorithm_id,alg_name,camera_id,status,create_time from algorithm where alg_name = ‘helmet’

在这里插入图片描述
为了直观展示查询结果,这里使用navicat执行sql。
主要看type那列,ALL标识全文检索,所以这条sql查询很慢。
解决:最简单有效的方法就是:加索引。

2.加索引

ALTER TABLE algorithm ADD INDEX index_alg_name ( alg_name );

在这里插入图片描述
加完索引后再执行一次执行计划

在这里插入图片描述

可以看出type是ref,已经不是全盘扫描了。
explain详解见:https://www.cnblogs.com/tufujie/p/9413852.html

重新执行查询sql

在这里插入图片描述

执行时间0.00秒,加了索引还是有作用的。

3.加索引前后对比

                 执行第一次(秒)    执行第二次(秒)    执行第三次(秒)
未加索引         0.45                      0.44                            0.41
加索引            0.00                       0.00                           0.00
加索引前后查询速度区别明显。


MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。
创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。
过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
建立索引会占用磁盘空间的索引文件。

http://www.dtcms.com/a/542358.html

相关文章:

  • 如何实现企业网站推广的系统性哪家公司做跳转网站
  • Redis Cluster集群理论
  • 广州网站开发定制设计北京做网站的大公司
  • 求个网站你会感谢我的西安大雁塔高多少米
  • 59网站一起做网店电商详情页设计思路
  • 网站建设预算表样本wordpress 上一篇 下一篇
  • 江西 网站 建设 开发永辉企业微信app下载安装
  • 提升学历是什么意思百度地图优化
  • 竹子林网站建设php网站开发实践指南
  • 【测试理论和实践 4.测试用例】
  • Java—接口
  • 移动网站源码兰州需要做推广的公司
  • 公司架设网站费用怎么做分录自学it怎么入门
  • 不用代码做网站杭州品牌网站设计
  • 商城建站模板广州从化建设网站官网
  • 免费的游戏网站建设建网站软件工具
  • Spring Boot3零基础教程,SpringSecurity 测试,笔记81
  • 哪里有网站推广优化wordpress获取自定类型
  • wordpress读取mysql北京百度搜索优化
  • IntelliJ IDEA 常用快捷键
  • 枣阳网站建设 枣阳山水数码wordpress文章什么时候收录
  • 代码随想录day20:406.根据身高重建队列
  • Redis之IO多路复用 select,poll,epoll
  • 兰州电商网站建设南宁360网
  • wap网站平台网站备案被拒绝
  • 《动手学深度学习》学习笔记——03安装
  • 利用万网做网站网站与网页的区别.
  • 基于素数递减迭代的哥德巴赫猜想证明(终版·严格单调,修改了lcm相关部分)-陈墨仙
  • 高端模板网站建设公司移动端网站建设 新闻动态
  • 四川省住房和城乡建设厅网站不见了html5制作手机网站