Mysql Event Scheduler๋ž€?

0taetaeยท2024๋…„ 12์›” 24์ผ
post-thumbnail

๐Ÿ“™ Event Scheduler ๊ฐ€ ๋ฌด์—‡์ผ๊นŒ?

๐Ÿ’กEvent Scheduler

  • ํŠน์ • ์‹œ๊ฐ„์— ๋˜๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ SQL๋ฌธ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์œ ์ง€๋ณด์ˆ˜, ์ฃผ๊ธฐ์ ์ธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ๋ฐฑ์—… ๋“ฑ์˜ ์ž‘์—…์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’กEvent Scheduler๋Š” ์–ด๋– ํ•œ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ• ๊นŒ?

  1. ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ์‹œ DB์— ๊ณผ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…
    • ํ†ต๊ณ„ ๋“ฑ์˜ Batch ์ž‘์—…
    • Banking Data
  2. ์ •๊ธฐ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์ž‘์—…
    • ์ •๊ธฐ Data Back up
    • ์‹œ๊ฐ„์˜ ํ๋ฆ„์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ

๐Ÿ’กEvent Scheduler ๊ตฌ๋ฌธ

CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
DO event_body;
  • event_name : ์ด๋ฒคํŠธ์˜ ๊ณ ์œ  ์ด๋ฆ„
  • schedule : ์ด๋ฒคํŠธ ์‹คํ–‰ ์ผ์ • (AT ๋˜๋Š” EVERY ์‚ฌ์šฉ)
  • event_body : ์‹คํ–‰ํ•  SQL ๋ฌธ

๐Ÿ’กschedule ์œ ํ˜•

  1. ์ผํšŒ์„ฑ ์ด๋ฒคํŠธ
    • AT ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉ
    • ํŠน์ • ์‹œ์ ์— ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑ
  2. ๋ฐ˜๋ณต ์ด๋ฒคํŠธ
    • EVERY ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉ
    • ์ฃผ๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑ

๐Ÿ“™ Event Scheduler ์‹ค์Šตํ•˜๊ธฐ

๐Ÿ’ก๋‹จ๊ณ„ 1. Event Scheduler ์ƒ์„ฑ ์ „ ํ™•์ธํ•˜๊ธฐ

  1. MySQL ์„œ๋ฒ„์˜ Event Scheduler ์‚ฌ์šฉ ์—ฌ๋ถ€ ํ™•์ธ

    SHOW VARIABLES LIKE 'event%';
  2. value๊ฐ€ OFF์ธ ๊ฒฝ์šฐ ON์œผ๋กœ ๋ณ€๊ฒฝ

    SET GLOBAL event_scheduler = ON;
  3. MYSQL ๋‚ด์— ์ €์žฅ๋œ Event Scheduler ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ

    SHOW EVENTS;
    SELECT * FROM information_schema.EVENTS;

๐Ÿ’ก๋‹จ๊ณ„ 2. ํ…Œ์ด๋ธ” ์ƒ์„ฑํ•˜๊ธฐ

CREATE TABLE IF NOT EXISTS test_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    data VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

๐Ÿ’ก๋‹จ๊ณ„ 3. Event Scheduler ์ž‘์„ฑํ•˜๊ธฐ

  1. 1๋ถ„๋งˆ๋‹ค ๋ฐ์ดํ„ฐ ๋“ฑ๋กํ•˜๋Š” Event Scheduler

    CREATE EVENT IF NOT EXISTS insert_event
    ON SCHEDULE EVERY 1 MINUTE
    DO
    INSERT INTO test_table (data) VALUES ('test Data');
  2. 5๋ถ„ ํ›„ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์‚ญ์ œํ•˜๋Š” Event Scheduler

    CREATE EVENT IF NOT EXISTS delete_event
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 MINUTE
    DO
    DELETE FROM test_table;
  3. ํŠน์ • ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ฐ˜๋ณต ์‹คํ–‰๋˜๋Š” Event Scheduler

    CREATE EVENT IF NOT EXISTS specific_period_event
    ON SCHEDULE EVERY 1 MINUTE
    STARTS CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
    ENDS CURRENT_TIMESTAMP + INTERVAL 10 MINUTE
    DO
    INSERT INTO test_table (data) VALUES ('Periodic Data');

0๊ฐœ์˜ ๋Œ“๊ธ€