mysql event scheduler机制 与 动态表名创建

今天有一个需求,需要定时在mysql创建表与删除表,以及根据日期命名表名。诚然,通过外部程序很容易实现与控制这一切。

但是需要额外的服务需要维护,以及实现其它的调度机制。为了提高服务的稳定性,可维护性,所以打算研究一下mysql的event scheduler机制。

在网上了解了一下这方面内容,非常杂乱。而且基本雷同。经过自己的摸索,终于实现。算是对其它文章的一个补充。

方案如下:(mysql 5.1以后版本)

1. 查看当前是否已开启event scheduler机制,检查方法:SHOW VARIABLES LIKE 'event_scheduler'; 如果显示的值为OFF,则首先需要开启。

2. 开启方法: 修改 /etc/my.cnf 文件

[mysqld]
添加 event_scheduler=ON

3 . 重启 mysql  服务。

4.  create event 语法:

CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement;

5.  范例:

CREATE DEFINER = hotonline EVENT IF NOT EXISTS create_aronline_evnet

ON SCHEDULE EVERY 1 DAY STARTS '2013-03-17 12:00:00'

DO
call create_aronline_procedure();

其中 create_aronline_evnet 为 event 名称,建好以后可以去 mysql.event表查询。

       EVERY 1 DAY STARTS '2013-03-17 12:00:00' 为自从 2013-03-17 12:00:00  开始 每天运行一次。

      call create_aronline_procedure(); 为执行的一个存储过程。

-------- 以上即为 event scheduler 的机制,具体语法请参考mysql 文档,或网上其它文档 --------------  

6.  mysql 动态表名的实现:( 通过一般sql 是无法实现的,需要prepare支持,一下为存储过程封装的)

delimiter $$
create procedure create_aronline_procedure()
begin
set @prefix = 'CREATE TABLE IF NOT EXISTS ';
set @tablename = CONCAT('ar_online_',date_format(date_add(now(), interval 1 day),'%Y_%m_%d'));
set @suffix = '(id bigint(20) NOT NULL AUTO_INCREMENT,seed bigint(20) DEFAULT NULL,vid bigint(20) DEFAULT NULL,count int(11) NOT NULL,score double DEFAULT NULL,update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (id),UNIQUE KEY pair (seed,vid)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8';
set @create_sql = concat(@prefix,@tablename,@suffix);
prepare stmt from @create_sql;
execute stmt;
deallocate prepare stmt;
end;
$$
delimiter ;

核心语法为红色标注的。

set @tablename = CONCAT('ar_online_',date_format(date_add(now(), interval 1 day),'%Y_%m_%d'));  这个部分为根据日期生成表名,然后concat.

prepare stmt from @create_sql;   其中 stmt  为 prepare 的命名。

   

   

posted on 2015-03-17 17:47 4279 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/g4279/p/4345043.html

mysql event scheduler机制 与 动态表名创建相关推荐

  1. mysql 动态创建事件_mysql 通过事件定时为数据库创建动态表名

    #检测事件是否开启 show variables like 'event_scheduler'; #开启事件(最好在my.init设置,因为重启后还会变回默认值OFF) set global even ...

  2. mysql 存储过程 动态表名

    今天写存储过程时,遇到要将表名最为参数的问题,如果不涉及到游标的话,使用prepare可以解决问题,但是,动态表名要运用在游标中的话,则prepare就得靠边站了. 集众人之智慧,最后,使用临时表解决 ...

  3. mysql下解决动态表名

    之前在编写一段sql,内容如下:show create table ?    用占位符占了表名的坑,目的是查询建表语句,使用的模块是jdbcTemplate. 然而我发现,查询出来的结果是sql语法有 ...

  4. talend同步mysql_Talend可以为MySQL输出使用动态表名吗?

    (用于数据集成的Talend OS) 可以使用动态表名吗?我已经研究了用户手册中的所有资源,尽管它们似乎都没有明确排除它,但我似乎无法使其正常工作. 情境 假设您有一个由1,000,000个名字组成的 ...

  5. mysql event 同步,MySQL Event Scheduler(事件调度器)

    这篇文章主要为大家详细介绍了MySQL Event Scheduler(事件调度器),具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编小韵来看看吧!一.概述 事件调 ...

  6. MYSQL存储过程中 使用变量 做表名--转

    原文地址:http://blog.csdn.net/business122/article/details/7528859 今天写一个对数据库做快照的存储过程,用到了动态表名,突然发现MYSQL不支持 ...

  7. Mybatis-Plus动态表名插件实现数据库分表查询

    浮生若梦,就当它是梦,尽兴地梦它一场:世事如云,就当它是云,从容地观它千变万化. Mybatis-Plus中提供了各种插件,乐观锁.多租户.动态表名....今天来研究一下基于动态表名插件实现分表的案例 ...

  8. MyBatis-Plus动态表名插件使用

    一.MyBatis-Plus动态表名插件使用 官方文档-动态表名插件:https://baomidou.com/pages/2a45ff/#dynamictablenameinnerintercept ...

  9. mysql中存储过程 解决参数作为表名

    关键字: mysql 存储过程 1.用变量做表名: 简单的用set或者declare语句定义变量,然后直接作为sql的表名是不行的,mysql会把变量名当作表名.在其他的sql数据库中也是如此,mss ...

最新文章

  1. 【论文解读】KDD20 | 图神经网络在生物医药领域的应用
  2. Android 可视化界面编辑器无法显示界面问题的终极解决方案
  3. 自动驾驶_视觉定位_高德公开课
  4. lammps建模_LAMMPS常用建模方法总结
  5. 电子商务B2C之未来-刘爽
  6. 网络安全之数据加密和数字签名技术
  7. 清华计算机系分数线2018四川,四川多少分能上清华?附清华大学在四川的录取分数线...
  8. TeamCity VS Jenkins:选择正确的CI / CD工具
  9. ds5100更换电池 ibm_IBMDS5100更换电池
  10. 如何用中文编程c++
  11. 一家计算机专卖店A型计算器,A型计算器谱子 | 手游网游页游攻略大全
  12. hdmi怎么支持2k分辨率_为什么显示器闪瞎眼 HDMI线版本有讲究
  13. 微信刷脸支付php后端,2.1 微信刷脸支付初始化
  14. 027 反三角函数的求导公式推导
  15. 计算机专业英语 论文的框架结构,大学英语议专业论文写作万能15句框架结构模版.pdf...
  16. 【其它】visio画泳道图/跨职能流程图
  17. visibility与display的区别:
  18. ubuntu系统安全UFW
  19. Luogu P3165 Splay区间翻转
  20. amd一键超频怎么用_老锅教你超频-AMD处理器篇

热门文章

  1. 面试:Spring Boot 中的条件注解底层是如何实现的?
  2. 来自十年互联网人的大厂等级晋升攻略
  3. 谷歌和 Facebook 是如何给工程师定职级和薪水的?
  4. 渔村小厂,如何成长为5G霸王?
  5. 服务端 I/O 性能大比拼:Node、PHP、Java、Go哪家强?
  6. 追求极简:Docker镜像构建演化史
  7. 3分钟了解dubbo服务调试管理实用命令
  8. Underscore.js 入门
  9. Android --- View.inflate()的详细介绍
  10. 2022年年底前山东将打造30个以上绿色数据中心 逐步淘汰高能耗中小型数据中心...