mysql如何开启慢查询 清空slow_log日志或者slow_log表?

赞赏 2017-06-13

mysql能记录下所有执行超过long_query_time时间的SQL语句, 帮我们找到执行慢的SQL, 方便我们对这些SQL进行优化。


查看目前慢查询日志的情况

show variables like '%log_output%'; //默认是FILE
show variables like '%quer%';

log_output 默认是FILE,表示慢查询日志输入至日志文件,可以通过set修改输出为TABLE
log_queries_not_using_indexes 默认是OFF,表示是否记录没有使用索引的查询
slow_query_log 默认是OFF,表示是否打开慢查询
long_query_time默认是 10.000000,表示记录超过时间的慢查询


打开慢查询,记录查询时间超过5秒的慢查询,将慢查询结果输出至slow_log表中

set global slow_query_log = ON;
SET GLOBAL long_query_time = 5; //10.000000
SET GLOBAL log_queries_not_using_indexes = ON; //是否打开看个人需要
set global log_output='TABLE'; // FILE
select * from MySQL.slow_log order by start_time desc;


恢复慢查询的参数设置情况 

SET global slow_query_log = OFF;
SET GLOBAL long_query_time = 10.000000;
SET GLOBAL log_queries_not_using_indexes = OFF;
SET global log_output='FILE'; // FILE


show variables like '%slow%';
+---------------------+------------------------------------------+
| Variable_name |Value |
+---------------------+------------------------------------------+
| log_slow_queries| ON |
| slow_launch_time| 2 |
| slow_query_log |ON |
|slow_query_log_file | /data/mysql/slow_queries_3306.log |
+---------------------+------------------------------------------+
4 rows in set(0.00 sec)
show variables like 'log_output%';
log_output   FILE


慢查询输出到文件并修改日志文件目录

set global slow_query_log=0;
show variables like '%slow%';
+---------------------+------------------------------------------+
| Variable_name |Value |
+---------------------+------------------------------------------+
| log_slow_queries| OFF |
| slow_launch_time| 2 |
| slow_query_log |OFF |
|slow_query_log_file | /data/mysql/slow_queries_3306.log |
+---------------------+------------------------------------------+
4 rows in set(0.00 sec)
set global slow_query_log_file='/data/mysql/new-slow.log';
Query OK, 0 rows affected (0.03 sec)
set global slow_query_log=1;
Query OK, 0 rows affected (0.01 sec)


show variables like '%slow%';
+---------------------+----------------------------------------------+
| Variable_name |Value |
+---------------------+----------------------------------------------+
| log_slow_queries| ON |
| slow_launch_time| 2 |
| slow_query_log |ON |
|slow_query_log_file | /data/mysql/new_slow.log |
+---------------------+----------------------------------------------+
4 rows in set(0.00 sec)

show variables like '%log_output%'; // 目前是FILE

查看日志文件

[mysql@xxx-xxx ~]$ more /data/mysql/new-slow.log

6, backup the oldbig slow log file to other directory.


清空slow_log表

select * from mysql.slow_log;

SET GLOBAL slow_query_log = 'OFF';
ALTER TABLE mysql.slow_log RENAME mysql.slow_log_drop;

CREATE TABLE `slow_log` (
`start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATECURRENT_TIMESTAMP,
 `user_host`mediumtext NOT NULL,
`query_time` time NOT NULL,
 `lock_time`time NOT NULL,
 `rows_sent`int(11) NOT NULL,
`rows_examined` int(11) NOT NULL,
 `db`varchar(512) NOT NULL,
`last_insert_id` int(11) NOT NULL,
 `insert_id`int(11) NOT NULL,
 `server_id`int(10) unsigned NOT NULL,
 `sql_text`mediumtext NOT NULL
) ENGINE=CSVDEFAULT CHARSET=utf8 COMMENT='Slow log';

SET GLOBAL slow_query_log = 'ON';
DROP TABLE mysql.slow_log_drop;

登陆后阅读全文
阅读 2242 赞赏 0 有用 1 没用 0 收藏 0 分享

   



0 条留言

王一甲的头像

王一甲

记录分享linux操作小技巧

相关文章

Ubuntu安装MySQL提示Depends: mysql-server-5.5 but it is not going

mysql-bin.00000* 文件误删删除导致mysql启动不起来

Linux screen 提示:There is no screen to be resumed matching

MySQL 上传报错#1064-You have an error in your SQL syntax

Linux 下 MySQL 无法访问的问题如何排查?

Linux下如何授权 MySQL 外网访问?

Linux系统如何查看 MySQL 版本号?

Ubuntu或Debian系统内如何卸载 MySQL 数据库服务?

MySQL误删除授权表 root 记录,无法登陆怎么办?

Linux 系统下 MySQL 如何开启慢查询?

有料推荐

这世界欠我一个这样的老公!

高校学生模仿“世界名画”摆拍,可以说是戏精本精了

iPhone X 跌破发行价,苏宁200亿入股恒大 | 财经日日评

果然是高手!这次在日本,特朗普竹杠敲得不是一般狠

资深黄牛现身说法:iPhone X价格秒变不停,就像炒股一样

长一样的双胞胎也能识别?蚂蚁金服发布「眼纹识别」技术

苏联是怎么被阿富汗拖垮的?

美团或入局「分时租赁」共享汽车,王兴要大笔投入「泛出行」领域了? | 36氪独家

你或许被“一盘番茄炒蛋”刷屏了,但有人辛酸,有人质疑

iPhone X发售前夜,黄牛与苹果公司的不安

他的文章

Linux screen 提示:There is no screen to be resumed matching

写代码怎能不会这些Linux命令?(linux常用命令)

翻译 | 最实用的 Linux 命令行使用技巧

Linux下如何设置和查看系统环境变量

Linux 终端里的记录神器 - script命令

bash 执行 shell 脚本提示 ll: command not found

linux ll 或 ls -l 后,文件的owner和group全是数字,为啥?

linux下grep过滤的时候如何排除某些字符以及排除多个?

Linux下的sort如何按数字按某列排序?(包含sort常用选项)

Charles手机抓包操作流程(iOS的http/https请求)

手机扫一扫
分享文章