1、mysql slow query log参数设置

首先简单的介绍一下如何开启mysql的slowlog,主要设置一下几个参数:

1)–slow_query_log = 1,开启slowlog。

2)–slow_query_log_file=file_name.,设置slowlog文件存放的地方

3)–long_query_time = 10,定义slow query执行时间的阈值。

4)–min_examined_row_limit ,sql语句执行时间大于long_query_time至少被检查到的次数。

5)–log-output = {file|table}不能为NULL,否则也不能记录慢查询。

还有其他一些slowlog相关的参数,The Slow Query Log

2、如何记录mysql所有执行的sql?

在mysql运维过程中,经常需要分析mysql的全量日志,一般的有两种方法。

1)开启general log。

2)开启slowlog,并设置long_query_time=0,且min_examined_row_limit为0或者1。这两个参数都可以动态设置。

第一种方法很好理解。第二种方案为什么需要这样设置,下面从mysql源码中寻找一下蛛丝马迹。

3、slow query log执行逻辑

其实很多人知道要设置long_query_time参数,但是对 min_examined_row_limit没有多少理解。

先看下下面两个函数

sql/sql_parse.cc中的log_slow_applicable()函数

/*

The following should never be true with our current code base,

but better to keep this here so we don't accidently try to log a

statement in a trigger or stored function

*/

if (unlikely(thd->in_sub_stmt))

DBUG_RETURN(false); // Don't set time for sub stmt

/*

Do not log administrative statements unless the appropriate option is

set.

*/

if (thd->enable_slow_log)

{

bool warn_no_index= ((thd->server_status &

(SERVER_QUERY_NO_INDEX_USED |

SERVER_QUERY_NO_GOOD_INDEX_USED)) &&

opt_log_queries_not_using_indexes &&

!(sql_command_flags[thd->lex->sql_command] &

CF_STATUS_COMMAND));

bool log_this_query= ((thd->server_status & SERVER_QUERY_WAS_SLOW) ||

warn_no_index) &&

(thd->get_examined_row_count() >=

thd->variables.min_examined_row_limit);

bool suppress_logging= log_throttle_qni.log(thd, warn_no_index);

if (!suppress_logging && log_this_query)

DBUG_RETURN(true);

}

DBUG_RETURN(false);

}

sql/sql_class.h中的update_server_status()函数判断sql是否是慢查询。

/**

Update server status after execution of a top level statement.

Currently only checks if a query was slow, and assigns

the status accordingly.

Evaluate the current time, and if it exceeds the long-query-time

setting, mark the query as slow.

*/

void update_server_status()

{

ulonglong end_utime_of_query= current_utime();

if (end_utime_of_query > utime_after_lock + variables.long_query_time)

server_status|= SERVER_QUERY_WAS_SLOW;

}

简单的分析一下mysql的检测和记录mysql slow query log的逻辑。

1)判断是否开启了slowlog

2)not using index检测

3)bool log_this_query用于判断slow log是否记录这种慢查询。

bool表达式转换一下可以发现这种关系。

SERVER_QUERY_WAS_SLOW) && (thd->get_examined_row_count() >= thd->variables.min_examined_row_limit)

需要同时满足两个条件:

1)sql执行时间是否超过long_query_time

2)sql检查到的次数是否大于min_examined_row_limit的次数

mysql slow设置_mysql slow log设置相关推荐

  1. [技术]mysql 慢查询时间设置_Mysql 慢查询设置

    -- 查询是否设置慢查询 show variables like 'slow_query%'; -- 慢查询时间  -- show variables like 'long_query_time'; ...

  2. mysql 慢查询时间设置_Mysql 慢查询设置

    Mysql慢查询设置 分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为"慢查询& ...

  3. mysql连接编码设置_MySQL基础 - 编码设置

    刚开始工作的时候,在工作中遇到的与数据库相关的问题,多半跟编码有关,总结一下数据库编码的设置. 字符集 查看数据库支持的字符集: mysql> SHOW CHARACTER SET; 从图中可以 ...

  4. mysql 查询缓存设置_MySQL查询缓存设置 提高MySQL查询性能

    从 MySQL4开始,出现了QueryCache查询缓存,如果使用了QueryCache,当查询接收到一个和之前同样的查询,服务器将会从查询缓存种检索结果,而不是再次分析和执行上次的查询.这样就大大提 ...

  5. mysql 连接 字符集设置_Mysql 字符集的设置和修改

    Show variables like 'character%';  //显示目前mysql默认 字符集 显示数据连接字符集 修改字符集 D:\mysql>Net stop mysql   // ...

  6. MySQL slowlog 统计_mysql slow log 简单统计

    众所周知,mysql slow log中很多sql语句结构和对象是相同,只是其中变量不一样,对于这样的sql,我们完全可以将其归为一类,统计其执行次数.执行时间平均值等参数,而pt-query-dig ...

  7. mysql 最大连接_MySQL最大连接数设置

    "Can not connect to MySQL server. Too many connections"-mysql 1040错误, 这是因为访问MySQL且还未释放的连接数 ...

  8. mysql 增大连接数_MYSQL最大连接数设置

    "Can not connect to MySQL server. Too many connections"-mysql 1040错误, 这是因为访问MySQL且还未释放的连接数 ...

  9. mysql连接数设置_MySQL最大连接数设置

    "Can not connect to MySQL server. Too many connections"-mysql 1040错误, 这是因为访问MySQL且还未释放的连接数 ...

最新文章

  1. C++ leetcode 7. 整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
  2. 多比(SVG/VML)图形控件多比(SVG/VML)图形拓扑图控件免费下载地址
  3. Android用户界面设计:布局基础
  4. 计算机中间层怎么解决,电脑中间层服务器地址怎么看
  5. Console-算法[for]-素数
  6. Opencv图像边缘检测——Roberts算子(手写)、Sobel算子(手写和调包)、Scharr算子、Laplacian算子
  7. 基础线性代数知识点总结与回顾(三):向量空间和二次型
  8. 网络篇 OSPF的DR与BDR的选举-48
  9. C# 给自己的网址接入微信扫描登录入口
  10. django 注册登录邮箱验证功能
  11. Week8学习总结-数据库
  12. gan 总结 数据增强_深度学习中的数据增强(下)
  13. html5 midi,源码:MIDI 文件生成音乐乐谱(Midi To Sheet Music)
  14. Android Weekly #35 知识工作者就是管理者——虽未管人,但在管事
  15. 帆软报表动态数据源插件2.0使用教程
  16. python cad 提取高程点_【测量实战技术】Cad中导入坐标高程点并可以提取坐标带高程...
  17. python每隔5秒执行一次
  18. Philosophy
  19. 基于Java+SpringBoot+Vue前后端分离学生信息管理设计实现
  20. 安卓手机管理软件_老牌管理软件,已破,无广告,全功能不受限。安替换手机文件管理软件吧。...

热门文章

  1. 观其关键字排名查询工具_seo常用工具统计
  2. “提离职后老板要给我加薪,我应该留下吗?”
  3. pandas常用功能整理
  4. matlab 数组索引必须为正整数或逻辑值
  5. nodemcu 智能插座
  6. 第七届科技节微电影比赛须知
  7. 微信小程序场景值列表map格式
  8. 技术贴_关于某信辅助分析记录和若干检测方法
  9. 谐振电路的原理和作用
  10. 高效阅读 - 日本 - 渡边康弘