最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL數(shù)據(jù)庫(kù)定時(shí)任務(wù)舉例講解

 更新時(shí)間:2023年06月06日 17:03:31   作者:小流年?°  
最近項(xiàng)目里面的后臺(tái)需要用到定時(shí)任務(wù),而MySQL從5.0開(kāi)始自帶了定時(shí)事件操作,所以學(xué)習(xí)下并做下記錄,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)定時(shí)任務(wù)的相關(guān)資料,需要的朋友可以參考下

1、事件概述

在MySQL 5.1中新增了一個(gè)特色功能事件調(diào)度器(Event Scheduler),簡(jiǎn)稱事件。它可以作為定時(shí)任務(wù)調(diào)度器,取代部分原來(lái)只能用操作系統(tǒng)的計(jì)劃任務(wù)才能執(zhí)行的工作。另外,更值得一提的是,MySQL的事件可以實(shí)現(xiàn)每秒鐘執(zhí)行一個(gè)任務(wù),這在一些對(duì)實(shí)時(shí)性要求較高的環(huán)境下是非常實(shí)用的。

事件調(diào)度器是定時(shí)觸發(fā)執(zhí)行的,從這個(gè)角度上看也可以稱作是“臨時(shí)觸發(fā)器”。但是它與觸發(fā)器又有所區(qū)別,觸發(fā)器只針對(duì)某個(gè)表產(chǎn)生的事件執(zhí)行一些語(yǔ)句,而事件調(diào)度器則是在某一段(間隔)時(shí)間執(zhí)行一些語(yǔ)句。

1.1 查看事件調(diào)度器是否開(kāi)啟

事件由一個(gè)特定的線程來(lái)管理。啟用事件調(diào)度器后,擁有SUPER權(quán)限的賬戶執(zhí)行SHOW PROCESSLIST就可以看到這個(gè)線程了。

SHOW VARIABLES LIKE 'event_scheduler';
SELECT @@event_scheduler;
SHOW PROCESSLIST;

1.2 開(kāi)啟或關(guān)閉事件調(diào)度器

通過(guò)設(shè)定全局變量event_scheduler的值即可動(dòng)態(tài)的控制事件調(diào)度器是否啟用。開(kāi)啟MySQL的事件調(diào)度器,可以通過(guò)下面兩種方式實(shí)現(xiàn)。

1.2.1 通過(guò)設(shè)置全局參數(shù)

使用SET GLOBAL命令可以開(kāi)啟或關(guān)閉事件。將event_scheduler參數(shù)的值設(shè)置為ON,則開(kāi)啟事件;如果設(shè)置為OFF,則關(guān)閉事件。使用SET GLOBAL命令可以開(kāi)啟或關(guān)閉事件。

-- 開(kāi)啟事件調(diào)度器
SET GLOBAL event_scheduler = ON;
-- 關(guān)閉事件調(diào)度器
SET GLOBAL event_scheduler = OFF;
-- 查看事件調(diào)度器狀態(tài)
SHOW VARIABLES LIKE 'event_scheduler';

注意:如果想要始終開(kāi)啟事件,那么在使用SET GLOBAL開(kāi)啟事件后,還需要在my.ini(Windows系統(tǒng))/my.cnf(Linux系統(tǒng))中添加event_scheduler=on。因?yàn)槿绻麤](méi)有添加,MySQL重啟事件后又會(huì)回到原來(lái)的狀態(tài)。

1.2.2 通過(guò)更改配置文件

在MySQL的配置文件my.ini(Windows系統(tǒng))/my.cnf(Linux系統(tǒng))中,找對(duì)[mysqld],然后在下面添加以下代碼開(kāi)啟事件。

 事件調(diào)度器啟動(dòng)狀態(tài)
event_scheduler = on

在配置文件中添加代碼并保存文件后,還需要重新啟動(dòng)MySQL服務(wù)器才能生效。通過(guò)該方法開(kāi)啟事件,重啟MySQL服務(wù)器后,不恢復(fù)為系統(tǒng)默認(rèn)的狀態(tài)。

2、創(chuàng)建事件

在MySQL 5.1以上版本中,可以通過(guò)CREATE EVENT語(yǔ)句來(lái)創(chuàng)建事件。

示例1:創(chuàng)建名稱為event_user的事件,用于每隔5秒鐘向數(shù)據(jù)表tb_user(用戶信息表)中插入一條數(shù)據(jù)。

(1)首先創(chuàng)建tb_user(用戶信息表)。

-- 創(chuàng)建用戶信息表
CREATE TABLE IF NOT EXISTS tb_user
(
	id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用戶編號(hào)',
	name VARCHAR(30) NOT NULL COMMENT '用戶姓名',
	create_time TIMESTAMP COMMENT '創(chuàng)建時(shí)間'
) COMMENT = '用戶信息表';

(2)創(chuàng)建事件。

– 創(chuàng)建事件

CREATE EVENT IF NOT EXISTS event_user
ON SCHEDULE EVERY 5 SECOND
ON COMPLETION PRESERVE
COMMENT '新增用戶信息定時(shí)任務(wù)'
DO INSERT INTO tb_user(name,create_time) VALUES('pan_junbiao的博客',NOW());

示例2:創(chuàng)建一個(gè)事件,實(shí)現(xiàn)每個(gè)月的第一天凌晨1點(diǎn)統(tǒng)計(jì)一次已經(jīng)注冊(cè)的會(huì)員人數(shù),并插入到統(tǒng)計(jì)表中。

(1)創(chuàng)建名稱為p_total的存儲(chǔ)過(guò)程,用于統(tǒng)計(jì)已經(jīng)注冊(cè)的會(huì)員人數(shù),并插入到統(tǒng)計(jì)表tb_total中。

CREATE PROCEDURE p_total()
BEGIN
	DECLARE n_total INT default 0;
	SELECT COUNT(*) INTO n_total FROM db_database11.tb_user;
	INSERT INTO tb_total (userNumber,createtime) VALUES(n_total,NOW());
END;

(2)創(chuàng)建名稱為e_autoTotal的事件,用于在每個(gè)月的第一天凌晨1點(diǎn)調(diào)用存儲(chǔ)過(guò)程。

CREATE EVENT IF NOT EXISTS e_autoTotal
ON SCHEDULE EVERY 1 MONTH STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY),INTERVAL 1 MONTH),INTERVAL 1 HOUR)
ON COMPLETION PRESERVE ENABLE
DO CALL p_total();

3、查詢事件

在MySQL中可以通過(guò)查詢information_schema.events表,查看已創(chuàng)建的事件。其語(yǔ)句如下:

SELECT * FROM information_schema.events; 

4、修改事件

在MySQL 5.1及以后版本中,事件被創(chuàng)建之后,還可以使用ALTER EVENT語(yǔ)句修改其定義和相關(guān)屬性。其語(yǔ)法如下:

ALTER
	[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;

ALTER EVENT語(yǔ)句與CREATE EVENT語(yǔ)句基本相同。另外ALTER EVENT語(yǔ)句還有一個(gè)用法就是讓一個(gè)事件關(guān)閉或再次活動(dòng)。

5、啟動(dòng)與關(guān)閉事件

另外ALTER EVENT語(yǔ)句還有一個(gè)用法就是讓一個(gè)事件關(guān)閉或再次活動(dòng)。

--啟動(dòng)名稱為event_user的事件。
ALTER EVENT event_user ENABLE;
--關(guān)閉名稱為event_user的事件。
ALTER EVENT event_user DISABLE;

6、刪除事件

在MySQL 5.1及以后版本中,刪除已經(jīng)創(chuàng)建的事件可以使用DROP EVENT語(yǔ)句來(lái)實(shí)現(xiàn)。

--刪除名稱為event_user的事件。
DROP EVENT IF EXISTS event_user;

7、時(shí)間配置

-- 單位有:SECOND,MINUTE,HOUR,DAY,WEEK(周),QUARTER(季度),MONTH,YEAR
-- 每秒執(zhí)行1次
ON SCHEDULE EVERY 1 SECOND
-- 每?jī)煞昼妶?zhí)行1次
ON SCHEDULE EVERY 2 MINUTE
-- 每3天執(zhí)行1次
ON SCHEDULE EVERY 3 DAY
-- 5天后執(zhí)行
ON SCHEDULE AT CURRENT_TIMESTAMP()+INTERVAL 5 DAY
-- 10分鐘后執(zhí)行
ON SCHEDULE AT CURRENT_TIMESTAMP()+INTERVAL 10 MINUTE
-- 在2016年10月1日,晚上9點(diǎn)50執(zhí)行
ON SCHEDULE AT '2021-12-01 1:50:00'
-- 5天后開(kāi)始每天都執(zhí)行執(zhí)行到下個(gè)月底
ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP()+INTERVAL 5 DAY ENDS CURRENT_TIMESTAMP()+INTERVAL 1 MONTH
-- 從現(xiàn)在起每天執(zhí)行,執(zhí)行5天
ON SCHEDULE EVERY 1 DAY ENDS CURRENT_TIMESTAMP()+INTERVAL 5 DAY
-- 每天凌晨一點(diǎn)執(zhí)行
ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)
-- 每個(gè)月的五號(hào)一點(diǎn)執(zhí)行一次
ON SCHEDULE EVERY 5 MONTH STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 MONTH),INTERVAL 1 HOUR)
-- 每年一月一號(hào)凌晨三點(diǎn)執(zhí)行一次
ON SCHEDULE  EVERY 1 YEAR STARTS DATE_ADD(DATE(CONCAT(YEAR(CURDATE()) + 1,'-',1,'-',1)),INTERVAL 3 HOUR)

demo

-- 查看定時(shí)策略是否開(kāi)啟
show variables like 'event_scheduler';
-- 開(kāi)啟定時(shí)策略(ON是開(kāi)啟狀態(tài))
set global event_scheduler=1;
-- 創(chuàng)建procedure(存儲(chǔ)過(guò)程)
use 123;
delimiter //
create procedure updateTime()
begin
-- (begin后end//前放要定時(shí)處理的sql用;結(jié)尾,可以放多個(gè)sql)
update demo_table set demo_time = DATE_ADD(NOW(),  INTERVAL  FLOOR(1 + (RAND() * 10800))   SECOND );
end//
delimiter ;
-- 創(chuàng)建定時(shí)任務(wù)
create event updateTime_LY
ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)
on completion preserve disable
do call updateTime();
-- 查看定時(shí)任務(wù)事件
SELECT event_name,event_definition,interval_value,interval_field,status FROM information_schema.EVENTS;
-- 開(kāi)啟和關(guān)閉創(chuàng)建好的事件
alter event updateTime_LY on completion preserve enable;//開(kāi)啟定時(shí)任務(wù)
alter event updateTime_LY on completion preserve disable;//關(guān)閉定時(shí)任務(wù)
-- 刪除
drop event updateTime_LY;

總結(jié)

到此這篇關(guān)于MySQL數(shù)據(jù)庫(kù)定時(shí)任務(wù)的文章就介紹到這了,更多相關(guān)MySQL定時(shí)任務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql實(shí)現(xiàn)根據(jù)多個(gè)字段查找和置頂功能

    mysql實(shí)現(xiàn)根據(jù)多個(gè)字段查找和置頂功能

    在mysql中,如果要實(shí)現(xiàn)根據(jù)某個(gè)字段排序的時(shí)候,可以使用下面的SQL語(yǔ)句,下面為大家介紹下如何實(shí)現(xiàn)根據(jù)多個(gè)字段查找和置頂功能
    2013-11-11
  • Mybatis中的動(dòng)態(tài)SQL語(yǔ)句解析

    Mybatis中的動(dòng)態(tài)SQL語(yǔ)句解析

    這篇文章主要介紹了Mybatis中的動(dòng)態(tài)SQL語(yǔ)句解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • MySQL無(wú)法修改主鍵的問(wèn)題分析及解決方案

    MySQL無(wú)法修改主鍵的問(wèn)題分析及解決方案

    最近同事咨詢了一個(gè)問(wèn)題,TDSQL(for MySQL)中的某張表主鍵需要改為聯(lián)合主鍵,是否必須先刪除現(xiàn)有的主鍵?因?yàn)閯h除主鍵時(shí),提示這個(gè)錯(cuò)誤,所以本文給大家介紹了MySQL無(wú)法修改主鍵的問(wèn)題分析及解決方案,需要的朋友可以參考下
    2024-01-01
  • MySQL表鎖、行鎖、排它鎖及共享鎖的使用詳解

    MySQL表鎖、行鎖、排它鎖及共享鎖的使用詳解

    隨著應(yīng)用對(duì)事務(wù)完整性和并發(fā)性要求的不斷提高,MySQL才開(kāi)始開(kāi)發(fā)基于事務(wù)的存儲(chǔ)引擎,下面這篇文章主要給大家介紹了關(guān)于MySQL表鎖、行鎖、排它鎖及共享鎖使用的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • 如何設(shè)置mysql允許外部連接訪問(wèn)

    如何設(shè)置mysql允許外部連接訪問(wèn)

    大家好,本篇文章主要講的是如何設(shè)置mysql允許外部連接訪問(wèn),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • insert和select結(jié)合實(shí)現(xiàn)

    insert和select結(jié)合實(shí)現(xiàn)"插入某字段在數(shù)據(jù)庫(kù)中的最大值+1"的方法

    今天小編就為大家分享一篇關(guān)于insert和select結(jié)合實(shí)現(xiàn)"插入某字段在數(shù)據(jù)庫(kù)中的最大值+1"的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • Ubuntu下MySQL中文亂碼的問(wèn)題解決

    Ubuntu下MySQL中文亂碼的問(wèn)題解決

    對(duì)于MySQL中文亂碼問(wèn)題(我的是Ubuntu系統(tǒng)),在網(wǎng)上看了很多解決方案,期間也走了不少?gòu)澛?,所以想著根?jù)自己的解決之路寫(xiě)一篇文章分享給有需要的朋友們,所以這篇文章主要介紹了如何解決Ubuntu下MySQL中文亂碼問(wèn)題的相關(guān)資料,需要的朋友可以參考借鑒。
    2017-02-02
  • 查詢MySQL安裝路徑的兩種方法

    查詢MySQL安裝路徑的兩種方法

    這篇文章主要給大家介紹了關(guān)于查詢MySQL安裝路徑的兩種方法,在使用MySQL時(shí)有時(shí)需要知道MySQL的安裝路徑才能進(jìn)行相關(guān)操作,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • win10下mysql 8.0.16 winx64安裝圖文最新教程

    win10下mysql 8.0.16 winx64安裝圖文最新教程

    這篇文章主要為大家詳細(xì)介紹了win10下mysql 8.0.16 winx64安裝圖文最新教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • MySQL 快速刪除大量數(shù)據(jù)(千萬(wàn)級(jí)別)的幾種實(shí)踐方案詳解

    MySQL 快速刪除大量數(shù)據(jù)(千萬(wàn)級(jí)別)的幾種實(shí)踐方案詳解

    這篇文章主要介紹了MySQL 快速刪除大量數(shù)據(jù)(千萬(wàn)級(jí)別)的幾種實(shí)踐方案詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評(píng)論

鹤壁市| 汉阴县| 五峰| 贡嘎县| 阿克陶县| 云和县| 巴彦县| 门头沟区| 基隆市| 申扎县| 武山县| 东乌| 湘西| 平江县| 锡林浩特市| 南通市| 淮南市| 朔州市| 阿克陶县| 通城县| 闽侯县| 乐清市| 桃园市| 佛冈县| 深州市| 浠水县| 措美县| 新疆| 丹巴县| 盖州市| 临沭县| 会泽县| 盘山县| 南康市| 锦屏县| 同心县| 金华市| 松潘县| 边坝县| 察哈| 连南|