mysql慢查询使用详解

 更新时间:2014年12月11日 10:22:21   投稿:hebedich  
慢查询是我们在mysql中经常需要使用到的一个很方便的功能,慢查询对于跟踪有问题的查询很有用,可以分析出当前程序里那些Sql语句比较耗费资源。

1 慢查询定义
指mysql记录所有执行超过long_query_time参数设定的时间阈值的SQL语句。慢查询日志就是记录这些sql的日志。

2 开启慢查询日志
找到mysql配置文件my.cnf.在mysqld的下面添加

复制代码 代码如下:

log-slow-queries = D:/MySQL/log/mysqld-slow-query.log  #日志存在的位置。(注意权限的问题,可以不用设置,系统会给一个缺省的文件host_name-slow.log)
long-query-time = 5   #SQL执行时间阈值,默认为10秒。
#log-long-format   #说log-long-format选项是用来设置日志的格式,它是以扩展方式记录有关事件。扩展方式可记录谁发出查询和什么时候发出查询的信息。可使我们更好地掌握客户端的操作情况。
#log-slow-admin-statements  #将慢管理语句例如OPTIMIZE TABLE、ANALYZE TABLE和ALTER TABLE记入慢查询日志。
log-queries-not-using-indexes #如果运行的SQL语句没有使用索引,则mysql数据库同样会将这条SQL语句记录到慢查询日志文件中。

配置完毕后重启mysql服务。

3 测试  
为了方便 我只在my.cnf中配置了慢查询日志的路径.

mysql 版本为 5.1.73

关于 long_query_time :从mysql 5.1开始,long_query_time开始以微秒记录SQL语句运行时间,之前仅用秒为单位记录。这样可以更精确地记录SQL的运行时间,供DBA分析。

进入mysql.

复制代码 代码如下:

mysql> show VARIABLES like "%slow%"; #查看慢查询日志相关的信息
mysql> set global long_query_time=0.01;  #将mysql位置的值改为 0.01
mysql> show variables like "long_query_time"; #查看是否生效
mysql> select sleep(2); #延迟2秒执行 注:这条sql执行完毕以后应该已经在慢查询的日志文件中产生相关的信息记录
mysql> show global status like '%slow%'; #查看慢查询语句的次数

在日志文件中可以看到已经记录了sql.

总结:

Windows下开启MySQL慢查询
MySQL在Windows系统中的配置文件一般是是my.ini找到[mysqld]下面加上
log-slow-queries = F:\MySQL\log\mysqlslowquery.log
long_query_time = 2

Linux下启用MySQL慢查询
MySQL在Windows系统中的配置文件一般是是my.cnf找到[mysqld]下面加上
log-slow-queries=/data/mysqldata/slowquery.log
long_query_time=2

注意
log-slow-queries = F:\MySQL\log\mysqlslowquery.log为慢查询日志存放的位置,一般这个目录要有MySQL的运行帐号的可写权限,一般都将这个目录设置为MySQL的数据存放目录;
long_query_time=2中的2表示查询超过两秒才记录;

相关文章

  • 关于MySQL数据库死锁的案例和解决方案

    关于MySQL数据库死锁的案例和解决方案

    MySQL Update语句防止死锁是指在修改MySQL数据库的数据时,为避免多个进程同时修改同一数据行而造成死锁的情况,引入了一些机制来防止死锁的产生,本文介绍了一个 MySQL 数据库死锁的案例和解决方案,需要的朋友可以参考下
    2023-09-09
  • MySQL每日练习之单表查询

    MySQL每日练习之单表查询

    这篇文章主要给大家介绍了关于MySQL每日练习之单表查询的相关资料,数据库管理系统的一个最重要的功能就是数据查询,数据查询不应只是简单查询数据库中存储的数据,还应该根据需要对数据进行筛选,需要的朋友可以参考下
    2023-07-07
  • MySQL正则表达式匹配查询(含实例)

    MySQL正则表达式匹配查询(含实例)

    MySQL中正式表达式通常被用来检索或替换符合某个模式的文本内容,根据指定的匹配模式匹配文中符合要求的特殊字符串,下面这篇文章主要给大家介绍了关于MySQL正则表达式匹配查询的相关资料,需要的朋友可以参考下
    2022-09-09
  • 深入分析MySQL数据类型 DECIMAL

    深入分析MySQL数据类型 DECIMAL

    这篇文章主要介绍了MySQL数据类型 DECIMAL的相关资料,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2020-09-09
  • Docker启动mysql配置实现过程

    Docker启动mysql配置实现过程

    这篇文章主要介绍了Docker启动mysql配置实现过程,文中附含详细的图文示例,有需要的朋友可以借鉴参考下,希望可以有所帮助,祝大家早日升职加薪
    2021-09-09
  • MySQL多表关联查询相关练习题

    MySQL多表关联查询相关练习题

    这篇文章主要给大家介绍了关于MySQL多表关联查询的相关资料,在MySQL中JOIN语句是实现多表关联查询的关键,它可以将多个表格中符合条件的数据连接在一起,从而提供一个完整的查询结果,需要的朋友可以参考下
    2023-10-10
  • 对MySQL日志操作的一些基本命令总结

    对MySQL日志操作的一些基本命令总结

    这篇文章主要介绍了对MySQL日志操作的一些基本命令总结,其中重点讲述了二进制日志文件的相关方面,需要的朋友可以参考下
    2015-11-11
  • 深入了解mysql长事务

    深入了解mysql长事务

    这篇文章主要介绍了mysql长事务的相关资料,帮助大家更好的理解和学习mysql,感兴趣的朋友可以了解下
    2020-08-08
  • MySQL数据表设计之自动增长的实现

    MySQL数据表设计之自动增长的实现

    本文主要介绍了MySQL数据表设计之自动增长的实现,包括创建数据表时设置自动增长和修改数据表时添加自动增长,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03
  • MySQL GRANT用户授权的实现

    MySQL GRANT用户授权的实现

    授权就是为某个用户赋予某些权限。MySQL 提供了 GRANT 语句来为用户设置权限。具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06

最新评论