mysql开启慢查询并写入库表

目录

一、方法一,修改参数(这种操作重启mysql就失效)

二、修改配置文件(略)


一、方法一,修改参数(这种操作重启mysql就失效)

查看是否开启慢查询

SHOW VARIABLES LIKE '%QUERY%';

查看 slow_query_log状态,一般默认是OFF

# 开启 -- slow_query_log 默认是OFF,表示是否打开慢查询
SET GLOBAL slow_query_log='ON';

# 将慢查询存储在表当中 - -log_output 默认是FILE,表示慢查询日志输入至日志文件,可以通过set修改输出为TABLE
SET GLOBAL log_output='TABLE';

# 设置慢查询多久记录-- long_query_time默认是 10.000000,表示记录超过时间的慢查询
SET GLOBAL long_query_time=2;
# 这个修改有意思,半天发现没有修改正确,什么原因呢。修改完毕之后,关闭数据库连接(例如我使用sqlyong操作的,关闭,再开一个新的即可)

# -- 是否打开看个人需要-- log_queries_not_using_indexes 默认是OFF,表示是否记录没有使用索引的查询
SET GLOBAL log_queries_not_using_indexes = ON;





 

# 检验慢查询

SELECT SLEEP(3);
SELECT * FROM mysql.`slow_log`;
# 恢复上述修改
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
# 清空慢查询表

SET GLOBALslow_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;

二、修改配置文件(略)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值