mysql 慢查询日志
mysql 慢查询日志
mysql 慢查询日志慢查询日志,顾名思义,就是查询慢的日志,是指mysql记录所有执行超过long_query_time参数设定的时间阈值的SQL语句的日志。该日志能为SQL语句的优化带来很好的帮助。默认情况下,慢查询日志是关闭的,要使用慢查询日志功能,首先要开启慢查询日志功能。
一、慢查询有什么用
它能记录下所有执行超过long_query_time时间的SQL语句, 帮你找到执行慢的SQL, 方便我们对这些SQL进行优化.
二、如何开启慢查询
1、先查看MYSQL服务器的慢查询状态是否开启.执行如下命令
show variables like '%quer%';
如果当前log_slow_queries状态为OFF, 说明当前并没有开启慢查询.
2、开启慢查询的方法
在mysql的配置文件中的mysqld下方添加以下参数
log-slow-queries = D:/MySQL/log/mysqld-slow-query.log
long-query-time = 5
#log-long-format
#log-slow-admin-statements
log-queries-not-using-indexes
3、参数说明
log-slow-queries
指定日志文件存放位置,该目录文件一定要有写的权限。可以不用设置,系统会给一个缺省的文件host_name-slow.log
long_query_time
慢日志执行时长(秒),超过设定的时间才会记日志,默认为10秒。
注意以下三点:
(1)、设置long_query_time这个阈值后,mysql数据库会记录运行时间超过该值的所有SQL语句,但对于运行时间正好等于long_query_time的情况,并不会被记录下来。也就是说,在mysql源码里是判断大于long_query_time,而非大于等于。
(2)、从mysql 5.1开始,long_query_time开始以微秒记录SQL语句运行时间,之前仅用秒为单位记录。这样可以更精确地记录SQL的运行时间,供DBA分析。
(3)、建议该时间不应太小或太大,最好在5-10秒之间。当然可以根据自己情况决定。
log-queries-not-using-indexes
如果运行的SQL语句没有使用索引,则mysql数据库同样会将这条SQL语句记录到慢查询日志文件中。
log-long-format
与这个参数对应的是另一个参数:log-short-format
简单的说log-long-format选项是用来设置日志的格式,它是以扩展方式记录有关事件。扩展方式可记录谁发出查询和什么时候发出查询的信息。可使我们更好地掌握客户端的操作情况。
准确的说,它是记录激活的更新日志、二进制更新日志、和慢查询日志的大量信息。例如,所有查询的用户名和时间戳将记录下来。不赞成选用该选项,因为它现在代表 默认记录行为。
log-short-format
记录激活的更新日志、二进制更新日志、和慢查询日志的少量信息。例如,用户名和时间戳不记录下来。
log-slow-admin-statements
将慢管理语句例如OPTIMIZE TABLE、ANALYZE TABLE和ALTER TABLE记入慢查询日志。
三、慢查询日志分析
我们可以通过慢查询日志来找出有问题的SQL语句,对其进行优化。随着mysql数据库服务器运行时间的增加,可能会有越来越多的SQL查询被记录到了慢查询日志文件中,这时要分析该文章就显得不是很容易了。
mysql提供的mysqldumpslow命令,可以很方便的对慢查询日志进行分析
命令行下,进入 mysql/bin 目录,输入 mysqldumpslow ?help 或 --help 可以看到这个工具的参数
其中,参与参数说明
1、-s order,是表示按照何种方式排序,order值有:c、t、l、r 分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒序;
2、-t num,即为返回前面多少条的数据;
3、-g pattern,pattern可以写一个正则匹配模式,大小写不敏感的;
例如
1、找出访问次数最多的 20个sql 语句
mysqldumpslow -s c -t 20 host-slow.log
2、和返回记录集最多的 20个sql
mysqldumpslow -s r -t 20 host-slow.log
3、按照时间返回前 10 条里面含有左连接的 sql 语句
mysqldumpslow -t 10 -s t -g "left join" host-slow.log
4、输出记录次数最多的10条SQL语句
mysqldumpslow -s c -t 10 /database/mysql/slow-log
- 怎么把csv文件导入mysql(mysql导入csv的4种报错的解决方法)
- mysql innodb存储原理(mysql innodb的重要组件汇总)
- 如何查看mysql执行计划(到底什么是Mysql执行计划?)
- apache搭建php环境(Windows上安装Apache2、PHP5、MySQL5及与Resin配合实现多系统之整合)
- mysql获取随机数(MySQL 生成随机数字、字符串、日期、验证码及 UUID的方法)
- mysql怎样建立索引(MySQL创建索引需要了解的)
- mysql中的默认mysql数据库作用(MySQL安装后默认自带数据库的作用详解)
- mysqlnull所占空间(详解mysql三值逻辑与NULL)
- MYSQL中GROUP BY不包含所有的非聚合字段时的注意事项
- 设置mysql字符集语句(MySQL修改字符集的实战教程)
- 适合小白入门的mysql教程索引简介(一篇带给你MySQL高性能索引)
- mysql怎么删除用户操作(解决mysql删除用户 bug的问题)
- mysql3种日志(mysql中的7种日志小结)
- innodb和myisam(Mysql InnoDB和MyISAM区别原理解析)
- mysql完全快速清空一个表(浅谈MySQL如何优雅的做大表删除)
- 图片如何存放在mysql中(将图片保存到mysql数据库并展示在前端页面的实现代码)
- 郭麒麟(郭麒麟)
- 古人十句 戒骄 名言,醍醐灌顶,受益匪浅(古人十句戒骄名言)
- 《道德经》:功成不局,泰而不骄(道德经:功成不局)
- 每日一典 过江之鲫(每日一典过江之鲫)
- 红色代表什么(红色代表什么意义和象征)
- 菲律宾安全吗(菲律宾安全吗2023)
热门推荐
- 云服务器的优点(云服务器都有哪些特点和优势)
- mysql索引的弊端(MySQL 全文索引的原理与缺陷)
- Dictionary转换为list
- laravel授权怎么用(laravel 使用auth编写登录的方法)
- sparksql的string转日期格式(将string类型的数据类型转换为spark rdd时报错的解决方法)
- php面向对象3大特征(PHP面向对象程序设计重载overloading操作详解)
- thinkphp权限认证怎么用(ThinkPHP框架结合Ajax实现用户名校验功能示例)
- sql server重建索引
- pythonimage库(Python/Django后端使用PIL Image生成头像缩略图)
- html5中提供的绘图元素(使用Html5中的cavas画一面国旗)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9