mysql 5.6 设置long_query_time的值无效的原因

问题:

用网上找的开启慢查询日志的方法:

在/etc/my.cnf中添加

long_query_time=1
slow_query_log
log_queries_not_using_indexes=1

然后再重启mysql。

慢查询日志确实开起来了,用select sleep(0.5),select sleep(1)来测试long_query_time的设置是生效的。但是在实际使用中在慢查询日志文件中出现了很多查询时间在小于1s的记录。

原因:

一、在mysql5.6英文手册的“5.2.5 The Slow Query Log”中说慢查询记录的条件:

  1. The query must either not be an administrative statement, or          log_slow_admin_statements
             must be enabled.
  2. The query must have taken at least          long_query_time seconds, or          log_queries_not_using_indexes
             must be enabled and the query used no indexes for row lookups.
  3. The query must have examined at least          min_examined_row_limit rows.
  4. The query must not be suppressed according to the          log_throttle_queries_not_using_indexes
             setting.

粗略地翻译下:

  1. 查询必询不是管理语句,或者开启了log_slow_admin_statements
  2. 查询的时间至少是long_query_time的秒数,或者查询没有使用索引并且开启了log_queries_not_using_indexes
  3. 查询至少检索了min_examined_row_limit 的行数.
  4. 查询必要不会根据log_throttle_queries_not_using_indexes 
    的设置而被抑制。

二、在mysql5.5 中文参考手册可以找到log-queries-not-using-indexes的说明:
如果你结合--log-slow-queries使用该选项,未使用索引的查询也被记录到慢查询日志中。

通过上面的资料就可以知道,因为开启了log_queries_not_using_indexes造成后,未使用索引的查询是否被记录和slow_query_time的设置无关

解决办法一:

修改/etc/my.cnf

log_queries_not_using_indexes=0

然后重启服务器。

解决办法二:

在mysql 查询中执行

set global log_queries_not_using_indexes=0;

参考:

mysql5.5中文参考手册

mysql5.6参考手册

http://www.percona.com/forums/questions-discussions/mysql-and-percona-server/24075-long_query_time-not-working

时间: 2024-10-02 12:08:51

mysql 5.6 设置long_query_time的值无效的原因的相关文章

Android-配置文件中设置“android:clickable="false"无效的原因及解决办法

开发中遇到的问题:要实现一个button初始为不可点击,于是在配置文件中设置了android:clickable="false"运行后发现还是可以点击,于是写在了Activity中:btn.setClickable(false);发现还是可以点击,在网上查资料说android setClickable 一定要放在 按扭的setOnClickListener事件之后! 因为setOnClickListener事件会去重写View v,也就是会把setClickable设为TRUE! 所以

Mysql select语句设置默认值

1.在没有设置默认值的情况下: SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_time FROM userinfo LEFT JOIN region ON userinfo.adm_regionid = region.id 结果: 设置显示默认值: SELECT userinfo.id, user_name, role, adm_regionid, IFNULL(region_name,0) as

使用命令设置MySQL数据表自增ID起始值

使用命令设置MySQL数据表自增ID起始值技术 maybe yes 发表于2015-01-24 16:14 原文链接 : http://blog.lmlphp.com/archives/68  来自 : LMLPHP后院 有 时候我们清空了 MySQL 数据库中数据表的记录,自动增长的 ID 值变的很大,如何将自动增长的 ID 值设置为1或者修改为其他的值呢?使用一些工具,比如 NaviCat for MySQL 当然非常简单,通过在设计表处修改即可,其他的一些工具也都很简单.下面给出使用 SQ

MySQL datetime数据类型设置当前时间为默认值

环境:MySQL Sever 5.1 + MySQL命令行工具 问题:MySQL datetime数据类型设置当前时间为默认值 解决: 方法一: 由于MySQL目前字段的默认值不支持函数,所以以create_time datetime default now() 的形式设置默认值是不可能的.代替的方案是使用TIMESTAMP类型代替DATETIME类型. TIMESTAMP列类型自动地用当前的日期和时间标记INSERT或UPDATE的操作.如果有多个TIMESTAMP列,只有第一个自动更新. 自

@Html.DropDownList 设置选中值无效

有时候在ASP.NET  MVC中用@Html.DropDownList 设置选中值无效,如图: 具体原因说不清,反正只要改个名字就行了!!!,如图:::

Mysql 慢查询设置

Mysql慢查询设置 分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”. ========================================================= 方法一: 这个方法我正在用,呵呵,比较喜欢这种即时性的. Mysql5.0以上的版本可以支持将执行比较慢的SQL语句记录下来. mysql> show variables like 'lon

MySQL外键设置中的的 Cascade、NO ACTION、Restrict、SET NULL

MySQL外键设置中的的属性含义: cascade方式 在父表上update/delete记录时,同步update/delete掉子表的匹配记录 set null方式 在父表上update/delete记录时,将子表上匹配记录的列设为null 要注意子表的外键列不能为not null No action方式 如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作 Restrict方式 同no action, 都是立即检查外键约束 Set default方式 父表有变更

VS2015中DataGridView的DataGridViewComBoboxCell列值无效及数据绑定错误的解决方法

在VS2015中练习DataGridView的使用, 发现其中的DataGridViewComBoboxCell列存在着绑定数据库列后出现值无效的提示 根据网上的解决办法,添加了DataError后可以解决问题,但是数据库列依然不能正常绑定 研究一番后终于明白出错的原因,并找到解决方法: DataGridViewComBoboxCell列绑定的数据要存在列的Item内,不然就会认为是错误值,所以在设置列的DataPropertyName值之前一定要填充列的Item,或者提前设置列的绑定数据,最后

DataGridViewComboBoxColumn值无效解决方法

值无效,可能是你下拉框选项,没有这样的值,而你却设置这个值. dataGridView1.Rows[i].Cells[1].Value?=?"选项一"; 解决方法就是在窗体的构造函数里添加如下代码: this.dataGridView1.DataError?+=?delegate(object?sender,?DataGridViewDataErrorEventArgs?e)?{?}; 1.必须确定,给DataVridView赋值,是在DataGridViewComboBox已经绑定了