mysql怎么定時執(zhí)行 mysql定時器 每天執(zhí)行

如何在Mysql下指定時間內(nèi)執(zhí)行定時任務(wù)

最常用的做法是使用UNIX的cron直接執(zhí)行Java程序。

創(chuàng)新互聯(lián)建站成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點,以客戶需求中心、市場為導(dǎo)向”的快速反應(yīng)體系。對公司的主營項目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計、行業(yè) / 企業(yè)門戶設(shè)計推廣、行業(yè)門戶平臺運營、成都app軟件開發(fā)公司、手機網(wǎng)站制作設(shè)計、微信網(wǎng)站制作、軟件開發(fā)、成都西信服務(wù)器托管等實行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從創(chuàng)新互聯(lián)建站可以獲得的服務(wù)效果。

并不需要在Java做的那么復(fù)雜。

Windows服務(wù)器也有類似于cron的任務(wù)管理功能,同理

---------------------------

Tomcat不是用來管理定時任務(wù)的,如果沒有HTTP請求,Servlet是不會被執(zhí)行的。

建議lz把定期執(zhí)行的處理做成一個獨立的Java程序,用cron執(zhí)行。

如果不想寫?yīng)毩⒌腏ava程序,也可以用cron定期向Tomcat發(fā)送Http請求,但是,這樣做的話注意程序處理時間不能太長,因為HTTP通信有timeout的制約。

MySql如何執(zhí)行定時任務(wù)(定時執(zhí)行操作)麻煩告訴我

事件調(diào)度器是定時觸發(fā)執(zhí)行的,在這個角度上也可以稱作是臨時的觸發(fā)器。觸發(fā)器只是針對某個表產(chǎn)生的事件執(zhí)行一些語句,而事件調(diào)度器則是在某一個(間隔)時間執(zhí)行一些語句。事件是由一個特定的線程來管理的,也就是所謂的事件調(diào)度器。

代碼:/*開啟event_scheduler,也可以設(shè)置為on*/

set global event_scheduler =1;

/*創(chuàng)建簡單的任務(wù),每分鐘執(zhí)行一次,從一個表取數(shù)據(jù)插入到另一個表,也可以定時取,可以參看下面文檔,此處為簡單例子*/

CREATE EVENT MyEvent

ON SCHEDULE EVERY 1 MINUTEDOINSERT INTO list_test (字段1,字段1,字段1,字段1,字段1) select 字段1,字段1,字段1,字段1,字段1 from 表2 where id = 510;

/*每天固定時間執(zhí)行*/

CREATE EVENT EVENT_ADD_FOR20_ENOUGH

ON SCHEDULE EVERY 1 DAY

DROP PROCEDURE IF EXISTS `mystock`.`TEST_KKK`$$

CREATE PROCEDURE `mystock`.`TEST_KKK`()

/*LANGUAGE SQL

| [NOT] DETERMINISTIC

| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }

| SQL SECURITY { DEFINER | INVOKER }

| COMMENT 'string'*/BEGINDECLARE NUM INTEGER DEFAULT 0;

DECLARE $A INT;

SELECT (20-COUNT(STOCK_CODE)) as number into NUM FROM get_stock_list WHERE FLAG = 0 AND STIME = curdate();

IF NUM0 THEN

PREPARE STMP FROM 'INSERT INTO get_stock_list (stock_code,stock_name,close,raises,stime) select stock_code,stock_name,close,result1,selectd from choice_stock where stock_code not in (select stock_code from get_stock_list where stime = curdate() and flag = 0) and selectd = curdate() and selectd = curdate() order by id limit ?' ;

mysql怎么讓一個存儲過程定時執(zhí)行

查看event是否開啟: show variables like '%sche%';

將事件計劃開啟: set global event_scheduler=1;

關(guān)閉事件任務(wù): alter event e_test ON COMPLETION PRESERVE DISABLE;

開戶事件任務(wù): alter event e_test ON COMPLETION PRESERVE ENABLE;

簡單實例.

創(chuàng)建表 CREATE TABLE test(endtime DATETIME);

創(chuàng)建存儲過程test

CREATE PROCEDURE test ()

BEGIN

update examinfo SET endtime = now() WHERE id = 14;

END;

創(chuàng)建event e_test

CREATE EVENT if not exists e_test

on schedule every 30 second

on completion preserve

do call test();

每隔30秒將執(zhí)行存儲過程test,將當(dāng)前時間更新到examinfo表中id=14的記錄的endtime字段中去

1) 首先來看一個簡單的例子來演示每秒插入一條記錄到數(shù)據(jù)表

USE test;

CREATE TABLE aaa (timeline TIMESTAMP);

CREATE EVENT e_test_insert

ON SCHEDULE EVERY 1 SECOND

DO INSERT INTO test.aaa VALUES (CURRENT_TIMESTAMP);

等待3秒鐘后,再執(zhí)行查詢看看:

copyright dedecms

mysql SELECT * FROM aaa;

+---------------------+

| timeline |

+---------------------+

| 2007-07-18 20:44:26 |

| 2007-07-18 20:44:27 |

| 2007-07-18 20:44:28 |

+---------------------+

2) 5天后清空test表:

CREATE EVENT e_test

ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY

DO TRUNCATE TABLE test.aaa;

3) 2007年7月20日12點整清空test表:

CREATE EVENT e_test

ON SCHEDULE AT TIMESTAMP '2007-07-20 12:00:00'

DO TRUNCATE TABLE test.aaa;

4) 每天定時清空test表:

CREATE EVENT e_test

ON SCHEDULE EVERY 1 DAY

DO TRUNCATE TABLE test.aaa;

5) 5天后開啟每天定時清空test表:

CREATE EVENT e_test

ON SCHEDULE EVERY 1 DAY

STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY

DO TRUNCATE TABLE test.aaa;

6) 每天定時清空test表,5天后停止執(zhí)行:

CREATE EVENT e_test

ON SCHEDULE EVERY 1 DAY

ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAY

DO TRUNCATE TABLE test.aaa;

7) 5天后開啟每天定時清空test表,一個月后停止執(zhí)行

CREATE EVENT e_test

ON SCHEDULE EVERY 1 DAY

STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY

ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH

DO TRUNCATE TABLE test.aaa;

[ON COMPLETION [NOT] PRESERVE]可以設(shè)置這個事件是執(zhí)行一次還是持久執(zhí)行,默認(rèn)為NOT PRESERVE。

8) 每天定時清空test表(只執(zhí)行一次,任務(wù)完成后就終止該事件):

CREATE EVENT e_test

ON SCHEDULE EVERY 1 DAY

ON COMPLETION NOT PRESERVE

DO TRUNCATE TABLE test.aaa;

[ENABLE | DISABLE]可是設(shè)置該事件創(chuàng)建后狀態(tài)是否開啟或關(guān)閉,默認(rèn)為ENABLE。

[COMMENT ‘comment’]可以給該事件加上注釋。

三、修改事件(ALTER EVENT)

ALTER EVENT event_name

[ON SCHEDULE schedule]

[RENAME TO new_event_name]

[ON COMPLETION [NOT] PRESERVE]

[COMMENT 'comment']

[ENABLE | DISABLE]

[DO sql_statement]

1) 臨時關(guān)閉事件

ALTER EVENT e_test DISABLE;

2) 開啟事件

ALTER EVENT e_test ENABLE;

3) 將每天清空test表改為5天清空一次:

ALTER EVENT e_test

ON SCHEDULE EVERY 5 DAY;

四、刪除事件(DROP EVENT)

語 法很簡單,如下所示:

DROP EVENT [IF EXISTS] event_name

例如刪除前面創(chuàng)建的e_test事件

DROP EVENT e_test;

當(dāng)然前提是這個事件存在,否則會產(chǎn)生ERROR 1513 (HY000): Unknown event錯誤,因此最好加上IF EXISTS

DROP EVENT IF EXISTS e_test;

create event test

ON SCHEDULE AT '2007-09-01 12:00:00' + INTERVAL 1 DAY

on completion not preserve

do insert into yyy values('hhh','uuu');

解釋:從2007-09-01開始,每天對表yyy在12:00:00進行一個插入操作。而且只執(zhí)行一次(on completion not preserve )

我的計劃任務(wù)為:

create event sysplan

ON SCHEDULE AT '2010-05-22 23:00:00' + INTERVAL 1 DAY

on completion not preserve

do truncate table bjproj.ae_tmp;

三、通過設(shè)定全局變量event_scheduler 的值即可動態(tài)的控制事件調(diào)度器是否啟用。

查看是否event_scheduler開啟mysql SHOW VARIABLES LIKE '%event%';

設(shè)置開啟mysql SET GLOBAL event_scheduler=ON;

四、例子:

每分鐘插入一條日志:DELIMITER //CREATE EVENT `user_log_event` ON SCHEDULE EVERY 1 MINUTE STARTS '2010-12-27 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN INSERT INTO log SET addtime=NOW();END//

調(diào)用存儲過程:DELIMITER //CREATE EVENT `user_log_event` ON SCHEDULE EVERY 1 DAY STARTS '2010-00-00 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN CALL user_log_prov();END//

在MySQL 5.5 Command Line Client下調(diào)試通過。

如何寫mysql的定時任務(wù)

mysql實現(xiàn)定時任務(wù)是有一個時間調(diào)度器,所以首先要查看這個時間調(diào)度器是否開啟。

查看的命令:

show variables like 'event_scheduler'

如果沒有打開,則設(shè)置打開。設(shè)置的命令是:

set global event_scheduler = ON; 或set global event_scheduler = 1;

確定打開事件調(diào)度器后,我們可以創(chuàng)建一個定時任務(wù)。

創(chuàng)建定時任務(wù)的語法為:

create event 定時任務(wù)名稱

ON schedule 定時時間

do

定時任務(wù)所要執(zhí)行的sql;

example:每隔一分鐘往表tt里插入一條數(shù)據(jù)

create event insert_tt

ON schedule every 1 MINUTE

do

insert into tt values(1);

如果要執(zhí)行多條sql則可用多個do

create event insert_tt

ON schedule every 1 MINUTE

do

insert into tt values(1);

do

.......

使用命令查看所有的定時任務(wù)及其狀態(tài):

show processlist

如果要停掉某個定時任務(wù)可以使用:

alter event 定時任務(wù)名 ON

COMPLETION PRESERVE DISABLE;

example:

alter event insert_tt ON

COMPLETION PRESERVE DISABLE;

開啟某個定時任務(wù):

alter event 定時任務(wù)名稱 ON

COMPLETION PRESERVE ENABLE;

當(dāng)前文章:mysql怎么定時執(zhí)行 mysql定時器 每天執(zhí)行
URL鏈接:http://muchs.cn/article34/docoppe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、網(wǎng)站設(shè)計移動網(wǎng)站建設(shè)、App設(shè)計、定制網(wǎng)站品牌網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化