返回顶部
首页 > 资讯 > 数据库 >MySQL数据库高级(八)——事件
  • 886
分享到

MySQL数据库高级(八)——事件

2024-04-02 19:04:59 886人浏览 八月长安
摘要

Mysql数据库高级(八)——事件 一、事件简介 1、事件简介 事件是用来执行定时任务的一组sql集,在时间到时会触发。一个事件可调用一次,也可周期性的启动,由一个特定的事件调度器线程来管理的。事件取代了原

Mysql数据库高级(八)——事件

一、事件简介

1、事件简介

事件是用来执行定时任务的一组sql集,在时间到时会触发。
一个事件可调用一次,也可周期性的启动,由一个特定的事件调度器线程来管理的。
事件取代了原先只能由操作系统的计划任务来执行的工作,而且mysql的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:linux下的CRON或windows下的任务计划)只能精确到每分钟执行一次。

2、事件的优点

A、对数据定时性操作不再依赖外部程序,而直接使用数据库本身提供的功能。
B、可以实现每秒钟执行一个任务,在一些对实时性要求较高的环境下非常实用。

3、事件的缺点

定时触发,不可以调用。

4、事件的适用场景

对于每隔一段时间就有固定需求的操作,如创建表,删除数据等操作,可以使用event来处理。

二、事件的操作

1、事件的创建

CREATE
[DEFINER = { user | CURRENT_USER }]
EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETioN [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT 'comment']
DO event_body;

event_name :事件名,不能超64个字符,名字必须是当前Dateabase中唯一的,同一个数据库不能有同名的event。创建事件时,可以同时指定Schema,语法结构为:schema_name.eventname。使用event常见的工作是创建表、插入数据、删除数据、清空表、删除表。为了规范事件命名,事件名称需具备描述整个事件的能力。建议命名规则如下:动作名称(INTO/FROM_)表名_TIME,如每天插入表中记录事件命名,insert_into_tablename_day。
ON SCHEDULE schedule:计划任务
schedule:调度规则,规定事件的执行时间与执行规则。决定event的执行时间和频率(时间必须是将来的时间,过去的时间会出错),有AT和EVERY两种形式。
语法结构如下:
schedule:
AT timestamp [+ INTERVAL interval] ... | EVERY interval [STARTS timestamp [+ INTERVAL interval] ...] [ENDS timestamp [+ INTERVAL interval] ...]
interval:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
AT timestamp,用来完成单次的计划任务。
EVERY n quantity [STARTS timestamp] [ENDS timestamp],用来完成重复的计划任务。
时间戳可以是任意的TIMESTAMP 和DATETIME 数据类型,时间戳需要大于当前时间。
在重复的计划任务中,时间(单位)的数量可以是任意非空(Not Null)的整数式,时间单位是关键词:YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND。
AT timestamp一般用于只执行一次,一般可以使用当前时间加上延后的一段时间,例如:AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR;也可以定义一个时间常量,例如:AT '2006-02-10 23:59:00';EVERY interval一般用于周期性执行,可以设定开始时间和结束时间。
ON COMPLETION [NOT] PRESERVE:事件到期后的操作,默认事件到期后会自动删除。如果想保留事件使用ON COMPLETION PRESERVE;如果不想保留事件,可以设置ON COMPLETION NOT PRESERVE。
[ENABLE | DISABLE]:参数Enable和Disable表示设定事件的状态。Enable表示系统将执行事件,Disable表示系统不执行事件。
[COMMENT 'comment']:增加注释,注释会出现在元数据中,存储在infORMation_schema表的COMMENT列,最大长度为64个字节。'comment'表示将注释内容放在单引号之间,建议使用注释以表达更全面的信息。
event_body:事件体,可以是单行SQL语法,或是BEGIN……END语句块,或是存储过程。

2、事件调度器的开启

MySQL默认关闭事件调度器。
查看事件调度器信息

show global variables like '%event_scheduler%';
SHOW PROCESSLIST;

开启事件调度器
set global event_scheduler=ON;
在MySQL的my.cnf配置文件中修改。
event_scheduler = 1 #或者ON  

3、事件的查看

 SELECT * FROM mysql.event;
    SHOW EVENTS;
    SELECT * FROM information_schema.events;

4、删除事件

DROP EVENT [IF EXISTS] eventname;

5、禁用事件

ALTER EVENT eventname DSIABLE;

6、开启事件

ALTER EVENT eventname ENABLE;

7、事件的修改

ALTER
    [DEFINER = { user | CURRENT_USER }]
    EVENT event_name
    [ON SCHEDULE schedule]
    [ON COMPLETION [NOT] PRESERVE]
    [RENAME TO new_event_name]
    [ENABLE | DISABLE | DISABLE ON SLAVE]
    [COMMENT 'comment']
    [DO event_body]

三、事件实例

1、每隔一定时间插入一次记录

创建一个表
CREATE TABLE event_table(timeline TIMESTAMP);
创建一个事件,每隔1秒插入一条记录

CREATE EVENT insert_into_event_table_second
ON SCHEDULE EVERY 1 SECOND 
DO INSERT INTO schoolDB.event_table VALUES(CURRENT_TIMESTAMP);

过一定时间查看插入记录
select * from event_table;
停止事件
alter event insert_into_event_table_second disable;
删除事件
drop event insert_into_event_table_second;

2、特定时间插入一条记录

创建一个事件在特定时间插入一条记录

CREATE EVENT insert_into_event_table_time
ON SCHEDULE AT TIMESTAMP '2018-04-11 21:27:30'
DO INSERT INTO schoolDB.event_table values(CURRENT_TIMESTAMP);

在特定时间后查看插入记录,已经插入记录
select * from event_table;

3、特定时间清空表

创建一个事件,特定时间清空表,事件执行完后保留事件

CREATE EVENT truncate_event_table_time
ON SCHEDULE AT TIMESTAMP '2018-04-11 21:35:00'
ON COMPLETION PRESERVE
DO TRUNCATE TABLE schoolDB.event_table;

时间过后查询表的内容,已经清空
select * from event_table;

4、某个事件段内定时清空表

创建一个事件,5天后开启,每天定时清空表,一个月后停止执行

CREATE EVENT truncate_event_table_day
ON SCHEDULE EVERY 1 DAY 
STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH
ON COMPLETION PRESERVE
DO TRUNCATE TABLE schoolDB.event_table;
您可能感兴趣的文档:

--结束END--

本文标题: MySQL数据库高级(八)——事件

本文链接: https://lsjlt.com/news/44604.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL数据库高级(八)——事件
    MySQL数据库高级(八)——事件 一、事件简介 1、事件简介 事件是用来执行定时任务的一组SQL集,在时间到时会触发。一个事件可调用一次,也可周期性的启动,由一个特定的事件调度器线程来管理的。事件取代了原...
    99+
    2024-04-02
  • MySQL数据库高级(七)——事务和锁
    MySQL数据库高级(七)——事务和锁 一、事务简介 1、事务简介 事务(Transaction) 是指作为单个逻辑工作单元执行的一系列操作。 2、事务的特性 A、原子性(Atomicity)表示组成一个事...
    99+
    2024-04-02
  • MySQL数据库高级(六)——索引
    MySQL数据库高级(六)——索引 一、索引简介 1、索引简介 索引(Index)是帮助MySQL高效获取数据的数据结构。在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的。M...
    99+
    2024-04-02
  • MySQL数据库高级(九)——游标
    MySQL数据库高级(九)——游标 一、游标简介 1、游标简介 游标的设计是一种数据缓冲区的思想,用来存放SQL语句执行的结果。游标是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。尽管游标能遍历...
    99+
    2024-04-02
  • MySQL数据库高级(三)——视图
    MySQL数据库高级(三)——视图 一、视图简介 1、视图简介 视图是由SELECT查询语句所定义的一个虚拟表,是查看数据的一种非常有效的方式。视图包含一系列带有名称的数据列和数据行,但视图中的数据...
    99+
    2024-04-02
  • MySQL数据库高级(一)——数据完整性
    MySQL数据库高级(一)——数据完整性 一、数据完整性简介 1、数据完整性简介 数据冗余是指数据库中存在一些重复的数据,数据完整性是指数据库中的数据能够正确反应实际情况。数据的完整性是指数据的可靠性和准确...
    99+
    2024-04-02
  • MySQL数据库高级(五)——触发器
    MySQL数据库高级(五)——触发器 一、触发器简介 1、触发器简介 触发器是和表关联的特殊的存储过程,可以在插入,删除或修改表中的数据时触发执行,比数据库本身标准的功能有更精细和更复杂的数据控制能力。 2...
    99+
    2024-04-02
  • MySQL数据库高级操作示例
    小编给大家分享一下MySQL数据库高级操作示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!文章目录数据表高级操作准备工作:安装...
    99+
    2024-04-02
  • mysql数据库事务及隔离级别
    事务的四大特性: 原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用; 一致性: 执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的; 隔离性: 并发访问数据库时,一个用户的事务...
    99+
    2021-09-18
    mysql数据库事务及隔离级别
  • MySQL数据库高级数据操作之新增数据
    目录多数据插入主键冲突1、主键冲突更新2、主键冲突替换蠕虫复制多数据插入 只要写一次insert,可以插入多条数据 基本语法: insert into 表名 [(字段列表)] val...
    99+
    2024-04-02
  • MySQL数据库高级(二)——自定义函数
    MySQL数据库高级(二)——自定义函数 一、自定义函数简介 自定义函数 (user-defined function UDF)是一种对MySQL扩展的途径,其用法和内置函数相同。自定义函数的两个必要条件:...
    99+
    2024-04-02
  • 操作MySQL数据库的高级方法
    下文主要给大家带来操作MySQL数据库的高级方法,希望这些内容能够带给大家实际用处,这也是我编辑操作MySQL数据库的高级方法这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。1.数据备份与还原(1)...
    99+
    2024-04-02
  • MySQL数据库高级(四)——存储过程
    MySQL数据库高级(四)——存储过程 一、存储过程简介 1、存储过程简介 存储过程是一组具有特定功能的SQL语句集组成的可编程的函数,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数来调...
    99+
    2024-04-02
  • 【数据库】MySQL 高级(进阶) SQL 语句
    文章目录 前提条件一、常用查询1. SELECT(显示查询)2. DISTINCT(不重复查询)3. WHERE(有条件查询)4. AND/OR(且/或)5. IN (显示已知值的字段...
    99+
    2023-09-17
    数据库 mysql sql
  • MySQL数据篇(八)-
      思考:一般我们的数据都是存储在数据库里面,对于常规的CRUD操作都是用代码实现,比如使用PHP做项目,所有的数据处理都需要主动操作代码实现。如果我们现在有一项目,业务需要在用户下单后,对用户的订单进行分润处理,比如在每个月的21号,对上...
    99+
    2017-06-10
    MySQL数据篇(八)-
  • MySQL数据库高级数据操作之怎么新增数据
    本篇内容主要讲解“MySQL数据库高级数据操作之怎么新增数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL数据库高级数据操作之怎么新增数据”吧!多数据插入只要写一次insert,可以插...
    99+
    2023-06-30
  • MySQL数据库升级
    当前不少系统的数据库依旧是MySQL5.6,由于MySQL5.7及MySQL8.0在性能及安全方面有着很大的提升,因此需要升级数据库。本文通过逻辑方式、物理方式原地升级来介绍MySQL5.6 升级至MySQL5.7的方法,并介绍其...
    99+
    2018-01-24
    MySQL数据库升级
  • 《MySQL高级篇》九、数据库的设计规范
    文章目录 1. 为什么需要数据库设计2. 范 式2.1 范式简介2.2 范式都包括哪些2.3 键和相关属性的概念2.4 第一范式(1st NF)2.5 第二范式(2nd NF)2.6 第三范式...
    99+
    2023-09-12
    数据库 mysql 设计规范
  • (八) 在Kubernetes上运行MySQL数据库 Running MySQL on Kubernetes
    作者:禅与计算机程序设计艺术 1.简介 Kubernetes(简称K8s)是一个开源的、用于管理云平台中容器化的应用的开源系统。在Kubernetes的框架下,可以轻松部署容器化的应用程序,同时让它...
    99+
    2023-09-24
    自然语言处理 人工智能 语言模型 编程实践 开发语言 架构设计
  • MYSQL事务篇(高级篇)
     1.事务介绍: 一般是指要做的或所做的事情。 在计算机 术语 中是指访问并可能更新数据库中各种 数据项 的一个程序 执行单元 (unit) 2.数据库事务具有ACID四大特性。 ACID是以下4个词的缩写: 原子性(atomici...
    99+
    2015-04-25
    MYSQL事务篇(高级篇)
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作