mysql 定时器概念_【MySQL】玩转定时器

1、前置条件,你需要将服务器和mysql的时间都设置成东八区,php.ini和my.cnf配置(参考上篇文章)

2、进入mysql客户端,推荐Navicat for mysql

3、首先查看是否开启了定时器的功能:

####调试MYSQL定时器 --时间设置正确情况下执行下面没影响 xzz1128 #####

set time_zone = '+8:00';

SHOW VARIABLES LIKE'event_scheduler';##查看是否开启了event定时器功能

set GLOBAL event_scheduler = 1; //开启

select NOW();

4、提醒:虽然这里用set global event_scheduler = on语句开启了事件,但是每次重启电脑。或重启mysql服务后,会发现,事件自动关闭(event_scheduler=OFF),所以想让事件一直保持开启,最好修改配置文件,让mysql服务启动的时候开启时间,只需要在my.cnf配置文件的[mysqld]部分加上event_scheduler=ON 即可,如下:

5、首先、新建user表:

-- ----------------------------

-- Table structure for `user`

-- ----------------------------

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

`id` bigint(20) NOT NULL AUTO_INCREMENT,

`name` varchar(200) NOT NULL,

`address` varchar(500) NOT NULL,

`addtime` datetime NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

然后、新建事件,有两种事件类型,一个是间隔触发,另一个是特定事件触发。

6、下面代码中分别介绍了定时器执行持续性动作(每个时间点需要干的)和一次性动作(只用一次,用完即甩)

################# mysql持续性定时器 -xzz 1128 ##########################

DROP EVENT IFEXISTS `event_minute`;

DELIMITER ;;

CREATE DEFINER=`root`@`localhost` EVENT `event_minute` ON SCHEDULE EVERY 1 MINUTE STARTS '2017-11-28 15:26:00'ON COMPLETION PRESERVE#当这个事件不会再发生的时候不会被Drop掉

ENABLE DOBEGIN

INSERT INTO `user`(name, address,addtime) VALUES('test1','test1',now());

INSERT INTO `user`(name, address,addtime) VALUES('test2','test2',now());END;;

DELIMITER ;##################mysql一次性定时器#################################

DROP EVENT IFEXISTS `event_at`;

DELIMITER ;;

CREATE DEFINER=`root`@`localhost` EVENT `event_at` ON SCHEDULE AT '2017-11-28 15:39:00'ON COMPLETION NOT PRESERVE#当这个事件不会再发生的时候会被Drop掉

ENABLE DOBEGIN

INSERT INTO `user`(name, address,addtime) VALUES('AT','AT',now());END;;

DELIMITER ;

7、其他比较重要的操作语句

###关闭\打开定时器

ALTER EVENT event_minute DISABLE;

ALTER EVENT event_minute ENABLE;###查询定时器状态

select * from mysql.event ;

8、看看效果:

8、感谢:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现定时任务可以使用Quartz框架,结合Spring MVC进行整合。下面是具体步骤: 1. 引入依赖 在pom.xml中添加依赖: ``` <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0</version> </dependency> ``` 2. 配置Quartz 在Spring的配置文件中添加Quartz的配置,如下: ``` <!--配置Quartz--> <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="quartzProperties"> <props> <prop key="org.quartz.scheduler.instanceName">QuartzScheduler</prop> <prop key="org.quartz.scheduler.instanceId">AUTO</prop> <prop key="org.quartz.scheduler.skipUpdateCheck">true</prop> <prop key="org.quartz.scheduler.jmx.export">true</prop> <prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop> <prop key="org.quartz.jobStore.driverDelegateClass">org.quartz.impl.jdbcjobstore.StdJDBCDelegate</prop> <prop key="org.quartz.jobStore.dataSource">myDS</prop> <prop key="org.quartz.jobStore.tablePrefix">QRTZ_</prop> <prop key="org.quartz.jobStore.isClustered">false</prop> <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop> <prop key="org.quartz.threadPool.threadCount">10</prop> <prop key="org.quartz.dataSource.myDS.driver">com.mysql.jdbc.Driver</prop> <prop key="org.quartz.dataSource.myDS.URL">jdbc:mysql://localhost:3306/quartz?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true</prop> <prop key="org.quartz.dataSource.myDS.user">root</prop> <prop key="org.quartz.dataSource.myDS.password">123456</prop> <prop key="org.quartz.dataSource.myDS.maxConnections">30</prop> </props> </property> <property name="autoStartup" value="true"/> <property name="startupDelay" value="5"/> </bean> ``` 这里配置了Quartz的数据源,使用的是MySQL数据库。 3. 编写定时任务 创建一个类,实现Quartz的Job接口,如下: ``` public class MyJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("定时任务执行了"); } } ``` 4. 配置定时任务 在Spring的配置文件中添加对定时任务的配置,如下: ``` <!-- 配置定时任务 --> <bean id="myJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> <property name="jobClass" value="com.example.MyJob"/> </bean> <bean id="myJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="myJobDetail"/> <property name="cronExpression" value="0/5 * * * * ?"/> </bean> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="myJobTrigger"/> </list> </property> <property name="schedulerContextAsMap"> <map> <entry key="key1" value="value1"/> <entry key="key2" value="value2"/> </map> </property> <property name="schedulerListeners"> <list> <bean class="org.springframework.scheduling.quartz.JobListenerFactoryBean"> <property name="name" value="jobListener"/> </bean> </list> </property> </bean> ``` 这里配置了一个每5秒执行一次的定时任务。 5. 启动定时任务 在启动Spring的时候,定时任务会自动启动。也可以在代码中手动启动定时任务,如下: ``` @Autowired private Scheduler scheduler; /** * 启动定时任务 */ public void startJob() throws SchedulerException { scheduler.start(); } ``` 至此,一个使用Spring MVC和Quartz实现的定时任务就完成了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值