fdate按日期分区
create table myevent ( fdate int(11) not null default '0', appid int, primary key(fdate) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 PARTITION BY RANGE(TO_DAYS(fdate)) (PARTITION p20190217 VALUES LESS THAN (TO_DAYS('2019-02-17')) ENGINE = InnoDB, PARTITION p20190218 VALUES LESS THAN (TO_DAYS('2019-02-18')) ENGINE = InnoDB);
如果fdate非date类型,会报错:
1486 - Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
添加或删除分区
ALTER TABLE myevent ADD PARTITION (PARTITION p20190219 VALUES LESS THAN (TO_DAYS('20190219'))); ALTER TABLE myevent DROP PARTITION p20190219;
查看使用分区数
explain PARTITIONS select * from myevent;
+----+-------------+---------+-------------------------------+------+---------------+------+---------+------+------+----------+-------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+---------+-------------------------------+------+---------------+------+---------+------+------+----------+-------+ | 1 | SIMPLE | myevent | p20190217,p20190218,p20190219 | ALL | NULL | NULL | NULL | NULL | 1 | 100 | NULL | +----+-------------+---------+-------------------------------+------+---------------+------+---------+------+------+----------+-------+
判断分区是否存在:
SELECT count(1) from INFORMATION_SCHEMA.partitions WHERE TABLE_SCHEMA = schema() AND TABLE_NAME='myevent' AND partition_name='p20190220';
上述分区需要预配置,可以用event来实现每天自动创建分区。
开启event
SHOW VARIABLES LIKE '%event_sche%'; SET GLOBAL event_scheduler = 1;
创建定时任务
DROP EVENT if exists myevent_auto_partition; DELIMITER $$ CREATE EVENT myevent_auto_partition ON SCHEDULE EVERY 1 DAY STARTS '2019-03-01 00:00:00' COMMENT '天表每天自动增加分区' DO BEGIN set @c_table='myevent'; set @c_day=curdate(); set @p_c_day=DATE_FORMAT(NOW(), '%Y%m%d'); set @p_name=concat('p', @p_c_day); set @p_sql=concat('ALTER TABLE ', @c_table,' ADD PARTITION (PARTITION ', @p_name,' VALUES LESS THAN (TO_DAYS ("', @c_day, '")))'); SELECT @p_sql; PREPARE stmt from @p_sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END $$ DELIMITER ;
查看计划任务
show events;
drop event if exists myevent_auto_partition;
查询所有事件sql
select * from mysql.event;
相关推荐
mysql event脚本
在MySQL数据库系统中,"failed to open table mysql.event" 是一个常见的错误,通常表示数据库无法正确访问或加载`mysql.event`表。`mysql.event`是MySQL服务器用来存储定时任务(也称为事件Scheduler)的地方,当这...
MySQL Event 是一种内置的计划任务功能,用于在特定时间或间隔执行一次或重复数据库中的SQL语句,类似于Unix/Linux的cron job或者Windows的任务计划程序。本文将深入探讨MySQL Event的使用,包括如何查看Event状态、...
NULL 博文链接:https://chembo.iteye.com/blog/896941
一、概述 事件调度器是在 MySQL 5.1 中新增的另一个特色功能,可以作为定时任务调度器,取代部分原先只能用操作系统任务调度器才能完成的定时功>能。例如,Linux 中的 crontabe 只能精确到每分钟执行一次,而 MySQL ...
mysql event scheduler 使用详解,含全局设置、创建event、修改event、删除event及相应的example,测试环境 mysql ver 14.14 distrib 5.7.26
MySQL中的事件调度器(Event Scheduler)是一个用于在指定时间执行特定任务的功能,它可以周期性地运行SQL语句或语句块,类似于触发器。然而,当事件调度器无法打开mysql.event表时,可能会遇到错误“Event ...
们使用MySQL的Event来定期执行这个存储过程,以实现自动备份。以下是一个创建Event的例子: ```sql CREATE EVENT IF NOT EXISTS student_bak_event ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY -- 每天执行...
三者显示的信息基本上是一致的,但是information_schema.events提供的是全局视角,而mysql.event表是系统级的,更倾向于单个数据库实例。information_schema.events表中包含了事件的元数据,例如EVENT_CATALOG、...
【数据库】Navicat for MySQL事件(Event)是MySQL数据库中的一种功能,用于实现定期自动执行的任务,类似于操作系统中的计划任务。在上述情境中,Event主要应用于数据的日常管理,包括定时备份、数据清理以及状态更新...
在MySql中,创建一个新的调度器使用CREATE EVENT,其语法规则如下: CREATE [DEFINER = { user | CURRENT_USER }] EVENT [IF NOT EXISTS] event_name ON SCHEDULE schedule [ON COMPLETION [NOT] PRESERVE] ...
MySQL中的定时任务,通常指的是Event事件,它是一种内置的机制,允许用户在特定时间或周期性地执行SQL语句或存储过程,而无需依赖操作系统级别的计划任务。Event事件的引入,使得数据库自身就能处理定时任务,提高了...
MySQL中的Event是数据库管理系统提供的一种时间触发机制,它允许用户安排一次或定期执行SQL语句或存储过程。从MySQL 5.1版本开始引入,Event主要用于处理那些需要按时间规律执行的任务,比如定期备份、清理过期数据...
MySQL binlog记录的所有操作实际上都有对应的事件类型的,譬如STATEMENT格式中的DML操作对应的是QUERY_EVENT类型,ROW格式下的DML操作对应的是ROWS_EVENT类型。 首先,看看源码中定义的事件类型 源码位置:mysql-...
MySQL数据库Event定时执行任务详解 MySQL数据库Event定时执行任务详解是指 MySQL 数据库中使用 Event 功能来实现定时执行任务的方法。Event 是 MySQL 中的一种调度器,能够根据设定的时间间隔执行指定的 SQL 语句或...
本文实例讲述了mysql事件之修改事件(ALTER EVENT)、禁用事件(DISABLE)、启用事件(ENABLE)、事件重命名及数据库事件迁移操作。分享给大家供大家参考,具体如下: 我们要知道,MySQL允许我们更改现有事件的各种...