MySQL Time Event Schedule
MySQL EVENT SCHEDULE ์ค์ ํ๊ธฐ
MySQL 5.1.7 ์์๋ถํฐ๋ crontab+shell ์ ์ฌ์ฉํ์ง ์๊ณ ์๊ฐ๋ณ๋ก EVENT JOB์ ์ค์ ํ ์ ์๋ค.
Event Scheduler ON
MySQL ์ ์ญ๋ณ์์์ event_scheduler๋ฅผ ON ํด์ค๋ค.
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
/* ๋๋ */
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;
EVENT ๊ธฐ๋ณธ SQL ๋ฌธ
๋ค์์ EVENT๋ฅผ ์์ฑํ๋ ๊ธฐ๋ณธ SQL๋ฌธ์ด๋ค.
/* SQL */
CREATE EVENT [IF NOT EXISTS] ์ด๋ฒคํธ๋ช
ON SCHEDULE ์ค์ผ์ค
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT '์ฃผ์']
DO [BEGIN] ์คํํ sql๋ฌธ; [์คํํ sql๋ฌธ]; [END]
์ธ๋ถ ์ค์
INTERVAL ๊ตฌ๋ฌธ์ ํตํด ๋ฐ๋ณต ์ฃผ๊ธฐ๋ฅผ ์ง์ ํ ์ ์๊ณ , EVERY ๋ฅผ ํตํด ๋งค์ผ, ๋งค๋ถ, ๋งค์ ๋ฑ์ ๋ฐ๋ณต ์ง์ ๋ ๊ฐ๋ฅํ๋ค.
STARTS ์ ENDS๋ฅผ ํตํด ๋ฐ๋ณต์ ์์์ผ์, ์ข ๋ฃ์ผ์์ ์ง์ ๋ ๊ฐ๋ฅํ๋ค.
/* ์ค์ผ์ค */
{ AT ํ์ [+ INTERVAL ๊ฐ๊ฒฉ [+INTERVAL ๊ฐ๊ฒฉ...]]
| EVERY ๊ฐ๊ฒฉ [STARTS ํ์] [ENDS ํ์] }
/* ํ์ */
{CURRENT_TIMESTAMP | ๋
์์ผ์์ ๋ฆฌํฐ๋ด}
/* ๊ฐ๊ฒฉ */
{
YEAR|QUARTER|MONTH|DAY|HOUR|MINUTE|WEEK|SECOND
|YEAR_MONTH|DAY_HOUR|DAY_MINUTE|DAY_SECOND|HOUR_MINUT
|HOUR_SECOND|MINUTE_SECOND
}
-
ON SCHEDULE ๊ตฌ๋ฌธ์ ์ฐ๊ฒ๋๋ฉด ์ด๋ฒคํธ์ ์คํ์๊ฐ๊ณผ ๊ฐ๊ฒฉ์ ํ์๋ก ์ง์ ํ๊ณ , DO ๊ตฌ๋ฌธ ๋ค์ ์คํํ SQL๋ฌธ์ ์ ์ผ๋ฉด ๋๋ค.
-
์ผํ์ฑ์ผ๋ก ํ๋ฒ๋ง ์ง์ ํ๋ ๊ฒฝ์ฐ์๋ ON SCHEDULE AT {timestamp} ์ ๊ฐ์ ์์ผ๋ก ์ง์ ์ด ๊ฐ๋ฅํ๋ค. ์๋ฅผ ๋ค๋ฉด ON SCHEDULE AT โ2018-02-08 13:00:00โ ๊ณผ ๊ฐ์ ์์ผ๋ก ๊ฐ๋ฅํ๋ค. ํ์ง๋ง ๋ฐ๋์ ๋ฏธ๋์ ์๊ฐ์ ์ง์ ํ์ฌ์ผ ํ๋ค.
-
+INTERVAL์ ๋ณต์ ์ง์ ๋ ๊ฐ๋ฅํ๋ค. + INTERVAL 1 WEEK, + INTERVAL 4 HOUR ์ ๊ฐ์ด ์ง์ ํ ์ ์๋ค.
-
DO ์๋์ ์ง์ ํ๋ SQL๋ฌธ์ด ํ๋์ธ ๊ฒฝ์ฐ์๋ BEGIN, END, DELIMITER ์ง์ ์ ํ์์๋ค.
-
๋ณต์๋ก ์ง์ ํ๋ ๊ฒฝ์ฐ์๋ง BEGIN ~END๋ก Stored Procedure ์ฒ๋ผ ๊ฐ์ผ๋ค. ๊ทธ ์ด์ ๋ BEGIN ~END ์์ ์๋ SQL๋ฌธ์ ์ธ๋ฏธ์ฝ๋ก (;)์ผ๋ก ๊ตฌ๋ถํ๋ฏ๋ก CREATE EVENT์ ๋์ ์๋ฏธํ๋ ์ธ๋ฏธ์ฝ๋ก (;)ํ๊ณ ๊ตฌ๋ถ์ด ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ.
-
ON COMPLETION PRESERVE๋ ์ด๋ฒคํธ๊ฐ ์๋ฃํ๋๋ผ๊ณ ์ด๋ฒคํธ์ ๋ด์ฉ์ ์ ์งํ์ฑ ๋๊ฒ ๋๋ค.
์์ SQL
์์ ๋ฌธ์ ์๋์ ๊ฐ๋ค.
CREATE EVENT IF NOT EXISTS evt_sessionClean
ON SCHEDULE
EVERY 3 DAY_HOUR
COMMENT 'Clean up session at 03:00 daily'
DO
DELETE FROM admin.user_session;
์์ ์ฝ๋๋ ๋งค์ผ 03์์ admin DATABASE์ user_session ํ ์ด๋ธ์ ๋ชจ๋ Row๋ฅผ DELETEํ๋ค.
๋ ์์ธํ ์ถ์ฒ๋ ๊ณต์๋ฌธ์๋ ์ถ์ฒ๋ฅผ ์ฐธ๊ณ ํ๋๋ก ํ์.
์ถ์ฒ
1) https://dev.mysql.com/doc/refman/5.7/en/create-event.html
2) http://linuxism.tistory.com/854
3) http://h391106.tistory.com/257
Comments