目录

  • 需求
  • 分析
  • 实现

需求

项目上线了,但是需要做个功能去统计每天的系统的使用情况。然后将统计的结果存到表中。

分析

统计的代码很简单,但是这边考虑到项目已经上线,如果把统计的功能放到java代码里面,还需要重新去部署,并且这个功能只是给我们开发自己看的,所以就不打算把功能写在java代码里面了。然后就考虑到用mysql的定时任务。每天固定的时间去统计前一天的数据。然后存到表里面。

在mysql 5.1中新增了一个特色功能事件调度器(Event Scheduler),简称事件。它可以作为定时任务调度器,取代部分原来只能用操作系统的计划任务才能执行的工作。另外,更值得一提的是,mysql的事件可以实现每秒钟执行一个任务,这在一些对实时性要求较高的环境下是非常实用的。
事件调度器是定时触发执行的,从这个角度上看也可以称作是“临时触发器”。但是它与触发器又有所区别,触发器只针对某个表产生的事件执行一些语句,而事件调度器则是在某一段(间隔)时间执行一些语句。

我用的数据库的版本是5.7.25

实现

先去查下mysql的版本是否支持

SELECT VERSION();


版本不支持的话,得去升级到相应的版本

查下mysql是否开启事件调度

事件由一个特定的线程来管理。启用事件调度器后,拥有SUPER权限的账户执行SHOW PROCESSLIST就可以看到这个线程了。

SHOW VARIABLES LIKE 'event_scheduler';


如果值是OFF或者是1;说明没有开启。用SET GLOBAL命令可以开启或关闭事件。将event_scheduler参数的值设置为ON,则开启事件;如果设置为OFF,则关闭事件。(设置系统变量)
我的是已经开启过了,下面贴上开启和关闭的sql;
开启

SET GLOBAL event_scheduler = ON;

关闭

SET GLOBAL event_scheduler = OFF;

注意:通过上面命令开启,是临时开启,mysql重启之后,就没有效果了。如果想要始终开启事件,需要在my.ini(Windows系统)/my.cnf(Linux系统)中添加event_scheduler=on

创建事件
用Navicat

在开启之后,就可以点图中的那个事件。

再点新建事件

  • 定义这块是写需要执行的代码的。也可以先定义好存储过程,或者函数,在这里直接调用也是可以的。

  • 定义者:指定当在事件运行时检查访问权限要使用的用户帐号。默认定义者值是运行 CREATE EVENT 语句的的用户。(和DEFINER = CURRENT_USER 相同。)如果给予一个用户值,它应该是一个 ‘user_name’@‘host_name’ 格式的MySQL 帐号(使用与 GRANT 语句相同的格式)。user_name 及 host_name 值都是必须的。

  • 状态:可以创建一个事件但可以用 DISABLE 关键字保持不激活。或者可以用 ENABLE 默认状态,这是激活。

  • ON COMPLETION:正常情况下,一旦事件已过期,它将立即删除。可以通过指定 ON COMPLETION PRESERVE 来重写此性能。ON COMPLETION NOT PRESERVE 只是使默认非持久性的性能明确。

    计划就是定时任务执行的周期

  • AT:包含日期和时间,或必须是一个解析为 datetime 值的表达式。使用+INTERVAL 来创建一个事件,它发生在与当前日期和时间有关的将来某个时刻。
    EVERY:在定期间隔重复的行动,可以在 EVERY 子句之后加 interval。(+INTERVAL 与 EVERY 不能同时使用。)

  • STARTS:EVERY 子句还可能包含一个非必须的 STARTS 子句。STARTS 之后的 timestamp 值表示行动应该何时开始重复,也可以用+INTERVAL 间隔指定「由现在开始」的时间量。
    例如:EVERY 3 MONTH STARTS CURRENT_TIMESTAMP + 1 WEEK 的意思是「每 3 个月,从现在起一周后开始」。

  • ENDS:EVERY 子句还可包含一个非必须的 ENDS 子句。ENDS 关键字之后的 timestamp 值告诉 MySQL 何时停止重复事件。也可以用+INTERVAL 间隔与 ENDS 一起。
    例如:EVERY 12 HOUR STARTS CURRENT_TIMESTAMP + INTERVAL 30 MINUTE ENDS CURRENT_TIMESTAMP + INTERVAL 4 WEEK 相当于「每十二个小时,从现在起三十分钟后开始,并于现在起四个星期后结束」。
    备注:timestamp 是必须发生在未来不能安排在过去的一个事件。

  • interval 区间由两部份组成,数量和时间单位。
    *YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
    WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
    DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND

    这个就是注释。

    定义好就有预览的sql。

    都设置好以后,设置好名字,点击保存。然后到你指定的时间就可以运行了。

mysql定时任务(Navicat)相关推荐

  1. navicat创建MySql定时任务详解

    目录 navicat创建MySql 定时任务详解 一.开起定时任务 二.通过navicat创建定时任务 三.关闭.启动.别名.移动.删除event 四.查询Event信息 navicat创建MySql ...

  2. navicat创建mysql定时任务_navicat创建MySql定时任务的方法详解

    navicat创建MySql 定时任务详解 事件(event)是MySQL在相应的时刻调用的过程式数据库对象.一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的" ...

  3. ​​Navicat设定mysql定时任务!

    ​​Navicat设定mysql定时任务! 需求:每天将一张表的前一天的数据抽取到另一张表中,使用Mysql数据库的客户端Navicat配置 第一步,创建过程cust_report,直接在查询窗口中执 ...

  4. navicat mysql 计划任务_navicat创建MySql定时任务的方法详解

    navicat创建MySql 定时任务详解 事件(event)是MySQL在相应的时刻调用的过程式数据库对象.一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的" ...

  5. Mysql定时任务,最简单例子

    一个最简单的定时任务讲解: 新手入门,直接打开数据库可视化工具,mysql推进Navicat ,进入到相应的数据当中,进入事件模块 1.新建事件:SQL 如下 BEGIN "具体的SQL语句 ...

  6. mysql定时任务 每日执行存储过程

    原文链接:mysql定时任务 每日执行存储过程 1.操作工具Navicat数据库操作工具. 2.创建一个存储过程 例如:delete From apply_setdtl where DATE(crea ...

  7. linux设置mysql定时任务_Linux下如何实现Mysql定时任务

    假设前提:每天晚上10点到早上5点,每10分钟定时执行存储过程. 实现方式: 第一种是利用mysql本身实现,制定event定时任务,可以借助navicat for mysql或其他数据库开发工具去做 ...

  8. 关于MySQL连接Navicat Premium 12失败的解决方法

    关于MySQL连接Navicat Premium 12失败的解决方法 参考文章: (1)关于MySQL连接Navicat Premium 12失败的解决方法 (2)https://www.cnblog ...

  9. linux设置mysql定时任务_原创 Linux下实现Mysql定时任务备份数据

    本实例将创建目录放置于/mnt目录下,可根据具体情况放置于其他目录: cd /mnt mkdir dbback pwd /mnt/dbback 创建shell脚本 脚本名称可根据自己规范进行自定义: ...

  10. ubuntu mysql navicat_Ubuntu搭建MySQL,Navicat Premium连接

    Ubuntu搭建MySQL,Navicat Premium连接 首先,撤销 (Ctrl Z)我们需要使用apt安装mysql,命令如下: sudo apt install mysql-server 安 ...

最新文章

  1. c程序封装linux,Linux系统使用C语言封装线程读写锁
  2. java如何添加同名的xml节点_jaxb怎么解析多个同名元素
  3. Spring Boot中防表单重复提交以及拦截器登录检测
  4. scrapy爬取汽车之家宝马5系图片
  5. TCP三次握手建立连接和四次挥手关闭连接
  6. java中怎么把系统格式化_如何在java中格式化1200到1.2k
  7. 鱼和熊掌兼得---STM32调试接口SW动态复用为GPIO的方法
  8. EDA课程设计(设计一个4时隙的时分复用模块)
  9. 【阿里云】视频点播开通与配置
  10. 红外额温枪方案(包含原理图和PCB文件)
  11. C++ exception with description “bad optional access“ thrown in the test body.
  12. 浏览器突然不能上网,DNS问题
  13. 2D降噪3D降噪(NR:Noise Reduce)
  14. 正则表达式收藏(三)之高级技巧
  15. C#串口通信从入门到精通(3)——虚拟串口工具的使用
  16. windows环境下netcat的安装及使用
  17. 网络七层协议:OSI七层协议大白话解读
  18. Bootstrap carousel轮转图的使用
  19. connect的中文意思是什么_connect是什么意思?
  20. Spring Data JPA-JPA对象的四种状态

热门文章

  1. 重庆SEO优化:网站通过SEO优化会有哪些好处以及【SEO优化】 深度了解蜘蛛spider抓取原理-专业SEO技术教程
  2. 基于IC5000如何利用iSYSTEM winIDEA烧写+调试程序
  3. python获取上一级目录
  4. Ubuntu 微信QQ企业微信不能输入中文
  5. linux科学计算器_2个适用于Linux桌面的科学计算器
  6. 中国神童13岁免试上大学,极端荣耀后却选择出家为僧!
  7. 虚拟机LINUX系统下安装JKD(附详细操作过程截图)
  8. python 元组使用场景_列表和元组(三):列表和元组的性能以及使用场景
  9. 自己制作的粉碎机批处理程序
  10. TCHAR char wchar_t 的区别