mysql优化之慢查询

慢查询日志:mysql提供的日志,记录所有执行时间超过某个时间界限的sql的语句。

(这个时间界限,我们可以指定。在mysql中默认没有开启慢查询,即使开启了也是暂时的,只会记录执行的sql语句超过10秒的语句。)

临时启动慢查询日志的命令:(针对MySQL5.5.47

{mysql程序所在的目录}>bin/set global slow_query_log = on;


临时启动慢查询日志的命令:针对MySQL5.5.28

{mysql程序所在的目录}>bin/mysqld.exe  --safe-mode --slow-query-log


通过慢查询日志定位执行效率较低的SQL语句。

慢查询日志记录了所有执行时间超过long_query_time所设置的SQL语句。

查看慢查询日志设定的时间的语法:show variables like 'long_query_time';


默认设置的是10秒委屈显然对于这个时间在实际生产中是不现实的。我们把它设置成0.5秒偷笑

语法:set  long_query_time=0.5;


日志存放地点可在my.ini文件配置;

默认存放在:



测试慢查询产生的日志:(MYSQL中提供了一个计算表达式性能的函数benchmark

benchmark(count,expr)会重复计算expr表达式count次,通过这种方式就可以评估出mysql执行这个expr表达式的效率。这个函数的返回值始终是0,但可以根据客户端提示的执行时间来得到BENCHMARK总共执行的所消耗的时间,如以下这个例子

select benchmark(100000000,90000000*4);


记录到的效率低的查询语句



永久开启慢查询日志的方法:(my.ini文件中的[mysqld]下添加如下及行代码)

#开启慢查询日志
log_slow_queries=ON
#设置慢查询日志的存放地址及文件名
log-slow-queries="D:/phpStudy/MySQL/data/slow.log"
#规定多少秒算是慢查询语句
long_query_time=0.5
#将没有使用索引查询的SQL语句也记录到慢查询日志中
log_queries_not_using_indexex=ON

#

显示效果如下:


慢查询日志:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不负好时光1001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值