Home > Database > Mysql Tutorial > MySQL event scheduler Event Scheduler detailed explanation

MySQL event scheduler Event Scheduler detailed explanation

黄舟
Release: 2016-12-16 11:12:10
Original
1352 people have browsed it

The event scheduler is another new feature added in MySQL 5.1. It can be used as a scheduled task scheduler, replacing some of the scheduled functions that could only be completed by the operating system task scheduler. For example, the crontabe in Linux can only be executed accurately once per minute, while the MySQL event scheduler can execute one task per second, which is very practical in some environments with high real-time requirements. .


The event scheduler is triggered and executed regularly. From this perspective, it can also be called a "temporary trigger". Triggers only execute some statements for events generated by a certain table, while event schedulers execute some statements at a certain (interval) time. Events are managed by a specific thread, the so-called "event scheduler". After enabling the event scheduler, an account with SUPER permissions can see this thread by executing SHOW PROCESSLIST. By setting the value of the global variable event_scheduler, you can dynamically control whether the event scheduler is enabled.


(root:localhost:)test> SET GLOBAL event_scheduler = ON;(root:localhost:)test> show processlistG****************************** **** 4. row ***************************Id: 46147User: event_schedulerHost: localhostdb: NULLCommand: DaemonTime: 1State: Waiting on empty queueInfo: NULL


As above, the owner of this thread is event_scheduler.


Application Case


This case uses the characteristics of the event scheduler to call a stored procedure every second to determine whether SLAVE is running normally. If it is found that SLAVE is closed, ignore 0 errors and then restart SLAVE.


First create a stored procedure


delimiter //create procedure `Slave_Monitor`()beginSELECT VARIABLE_VALUE INTO @SLAVE_STATUS FROM information_schema.GLOBAL_STATUS WHERE VARIABLE_NAME='SLAVE_RUNNING';IF ('ON' != @SLAVE_STATUS) THENSET GLOBAL SQL_SL AVE_SKip_COUNTER= 0;SLAVE START;END IF;end; //delimiter ;

Since statements like SHOW SLAVE STATUS cannot be called in the stored procedure, the exact copy error information and error code cannot be obtained, and SLAVE cannot be processed further. Stop various situations.


Next, create the task


CREATE EVENT IF NOT EXISTS `Slave_Monitor`

ON SCHEDULE EVERY 5 SECOND

ON COMPLETION PRESERVE

DO

CALL Slave_Monitor();


Created a task every 5 Executed once every second, the task will still be retained after the task is completed, rather than deleted. Of course, the task in this example will not end unless it is manually disabled.


If you want to temporarily close a task during operation, execute the ALTER EVENT statement:


(root:localhost:)test> alter event `Slave_Monitor` ON

COMPLETION PRESERVE DISABLE;

(root :localhost:)test> alter event `Slave_Monitor` ON

COMPLETION PRESERVE ENABLE;

The above is the detailed explanation of the MySQL event scheduler Event Scheduler. For more related articles, please pay attention to the PHP Chinese website (m.sbmmt.com)!


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template