MySQL数据库事件定时执行任务详解

  

<强>一、背景

  

,由于项目的业务是不断往前跑的,所以难免数据库的表的量会越来越庞大,不断的挤占硬盘空间。即使再大的空间也支撑不起业务的增长,所以定期删除不必要的数据是很有必要的。在我们项目中由于不清理数据,一个表占的空间竟然达到了4 g之多。想想有多可怕…

  

,这里介绍的是用MySQL建立一个定时器事件,定期清除掉之前的不必要事件。

  

<强>二,内容

        # 1,建立存储过程供事件调用   分隔符//如果存在middle_proce//下降过程   创建过程middle_proce ()   开始   删除从jg_bj_comit_log comit_time & lt;SUBDATE(现在(),间隔2月);   优化表jg_bj_comit_log;   删除从jg_bj_order_create created_on & lt;SUBDATE(现在(),间隔3个月);   优化表jg_bj_order_create;   删除从jg_bj_order_match created_on & lt;SUBDATE(现在(),间隔3个月);   优化表jg_bj_order_match;   删除从jg_bj_order_cancel created_on & lt;SUBDATE(现在(),间隔3个月);   优化表jg_bj_order_cancel;   删除从jg_bj_operate_arrive created_on & lt;SUBDATE(现在(),间隔3个月);   优化表jg_bj_operate_arrive;   删除从jg_bj_operate_depart created_on & lt;SUBDATE(现在(),间隔3个月);   优化表jg_bj_operate_depart;   删除从jg_bj_operate_login created_on & lt;SUBDATE(现在(),间隔3个月);   优化表jg_bj_operate_login;   删除从jg_bj_operate_logout created_on & lt;SUBDATE(现在(),间隔3个月);   优化表jg_bj_operate_logout;   删除从jg_bj_operate_pay created_on & lt;SUBDATE(现在(),间隔3个月);   优化表jg_bj_operate_pay;   删除从jg_bj_position_driver created_on & lt;SUBDATE(现在(),间隔3个月);   优化表jg_bj_position_driver;   删除从jg_bj_position_vehicle created_on & lt;SUBDATE(现在(),间隔3个月);   优化表jg_bj_position_vehicle;   删除从jg_bj_rated_passenger created_on & lt;SUBDATE(现在(),间隔3个月);   优化表jg_bj_rated_passenger;//结束   分隔符;      # 2,开启事件(要使定时起作用,MySQL的常量全球event_schduleer必须为在或者1)   显示变量如“event_scheduler”   集全球event_scheduler='在'      # 3,创建Evnet事件   下降的事件如果存在middle_event;   创建事件middle_event   按计划每1天开始“2017-12-05 00:00:01”   完成后保存使   叫middle_proce ();      # 4,开启事件事件   改变事件middle_event完成维护支持;      # 5,关闭事件事件   改变事件middle_event完成保存禁用;   之前      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

MySQL数据库事件定时执行任务详解