mysql slow设置_mysql slow log设置
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设置相关推荐
- [技术]mysql 慢查询时间设置_Mysql 慢查询设置
-- 查询是否设置慢查询 show variables like 'slow_query%'; -- 慢查询时间 -- show variables like 'long_query_time'; ...
- mysql 慢查询时间设置_Mysql 慢查询设置
Mysql慢查询设置 分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为"慢查询& ...
- mysql连接编码设置_MySQL基础 - 编码设置
刚开始工作的时候,在工作中遇到的与数据库相关的问题,多半跟编码有关,总结一下数据库编码的设置. 字符集 查看数据库支持的字符集: mysql> SHOW CHARACTER SET; 从图中可以 ...
- mysql 查询缓存设置_MySQL查询缓存设置 提高MySQL查询性能
从 MySQL4开始,出现了QueryCache查询缓存,如果使用了QueryCache,当查询接收到一个和之前同样的查询,服务器将会从查询缓存种检索结果,而不是再次分析和执行上次的查询.这样就大大提 ...
- mysql 连接 字符集设置_Mysql 字符集的设置和修改
Show variables like 'character%'; //显示目前mysql默认 字符集 显示数据连接字符集 修改字符集 D:\mysql>Net stop mysql // ...
- MySQL slowlog 统计_mysql slow log 简单统计
众所周知,mysql slow log中很多sql语句结构和对象是相同,只是其中变量不一样,对于这样的sql,我们完全可以将其归为一类,统计其执行次数.执行时间平均值等参数,而pt-query-dig ...
- mysql 最大连接_MySQL最大连接数设置
"Can not connect to MySQL server. Too many connections"-mysql 1040错误, 这是因为访问MySQL且还未释放的连接数 ...
- mysql 增大连接数_MYSQL最大连接数设置
"Can not connect to MySQL server. Too many connections"-mysql 1040错误, 这是因为访问MySQL且还未释放的连接数 ...
- mysql连接数设置_MySQL最大连接数设置
"Can not connect to MySQL server. Too many connections"-mysql 1040错误, 这是因为访问MySQL且还未释放的连接数 ...
最新文章
- C++ leetcode 7. 整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
- 多比(SVG/VML)图形控件多比(SVG/VML)图形拓扑图控件免费下载地址
- Android用户界面设计:布局基础
- 计算机中间层怎么解决,电脑中间层服务器地址怎么看
- Console-算法[for]-素数
- Opencv图像边缘检测——Roberts算子(手写)、Sobel算子(手写和调包)、Scharr算子、Laplacian算子
- 基础线性代数知识点总结与回顾(三):向量空间和二次型
- 网络篇 OSPF的DR与BDR的选举-48
- C# 给自己的网址接入微信扫描登录入口
- django 注册登录邮箱验证功能
- Week8学习总结-数据库
- gan 总结 数据增强_深度学习中的数据增强(下)
- html5 midi,源码:MIDI 文件生成音乐乐谱(Midi To Sheet Music)
- Android Weekly #35 知识工作者就是管理者——虽未管人,但在管事
- 帆软报表动态数据源插件2.0使用教程
- python cad 提取高程点_【测量实战技术】Cad中导入坐标高程点并可以提取坐标带高程...
- python每隔5秒执行一次
- Philosophy
- 基于Java+SpringBoot+Vue前后端分离学生信息管理设计实现
- 安卓手机管理软件_老牌管理软件,已破,无广告,全功能不受限。安替换手机文件管理软件吧。...