目录
一、方法一,修改参数(这种操作重启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;