一、 相关参数:
• slow_query_log
◦ 是否开启慢查询日志
• slow_query_log_file
◦ 慢查询日志文件名, 在 my.cnf 我们已经定义为slow.log,默认是 机器名 -slow.log
• long_query_time
◦ 制定慢查询阈值, 单位是秒,且当版本 >=5.5.X ,支持毫秒。例如 0.5 即为 500ms
◦ 大于 该值,不包括值本身。例如该值为2,则执行时间正好 等于 2的SQL语句 不会记录
• log_queries_not_using_indexes
◦ 将没有使索引的SQL记录到慢查询日志
◾ 如果一开始因为数据少,查表快,耗时的SQL语句没被记录,当数据量大时,该SQL可能会执行很长时间
◾ 需要测试阶段就要发现问题,减小上线后出现问题的桜率
• log_throttle_queries_not_using_indexes
◦ 限制每分钟内,在慢查询日志中,去记录没有使用索引的SQL语句的次数;版本需要 >=5.6.X
◾ 因为没有使用索引的SQL可能会短时间重复执行,为了避免日志快速增大,限制每分钟的记录次数
• min_examined_row_limit
◦ 扫描记录少于改值的SQL不记录到慢查询日志
◾ 结合去记录没有使用索引的SQL语句的例子,有可能存在某一个表,数据量维持在几行左右,且没有建立索引。这种表即使不建立索引,查询也很快,扫描记录很小,如果确定有这种表,则可以通过此参数设置,将这个SQL不记录到慢查询日志。
• log_slow_admin_statements
◦ 记录超时的管理操作SQL到慢查询日志,比如ALTER/ANALYZE TABLE
• log_output
◦ 慢查询日志的栺式,[FILE | TABLE | NONE],默认是FILE;版本 >=5.5
◦ 如果设置为TABLE,则记录的到 mysql.slow_log
• log_slow_slave_statements
◦ 在从服务器上开启慢查询日志
• log_timestamps 5.7
◦ 写入时区信息。可根据需求记录UTC时间或者服务器本地系统时间
二、mysqldumpslow工具使用
如果在线上操作,不需要 mysqldumpslow 去扫整个 slow.log , 可以去 tail -n 10000 slow.log > last_10000_slow.log (10000 这个数字根据实际情况进行调整 ),然后进行 mysqldumpslow last_10000_slow.log
三、慢查询日志存入表
-- 在my.cnf 中增加 log_output = TABLE,打开slow_query_log选项,然后重启数据库实例
--
mysql> show variables like "log_output%";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output | TABLE |
+---------------+-------+
1 row in set (0.00 sec)
mysql> show variables like "slow_query_log";
+----------------+-------+
| Variable_name | Value |
+----------------+-------+
| slow_query_log | ON |
+----------------+-------+
1 row in set (0.00 sec)
mysql> select * from mysql.slow_log;
+----------------------------+---------------------------+-----------------+-----------------+-----------+---------------+----+----------------+-----------+-----------+-----------------+-----------+
| start_time | user_host | query_time | lock_time | rows_sent | rows_examined | db | last_insert_id | insert_id | server_id | sql_text | thread_id |
+----------------------------+---------------------------+-----------------+-----------------+-----------+---------------+----+----------------+-----------+-----------+-----------------+-----------+
| 2015-11-20 19:50:28.574677 | root[root] @ localhost [] | 00:00:04.000306 | 00:00:00.000000 | 1 | 0 | | 0 | 0 | 11 | select sleep(4) | 3 |
+----------------------------+---------------------------+-----------------+-----------------+-----------+---------------+----+----------------+-----------+-----------+-----------------+-----------+
1 row in set (0.00 sec)
mysql> show create table mysql.slow_log;
--
-- 表结构输出省略
-- 关键一句如下:
--
ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log' -- ENGINE=CSV 这里使用的是CSV的引擎,性能较差
-- 建议将slow_log表的存储引擎改成MyISAM
mysql> alter table mysql.slow_log engine = myisam;
ERROR 1580 (HY000): You cannot 'ALTER' a log table if logging is enabled '-- 提示我正在记录日志中,不能转换
mysql> set global slow_query_log = 0; -- 先停止记录日志
Query OK, 0 rows affected (0.01 sec)
mysql> alter table mysql.slow_log engine = myisam; -- 然后转换表的引擎
Query OK, 2 rows affected (5.05 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> set global slow_query_log = 1; -- 再开启记录日志
Query OK, 0 rows affected (0.00 sec)
mysql> show create table mysql.slow_log;
--
-- 表结构输出省略
-- 关键一句如下:
--
ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Slow log' -- ENGINE 变成了MyISAM
使用 TABLE 的优势在于方便查询,但是记住当在备份的时候,不要备份慢查询日志的表,避免备份过大。
使用 FILE 也可以,需要定时清除该文件,避免单文件过大。
mysql之 slow log 慢查询日志的更多相关文章
-
MySQL:动态开启慢查询日志(Slow Query Log)
前言 在开发中,高效能的程序 也包括 高效能的查询,所以优化SQL也是程序员必要技能之一.要优化就必须要有慢日志记录才可以知道哪些查询慢,然后反向去修改 慢日志设置方式 写入文件 写入数据库 实践操作 ...
-
[mysql] mysql 5.6.X 慢查询日志
慢查询日志 一篇好文章,学习保存.... 打开慢查询日志 慢查询日志,顾名思义就是记录执行比较慢查询的日志. 查看是否开启慢查询日志: show variables like '%slow%'; 打开 ...
-
MySQL数据库4Python操作mysql、索引、慢查询日志
目录 一.Python 操作 mysql 1.1python 操作 mysql 1.2查询数据 1.3增加(添加.更新)数据 1.4修改数据 1.5删除数据 1.6SQL注入问题 1.6.1问题的引入 ...
-
MySQL:explain 和 慢查询日志
1. 执行SQL时显示执行情况 explain + SQL语句 2. 强制使用索引 select * from t force index (a) where a between 1 ...
-
Mysql(Mariadb)慢查询日志中long_query_time 与log_queries_not_using_indexes与min_examined_row_limit 关系分析
慢查询日志中long_query_time 与log_queries_not_using_indexes与min_examined_row_limit 关系分析 参数介绍: long_query_ ...
-
mysqlsla 分析mysql慢查询日志
发现有一个工具mysqlsla,分析查询日志比 mysqldumpslow分析的会更清晰明了! 安装mysqlsla: 下载mysqlsla-2.03.tar.gz [root@yoon export ...
-
SQL语句技巧_索引的优化_慢查询日志开启_root密码的破解
1.正则表达式的使用 regexp例:select name,email from t where email regexp '@163[.,]com$'使用like方式查询selct name,em ...
-
MySQL 5.5开启慢查询功能
vim /etc/my.cnf [mysqld] slow-query-log = on # 开启慢查询功能 slow_query_log_file = /usr/local/mysql/data/s ...
-
MySQL慢查询日志(SLOW LOG)
慢查询日志可以帮助DBA或开发人员定位可能存在问题的SQL语句,从而进行优化. 如何开启 默认情况下,MySQL是不开启慢查询日志的.可以通过以下命令查看是否开启: mysql> SHOW VA ...
随机推荐
-
【Android测试】【第七节】Monkey——源码浅谈
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/4713466.html 前言 根据上一篇我们学会了Monke ...
-
依賴注入入門——Unity(一)
參考資料http://blog.csdn.net/m13666368773/article/details/7802126 背景介紹 在设计模式中,尤其是结构型模式很多时候解决的就是对象间的依赖关系, ...
-
mysql的面试试题
1, mysql的复制原理以及流程. (1)先问基本原理流程,3个线程以及之间的关联. 答:Mysql复制的三个线程:主库线程,从库I/O线程,从库sql线程: 复制流程:(1)I/O线程向主库发出请 ...
-
初始Knockout
Kncokout是一个轻量级的ui类库,通过应用MVVN模式得JavaScript前端简单化. MVVN模式:http://www.cnblogs.com/xueduanyang/p/3601471. ...
-
WPF4多点触摸事件
原文 WPF4多点触摸事件 UIElement在WPF4下添加了很多支持多点触摸的事件,通过它们可以在硬件支持的情况下处理多点触摸,以下通过代码来说明通过处理这些事件,我们可以做些什么: 一.触摸相关 ...
-
45_redux_comment应用_redux版本_异步功能
/* * 包含所有action的type名称常量 * */ //添加评论 export const ADD_COMMENT = 'add_comment'; //删除评论 export const D ...
-
repo 获取各个库的tag代码或者分支代码
关于mainfest.xml中的参数格式和说明,可以自己查阅,此处不详细写,我们知道project中的reversion可以指定分支,tag,commitid等,那么如何书写呢? 首先克隆mainfe ...
-
JS生成GUID方法
function GUID() { this.date = new Date(); /* 判断是否初始化过,如果初始化过以下代码,则以下代码将不再执行,实际中只执行一次 */ if (typeof t ...
-
Sass 基本特性-运算 感觉满满都是坑
Sass中的基本运算 一.加法 在 CSS 中能做运算的,到目前为止仅有 calc() 函数可行.但在 Sass 中,运算只是其基本特性之一. sass做加法运算是可以不考虑参数带单位,但需 ...
-
【Mac系统 + Python + Django】之开发一个发布会系统【Django模型(三)】
上一部分给大家介绍Django的视图. 接下来继续来了解Django框架,来看第三部分,此部分是对数据库的操作. 目录: 一.设计系统表 二.admin后台管理 三.基本数据访问(SQLite数据库) ...