mysql如何查看定时器有没有执行
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都网站建设、山亭网络推广、小程序设计、山亭网络营销、山亭企业策划、山亭品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供山亭建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
1.查看是否开启evevt与开启evevt。
1.1、MySQL evevt功能默认是关闭的,可以使用下面的语句来看evevt的状态,如果是OFF或者0,表示是关闭的。
show VARIABLES LIKE '%sche%';
1.2、开启evevt功能
SET GLOBAL event_scheduler = 1;
2.创建定时器的过程
2.1、创建测试表test
drop table if exists test;
create table test
(
id int(11) not null auto_increment primary key,
time datetime not null
) engine=innodb default charset=utf8;
2.2、创建evevt要调用的存储过程test_proce
delimiter //
drop procedure if exists test_proce//
create procedure test_proce()
begin
insert into test(time) values(now());
end//
delimiter ;
2.3、开启evevt(要使定时起作用,MySQL的常量GLOBAL event_scheduler必须为on或者是1)
执行show variables like 'event_scheduler';查看evevt是否开启;
若没开启执行set global event_scheduler='on';
2.4、创建事件test_event(其作用:每隔一秒自动调用test_proce()存储过程)
drop event if exists test_event;
create event test_event
on schedule every 1 second
on completion preserve disable
do call test_proce();
2.5、开启事件test_event
可以。根据查询mysql客户端资料知,只装mysql客户端可以用定时器。客户端(Client)或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。
mysql要实现定时执行sql语句就要用到Event
具体操作如下:
先看看看event 事件是否开启
show variables like '%sche%';
如没开启,则开启。需要数据库超级权限
set global event_scheduler =1;
创建存储过程 update_a (注:就是你要执行的sql语句)
mysql create procedure update_a() update a set a.y_avg=(select avg(b.youhao) from b where a.a_id=b.a_id);
创建一个定时任务:event e_updateA
mysql create event if not exists e_updateA
- on schedule every 60 second ---设置60秒执行一次
- on schedule at date_add(now(),interval 1 minute) ---在一分钟后执行
- on completion preserve
- do call update_a(); ---执行update_a()存储过程
创建Event之后,sql语句就定时执行一次。
关闭事件任务
方案1:Thread.sleep方法实现延迟
方案2:Timer类
方案3:quartz
方案4:spring task
方案5:mysql job在数据库实现
设计表D ,开头的时间控制字段prikey yyyy yyyyq yyyymm yyyyww yyyymmdd 之后是你需要的各种汇总字段,开头几个字段的意义是 记录主键,四位年份,四位年份一位季度,四位年份两位月份,四位年份两位周数,四位年份两位月份两位日期
补充问题:你这么说太空泛了,不好设计具体的数据库结构,不过,按照一般原则,视你的数据量,通过分表、外键引用等等控制日志表的冗余字段数量,提高或降低数据库表的耦合度。