当前位置: 代码迷 >> 综合 >> 08nosql mysql 优化第一天 - 查询需要优化语句
  详细解决方案

08nosql mysql 优化第一天 - 查询需要优化语句

热度:119   发布时间:2023-10-10 23:17:15.0

三、查找需要优化语句

1、慢查询日志

是一种mysql提供的日志,记录所有执行时间超过某个时间界限的sql的语句。这个时间界限,我们可以指定。在mysql中默认没有开启慢查询,即使开启了,只会记录执行的sql语句超过10秒的语句。
方式一、临时启动慢查询记录日志

(1){mysql程序所在的目录}>bin/

mysqld.exe   --safe-mode  --slow-query-log 

注意:先把mysql关闭后,再执行以上指令启动。

08nosql mysql 优化第一天 - 查询需要优化语句

进入cmd开始启动;

>bin/mysqld.exe   --safe-mode --slow-query-log

08nosql mysql 优化第一天 - 查询需要优化语句

通过慢查询日志定位执行效率较低的SQL语句。慢查询日志记录了所有执行时间超过long_query_time所设置的SQL语句。

(2)在默认情况下,慢查询日志是存储到data目录下面的。根据配置文件里面的配置,找到data的存储路径。

08nosql mysql 优化第一天 - 查询需要优化语句

(3)可以通过命令查看慢查询日志的时间

show variables like 'long_query_time';

08nosql mysql 优化第一天 - 查询需要优化语句

修改慢查询日志时间:set long_query_time=0.5;
08nosql mysql 优化第一天 - 查询需要优化语句

(4)测试查询:
查看慢查询日志
benchmark(count,expr)函数可以测试执行count次expr操作需要的时间。

select benchmark(10000,90000000*4);

08nosql mysql 优化第一天 - 查询需要优化语句
08nosql mysql 优化第一天 - 查询需要优化语句

(5)一般情况下,一个sql语句执行比较慢,原因是没有索引
添加索引之前,索引文件大小如下;
没有添加索引之前查询时间如下:

08nosql mysql 优化第一天 - 查询需要优化语句
08nosql mysql 优化第一天 - 查询需要优化语句

添加索引之后:

alter  table  emp add index(empno)

08nosql mysql 优化第一天 - 查询需要优化语句
添加索引后,索引文件变大。
08nosql mysql 优化第一天 - 查询需要优化语句

添加索引之后需要的时间;

08nosql mysql 优化第一天 - 查询需要优化语句
结论:创建完索引后,索引文件会变大,添加索引会明显的提高查询速度。

方式二:通过修改配置文件,添加如下语句
08nosql mysql 优化第一天 - 查询需要优化语句

log-slow-queries="d:/slow-log"

慢查询日志文件存储的路径,当前是把慢查询日志存储到d:盘下面,文件名为slow-log
long_query_time=1

指定慢查询的时间,默认是10秒,我们自定义成1或0.05秒,也就是说当一个sql语句的执行速度超过1秒时,会把该语句添加到慢查询日志里面,
通过配置文件是永远的开启慢查询日志
08nosql mysql 优化第一天 - 查询需要优化语句

2、精确记录查询时间

使用mysql提供profile机制完成。
profile记录每次执行的sql语句的具体时间,精确时间到小数点8位

(1)开启profile机制:

set profiling = 1;

08nosql mysql 优化第一天 - 查询需要优化语句

执行需要分析的sql语句(自动记录该sql的时间) (2)查看记录sql语句的执行时间:

show profiles;

08nosql mysql 优化第一天 - 查询需要优化语句

注意:不需要分析时,最好将其关闭。

set profiling=0;
  相关解决方案