MySQL定时任务的实现(定时调用存储过程进行数据插入操作)

MySQL中,有时候我们需要维护表中的数据信息,例如定时清空某个表中的数据,定时对某个表的数据进行处理,定时将一个表的部分数据备份等等需要定时操作的步骤,mysql的定时任务都可以实现。

下面的案例是创建一个对表插入数据的存储过程,然后创建一个定时任务执行该存储过程。

创建一张关于环境数据的表wjs_dust_record_02;将设备获取到的环境数据信息存储到该表中。创建一个存储过程,作用是将一条数据插入到表中。设置定时器,每秒钟执行一次该存储过程,打开定时器,查看该表中的数据结果。主要操作步骤如下:

1,创建wjs_dust_record_02表:

CREATE TABLE `wjs_dust_record_02`  (
  `id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `device_sn` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '设备编号',
  `upload_time` datetime(0) NULL DEFAULT NULL COMMENT '上传时间',
  `temperature` int(11) NULL DEFAULT NULL COMMENT '温度',
  `humidity` int(11) NULL DEFAULT NULL COMMENT '湿度',
  `atmospheric_pressure` int(11) NULL DEFAULT NULL COMMENT '气压',
  `wind_speed` int(11) NULL DEFAULT NULL COMMENT '风速',
  `wind_direction` int(11) NULL DEFAULT NULL COMMENT '风向',
  `tsp` int(11) NULL DEFAULT NULL COMMENT '总悬浮颗粒物TSP',
  `pm10` int(11) NULL DEFAULT NULL COMMENT '可吸入颗粒物pm10',
  `pm2p5` int(11) NULL DEFAULT NULL COMMENT '细微颗粒物pm2.5',
  `noise` int(11) NULL DEFAULT NULL COMMENT '噪声',
  `create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `upload_time_idx`(`upload_time`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1492587 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '扬尘设备上传记录' ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

2,创建名为timingpro 的存储过程

#创建存储过程

CREATE PROCEDURE timingpro ( )

BEGIN

insert into wjs_dust_record_02 (device_sn, upload_time, pm10, pm2p5, tsp) values('4058745992445', now(), 156, 335, 80);

END;

3,创建定时器timingJob:

#创建定时器
create event if not exists timingJob
on schedule every 1 second
on completion PRESERVE
do call timingpro();

4,打开定时器/关闭定时器

#启动定时器
SET GLOBAL event_scheduler = 1;
#停止定时器
SET GLOBAL event_scheduler = 0;

5,开启定时事件(默认是开启的,如果打开定时器,存储过程没执行就是事件未开启)

#开启事件
ALTER EVENT timingJob ON  COMPLETION PRESERVE ENABLE;  
#关闭事件
ALTER EVENT timingJob ON  COMPLETION PRESERVE DISABLE;

6,查看定时器的状态(event_scheduler值为OFF表示定时器关闭的,只需要执行步骤4打开定时器即可)

#查看定时器状态
SHOW VARIABLES LIKE '%sche%'; 

MySQL定时任务的实现(定时调用存储过程进行数据插入操作)_第1张图片

查看结果,表wjs_dust_record_02中每秒钟被插入了一条数据:

MySQL定时任务的实现(定时调用存储过程进行数据插入操作)_第2张图片

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(MySql数据库)