接上篇,ETL的存储过程已经实现,需要手动执行。本文将实现定时自动执行,用Mysql自带的Event定时触发器,仍是熟悉的配方,分三部分总结:理论、实战、总结。

1、Event定时触发器

1.1 增删改查

与存储过程、自定义函数非常相似,不再一一讲解,将有关sql呈现如下:

更详细说明,请查看官方文档:https://dev.mysql.com/doc/refman/8.0/en/sql-data-definition-statements.html

1.2 定时

2种定时方式,每隔多久执行与到固定时间点执行。



-- 每隔多久,every 数字 时间单位 EVERY 5 SECOND -- every 还还与starts\ends组合,从什么时候开始,上面没有starts相当于立即开始 every 1 minute starts timestamp('时间') -- 每个月的一号凌晨 1 点执行 on schedule every 1 month starts date_add(date_add(date_sub(curdate(),interval day(curdate())-1 day),interval 1 month),interval 1 hour); -- 每个季度一号的凌晨1点执行 on schedule every 1 quarter starts date_add(date_add(date(concat(year(curdate()),'-',elt(quarter(curdate()),1,4,7,10),'-',1)),interval 1 quarter),interval 1 hour); -- AT 时间戳,用来完成单次的计划任务。

1.3 查看执行日志

后续在DBA的dashboard实现再补充。

2、实战

将昨天的报表ETL存储过程,定时在每天晚上2点执行。

发现昨天的一个bug,在调用p_se时的参数写死了,应该是动态传入存储过程的I_day和I_rt参数。

2.2 插曲

数据库时区为伦敦时间,调整为北京时间。临时调整下,持久调整需要去修改配置文件。



show variables like '%time_zone%'; set session time_zone = '+8:00'; show variables like '%time_zone%';

2.3 补跑重跑数据

补跑重跑数据是常见的问题,一个任务新建,历史的数据要补跑,或者之前任务有bug数据是错的,要重跑数据进行修复。

  • 如果只有几个调用执行,量小,那就直接手动执行,或者没有规律的补跑重跑,也手动执行。

  • 如果量多、或者是非常有规律的补跑(比如最近60天的日报),那就写循环脚本来执行。

3、总结

(1)结合Mysql的存储过程和定时调度,就实现了简单但能跑起来的一个ETL路径,对于新手和小团队而言,这是非常很方便的。小而美,MVP理念,值得大家借鉴。

(2)调度配置很方便,但n多个任务起来后,配置就很头疼,尤其是复杂的依赖关系。这就需要专门的调度工作,有现成开源的azkaban等方便使用,也可以自己写一个调度工具。

(3)文章建议按照专栏系列看,会循序渐进,是按照路径来的。已整理好,点击下方链接前往:

或许能用上:【一点分享】Mysql合集,基础入门、进阶升级、用作ETL等场景都适用。

若对您有帮助,请关注之前文章和后续文章。

【一点分享】Mysql高级特性:Event定时任务,用作定时调度ETL也很香。相关推荐

  1. MySQL高级特性 读书笔记

    MySQL高级特性 1. 分区表 对于用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成.实现分区的代码实际上是对一组底层表的句柄对象的封装 以下场景分区表可以起到非常大的作用: 1. 表 ...

  2. 尚硅谷《MySQL高级特性篇》教程发布

    MySQL底层如何组织设计数据 怎么理解"索引即数据,数据即索引" 海量数据和高并发场景下如何设计主键 索引下推.覆盖索引对优化有什么优势 如何保证主从一致性 MVCC如何解决可重 ...

  3. MySQL高级特性之分布式(XA)事务的介绍

    文章目录 分布式(XA) 事务 1.内部XA事务 2.外部XA事务 这一部分是 高性能MySQL(第3版)中第七章第11节内容:关于MySQL高级特性之分布式(XA)事务的介绍,(不感兴趣的可以忽略) ...

  4. MySQL高级特性一:分区表

    对用户来说,分区表时一个独立的罗技表,但是底层由多个无力字表组成.实现分区的代码实际上是对一组底层表的句柄对象的封装.对分区表的请求,都会通过句柄对象转化成对存储引擎的接口调用.所以分区对于SQL层来 ...

  5. MySQL高级特性之分区表

    对于用户而言,分区表是一个独立的逻辑表,但是在底层由多个物理子表组成.实现分区的代码实际上是对一组底层表的句柄对象的封装,对分区表的请求都会通过句柄对象转化成对存储引擎的接口调用 意义 MySQL在创 ...

  6. 分享一个在线考试系统,练手项目用他很香

    今日推荐 推荐一款开源 Java 版的视频管理系统 推荐3个快速开发平台 前后端都有 项目经验又有着落了 14个项目 项目介绍 学之思在线考试系统是一款 java + vue 的前后端分离的考试系统. ...

  7. mysql 事务sqlserver_MYSQL高级特性 -- 事务处理_sqlserver

    下面以两个银行账户之间的转账为例子进行演示. 要使用mysql中的事务处理,首先需要创建使用事务表类型(如BDB = Berkeley DB或InnoDB)的表. CREATE TABLE accou ...

  8. MySQL数据库教程天花板,mysql安装到mysql高级,强|硬

    MySQL数据库笔记 第一部分 MySQL基础篇 第01章 数据库概述 1. 为什么要使用数据库 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业 ...

  9. MySQL数据库教程天花板,mysql安装到mysql高级,强|硬 宋红康版(自用不可外传)

    文章目录 MySQL数据库笔记 第一部分 MySQL基础篇 第01章 数据库概述 1. 为什么要使用数据库 2. 数据库与数据库管理系统 2.1 数据库的相关概念 3. RDBMS与非RDBMS 3. ...

  10. MySQL数据库教程天花板,mysql安装到mysql高级,强|硬 宋红康版

    MySQL数据库教程天花板,mysql安装到mysql高级,强|硬 宋红康版(自用不可外传) 文章目录 MySQL数据库笔记 第一部分 MySQL基础篇 第01章 数据库概述 1. 为什么要使用数据库 ...

最新文章

  1. 如何读取电脑html信息,JavaScript 获取客户端计算机硬件及系统信息
  2. 基于deep learning的快速图像检索(Deep Learning of Binary Hash Codes for Fast Image Retrieval)
  3. 后端:循环遍历的用法介绍
  4. mysql show profile详解_SQL 性能分析利器 show profile
  5. (转)Spring Boot(四):Thymeleaf 使用详解
  6. NumPy Beginner's Guide 2e 带注释源码 五、处理 NumPy 矩阵和 ufunc
  7. AngularJS-webapp($q)
  8. 【Ajax技术】JQuery的应用与高级调试技巧
  9. 10亿数据量只需要100MB内存,redis的位存储为什么这么牛?
  10. devgis分享 只分享有价值的东西!http://download.csdn.net/user/devgis
  11. 微弱信号检测_移动电话/手机信号增强器/扩大器
  12. 深度学习教程(14) | 序列模型与RNN网络(吴恩达·完整版)
  13. 一文看懂AutoML
  14. 黄天不负有心人,拥有属于自己的LOGO
  15. 靠 Java「上位」的编程语言,竟成最流行编程语言之一
  16. java秒转换为年月日_SimpleDateFormat将月/日/年 时分秒转换为年-月-日 时:分:秒
  17. 计算机外存断电会丢失吗,外储存器断电后信息会丢失吗
  18. 迷你MVVM框架 avalonjs 入门教程(司徒正美)
  19. 一篇文章让你搞懂什么是Iaas、Paas、Saas
  20. 手把手带你安装PyTorch指定版本嘿!

热门文章

  1. ethtool 开启网卡_技术|如何使用 ethtool 命令管理以太网卡
  2. web网页添加天气插件(心知天气)
  3. Linux Puppet基础知识
  4. SpringBoot快速入门--基础版(包含整合常用框架、跨域)
  5. 专访哈佛公共卫生学院院长胡里奥·弗兰克
  6. 黑苹果鼠标不动_MacOS系统:解决黑果睡眠唤醒后假死问题(如键盘鼠标无反应等)...
  7. echarts重写图例点击事件
  8. 【高级持续性威胁追踪】来自Mustang Panda的攻击? 我兔又背锅了!
  9. 如何选择期权品种,是做期货期货还是做期权
  10. 2014驾考科目二倒车入库技巧