Mysql事件定时操作事务

下面是我工作中使用mysql事件实时1分钟根据需求统计查询订单数据落表

Mysql事件定时操作事务_第1张图片

 红框是事件创建语法

drop event if exists brand_realdate_again=删除已存在的事件,

create event brand_realdate_again  //创建事件名称
ON SCHEDULE EVERY 1 MINUTE //每一分钟执行一次,事件时间维度精准到秒级
STARTS concat(CURRENT_DATE,' 12:00:00')  //什么时候开始执行,只要是过了12点之后,每一分钟都会执行存储过程里面的事务,
DO //执行命令

接下来会涉及到存储过程变量赋值,为什么要赋值,where 统计时间有很多种方法,比如DATE_FORMAT(时间,‘%Y-%m-%d’)

BETWEEN  '时间' and '时间' 

时间>=  时间<=

推荐用BETWEEN  '时间' and '时间'  毫秒级响应,sql优化它占一半,如下图所示

Mysql事件定时操作事务_第2张图片

下面继续走

BEGIN  //存储过程语法必须有

DECLARE dates VARCHAR(20);
DECLARE begenes VARCHAR(30);
DECLARE endes VARCHAR(30);=定义变量类型

SET @dates=(SELECT DATE_FORMAT(NOW(),'%Y-%m-%d'));
SET @begenes=(SELECT DATE_FORMAT(CURDATE(),'%Y-%m-%d %H:%i:%s'));
SET @endes=(SELECT DATE_SUB(DATE_ADD(CURDATE(), INTERVAL 1 DAY),INTERVAL 1 SECOND)); 给刚才创建的变量赋值

delete from realtime_db.profit_expend_sales where dt=DATE_SUB(CURDATE(),INTERVAL 0 DAY);   //删除刚才一分钟统计过的数据,表所有不要设置主键,要不然查出来的数据插入不进去

接下来根据需求  insert into 表1 select from 表2

end

结束

可以多去尝试,一分钟数据会不会实时更新,记住如果数据库表里面上千万的数据会很慢

我的数据会定时把之前数据删除,只留1个月的数据

你可能感兴趣的