Mysql优化之优化工具profiling
前言
mysql优化技术:
mysql优化不是做一个操作就可以的优化,它包含很多的细节,需要一点一点的优化,最后这个性能提升会很高 .
引申
假设有这样的需求:
网站现在很慢 ? 项目里面有很多的sql ,众多的sql里面找到性能很差的sql呢?
什么是慢查询: 性能低效的sql
先来看一下这个东西, show variables like "%slow%"; # 查看慢查询的一些东西
注:慢查询低效的sql会被记录在 slow_query_log_file
并且允许我们更改此文件的位置
eg: set global slow_query_log_file = "d:/slow.log";
接下来什么又称作性能低效的sql呢:
就是你的sql执行的时间超过你无法忍受的时间
如何查看默认的无法忍受的时间:
eg: show variables like "long_query_time"; #默认是10秒
因此,假设我们无法忍受的时间 设置为 1秒
set long_query_time = 1;
则执行时间超过1秒的sql都会被记录到d:/slow.log文件中,让后进行分析与优化。
性能优化的工具
当我们已经找到了一些慢查询之后,就需要我们借助一些工具来分析,也就是本次要用到的profiling
如果记不太清了,可以执行下面sql找一下
eg: show variables like "%pro%";
会看到这么一条数据:profiling | OFF
首先,需要开启这个优化工具:
set profiling = 1;
然后,开始分析sql:show profiles;
会查到三列数据:Query_ID 查询编号,Duration 执行时间 Query 查询的sql语句
我们发现Duration的时间精度更细,这能方便我们更细的观察优化的效果。
我们还可以查询某一条,更细的执行情况
eg: show profile for query 4;
这能让我们更加深入的了解sql各个过程执行的时间,来检验我们做的sql语句优化的提升效果。
最后,题外话
为了让我们的分析结果更准确,还应该熟练使用 reset query cache; #清除sql缓存,来得到一个客观数据结果。
希望对一起学习的朋友有一丝启迪,带来一些帮助 ^-^