MySQL的事件就像Linux系统上的定时任务,按照设置的时间或者间隔时间执行设置好的任务。

如果用SQLyog一类的写存储过程、触发器或者事件会省事一些,例如SQLyog就会生成一个大致的模板:

 1 DELIMITER $$
 2 CREATE EVENT `report`.`monitor_user4cx` ON SCHEDULE EVERY 15 MINUTE  DO 
 3 BEGIN
 4 DECLARE cx_id INT(10);
 5 DECLARE t_query VARCHAR(500);
 6 DECLARE done INT DEFAULT FALSE;
 7 DECLARE cur CURSOR FOR SELECT id FROM information_schema.PROCESSLIST WHERE `USER`='cx' AND `TIME` > 600 AND `Command`='Query';
 8 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
 9 OPEN cur;
10 read_loop:LOOP
11 FETCH cur INTO cx_id;
12 IF done THEN
13 LEAVE read_loop;
14 END IF;
15 SELECT t.trx_query,t.trx_started,p.`USER` FROM information_schema.PROCESSLIST p INNER JOIN information_schema.innodb_trx t ON p.id=t.trx_mysql_thread_id WHERE p.id=cx_id INTO @t_query,@t_time,@p_user;
16 INSERT INTO test.monitor_user4cx(`p_id`,`start_time`,`user`,`time`,`query`) VALUES (cx_id,@t_time,@p_user,NOW(),@t_query);
17 KILL cx_id;
18 END LOOP;
19 CLOSE cur;
20 END$$
21 DELIMITER ;
View Code

相关文章:

  • 2022-12-23
  • 2021-10-26
  • 2022-12-23
  • 2021-06-07
  • 2021-08-28
  • 2022-12-23
  • 2022-12-23
  • 2021-12-29
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-01-29
  • 2022-12-23
  • 2022-01-13
  • 2022-02-02
  • 2022-12-23
相关资源
相似解决方案