Mysql慢查询开启和查看 ,存储过程批量插入1000万条记录进行慢查询测试
首先登陆进入Mysql命令行 执行sql show variables like 'slow_query%'; 结果为OFF 说明还未开启慢查询
执行sql show variables like 'long_query_time'; 可以看到具体的慢查询 “”时限“
我们先开启慢查询 执行sql
set global slow_query_log='ON';
这是再去查询一下(show variables like 'slow_query%';)发现已经开启了。
也可以设置时限为1秒
set global long_query_time=1;
上面的方法只是临时生效,mysql重启后就会失效
我们设置永久性的需要 在/etc/my.cnf里设置 (如果是win phpstudy 则在my.ini里添加)
# 慢查询日志
slow_query_log = ON
slow_query_log_file = D:\phpstudy\PHPTutorial\MySQL\data\XX-081269-01-slow.log
long_query_time = 1
重启即可
下面我们来慢查询执行一次
首先建表 批量插入1000万条测试记录
1 #创建测试的test表 2 DROP TABLE IF EXISTS test; 3 CREATE TABLE test( 4 ID INT(10) NOT NULL, 5 `Name` VARCHAR(20) DEFAULT '' NOT NULL, 6 PRIMARY KEY( ID ) 7 )ENGINE=INNODB DEFAULT CHARSET utf8; 8 9 #创建生成测试数据的存储过程 10 DROP PROCEDURE IF EXISTS pre_test; 11 DELIMITER // 12 CREATE PROCEDURE pre_test() 13 BEGIN 14 DECLARE i INT DEFAULT 0; 15 SET autocommit = 0; 16 WHILE i<10000000 DO 17 INSERT INTO test ( ID,`Name` ) VALUES( i, CONCAT( 'Carl', i ) ); 18 SET i = i+1; 19 IF i%2000 = 0 THEN 20 COMMIT; 21 END IF; 22 END WHILE; 23 END; // 24 DELIMITER ; 25 26 #执行存储过程生成测试数据 27 CALL pre_test();