mysql 5.6 设置慢查询

mysql 5.6 开启慢查询日志

slow_query_log = on    #开启慢查询 1 或者 on

long_query_time = 3   #记录超过的时间,单位是秒,默认是10s

slow_query_log_file = /data/mysql/dev-service-node2-slow.log  #指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log

log_queries_not_using_indexes  = true 

#如果启用了慢查询日志,则此变量将控制那些不使用索引的查询是否应该被记录。如果进行记录,将使得日志文件迅速变得较大。

针对这个参数,在官方文档中还描述了一种比较特殊的情况:
This option does not necessarily mean that no index is used. For example, a query that uses
a full index scan uses an index but would be logged because the index would not limit the number of rows.

查询慢查询出现的次数;

show status like ‘Slow_queries‘;

查看慢查询日志:

如果慢查询日志中的记录内容很多,可以使用mysqldumpslow工具,对慢查询日志进行分类汇总。
mysqldumpslow是mysql数据库自带的工具

执行:

mysqldumpslow -a -s t -t 7 /data/mysql/dev-service-node2-slow.log

这条命令会输出执行时间最长的7条sql语句。
这条命令中各个参数的意义:
-s, 是表示按照何种方式排序,c、t、l、r分别是按照语句query次数、query time、lock time、rows sent的总数来排序,
    at、al、ar则是以query time、lock time、rows sent的平均值来排序;
-t, 是top n的意思,即返回排序在最前面的多少条sql语句。

-g ,后边可以写一个正则匹配模式,大小写不敏感的;

#mysqldumpslow -a -s t -t 7 /data/mysql/dev-service-node2-slow.log

#输出参数解释:

Count: 15831  Time=8.46s (133943s)  Lock=0.00s (7s)  Rows=578.3 (9154400)

Count: 此语句执行了15831次

Time :  8.46s 是该语句执行的平均时间(有的说是执行的最长时间) 。(133943s) 是该语句执行时间的总和

Lock:   即是lock time  等待锁的时间

Rows: 即是rows sent , 578.3 表示发送给客户端的行总数  。 (9154400) 表示扫描的行总数

时间: 2024-08-30 18:16:57

mysql 5.6 设置慢查询的相关文章

MySQL:动态开启慢查询日志(Slow Query Log)

前言 在开发中,高效能的程序 也包括 高效能的查询,所以优化SQL也是程序员必要技能之一.要优化就必须要有慢日志记录才可以知道哪些查询慢,然后反向去修改 慢日志设置方式 写入文件 写入数据库 实践操作 方式一:写入文件 编辑my.conf 中修改 log_slow_queries 的日志地址 $ cd /etc/mysql $ cat my.cnf |grep slow  log_slow_queries = /data/logs/mysql/mysql-slow.log $ sudo /etc

mysql根据汉字拼音排序查询

例如现在有一张数据表label,字段为id.name,此表的字符集设置为gb2312,以gb2312_chinese_ci整理. 设置InnoDB引擎的字符集也为简体中文,且整理为gb2312_chinese_ci. 查询语句如下: select * from label order_by name collate gb2312_chinese_ci; 效果如下: tip:有时候结果不是很准确,不知道是不是因为字符集选择的不当导致的,知道的朋友,请解答下,谢谢! mysql根据汉字拼音排序查询,

CentOS下mysql最大连接数设置 1040 too many connection

当最大连接数比较小时,可能会出现"1040 too many connection"错误. 可以通过修改配置文件来修改最大连接数,但我连配置文件在哪都不知道,应该怎么办呢? 首先需要重启mysql服务,执行命令:service mysql restart 也有可能是:service mysqld restart 登录mysql:mysql -uroot -p输入密码,回车: 登录成功后执行以下语句查询当前的最大连接数:select VARIABLE_VALUE from informa

Mysql 外键设置

MySql外键设置详解 (1) 外键的使用: 外键的作用,主要有两个:    一个是让数据库自己通过外键来保证数据的完整性和一致性    一个就是能够增加ER图的可读性    有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库有时候会由于没有通过外键的检测而使得开发人员删除,插入操作失败.他们觉得这样很麻烦其实这正式外键在强制你保证数据的完整性和一致性.这是好事儿.    例如:    有一个基础数据表,用来记录商品的所有信息.其他表都保存商品ID.查询时需要连表来查询商品的名称

mysql慢日志设置

mysql的慢日志查询对于sql的优化还是很有意义的,具体说下如何开启这个mysql慢查询日志(默认是开启的). 关于设置在mysql的官方手册或网上都有很多,但是要注意的是,mysql5.6与之前的版本关于慢日志的设置其变量发生了变化. 对于mysql的慢日志开启设置,在my.ini(或my.cnf)文件的[mysqld]下设置如下几个参数: 如下为5.6以前版本的设置方式: #设置sql执行时间多长为慢查询 long_query_time = 2 #设置把慢日志写在那里,为空的话系统会自动在

MySQL 主从数据库设置

1.复制的介绍 MySQL 支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引 以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置. 从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新. 请注意当你进行复制时,所有对复制中的表的更新必须在主服务器上进行.否则,你必须要小心,以避免用户对主服务器

关于MySQL 通用查询日志和慢查询日志分析

MySQL中的日志包括:错误日志.二进制日志.通用查询日志.慢查询日志等等.这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志. 1)通用查询日志:记录建立的客户端连接和执行的语句. 2)慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或者不使用索引的查询 (1)通用查询日志 在学习通用日志查询时,需要知道两个数据库中的常用命令: 1) showvariables like '%version%'; 效果图如下: 上述命令,显示当前数据库中与版本号相关的东西.

MySQL 通用查询日志和慢查询日志分析

MySQL中的日志包括:错误日志.二进制日志.通用查询日志.慢查询日志等等.这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志. 1)通用查询日志:记录建立的客户端连接和执行的语句.2)慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或者不使用索引的查询 (1)通用查询日志 在学习通用日志查询时,需要知道两个数据库中的常用命令: 1) show variables like '%version%'; mysql> show variables like '%ve

(三)MySQL调优之-慢查询日志

慢查询日志 是什么? 1.MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中. 2.具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中.long_query_time的默认值为10,意思是运行10秒以上的语句. 3.由他来查看哪些SQL超出了我们的最大忍耐时间值,比如一条sql执行超过5秒钟,我们就算慢SQL,希望能收集超过5秒