in this post, I’m going to let you know about MySQL event scheduler and how to create events to automate repetitive database tasks. These tasks are similar to Linux cron jobs.
MySQL Events are named objects that have one or more SQL statements in them. They’re saved in the database and run at predetermined intervals.
MySQL Event Scheduler
MySQL Events are tasks that run on a schedule set by the user. The Event Scheduler is a thread that runs Events at a specified time.
If you need to delete all data from a table at a particular time, you can construct a cron job at the script level that will run at the specified time.
However, at the database level, you can define an EVENT that will RUN at a predetermined time.
How to check Event Scheduler is enabled
All scheduled events are executed by a specific thread called the event scheduler thread in MySQL. The below command can be used to see the status of the event scheduler thread:
SHOW PROCESSLIST
If the event scheduler is enabled, You will get the below lists:
How To Enable Event Scheduler
You can set the event_scheduler system variable to enable and start it using below command:
SET GLOBAL event_scheduler = ON;
MySQL Create Event
The CREATE EVENT statement creates a new event. Here is the basic syntax of the CREATE EVENT
statement:
CREATE EVENT `event_name` ON SCHEDULE schedule [ON COMPLETION [NOT] PRESERVE] [ENABLE | DISABLE | DISABLE ON SLAVE] DO BEGIN -- event body END;
in the above code, We’ll create and schedule a new event in MySQL.
The event will not run unless the Event Scheduler is enabled. The MySQL scheduled jobs can be assigned various settings. You can get more details from MySQL create event documentation.
MySQL CREATE EVENT Configuration
Let’s create some examples of creating new events and defined parameters.
Creating a one-time MySQL Event
AT 'YYYY-MM-DD HH:MM.SS'
Example: AT ‘2013-30-01 05:00.00’
Run Event Scheduler once after a specific period has elapsed
AT CURRENT_TIMESTAMP + INTERVAL n [HOUR|MONTH|WEEK|DAY|MINUTE]
Example: AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
Recurring Event Scheduler at Specific Intervals
EVERY n [HOUR|MONTH|WEEK|DAY|MINUTE]
Example: EVERY 1 DAY
Event Scheduler at specific intervals during a specific period
Using the Event Scheduler, you can schedule events at certain times throughout the day or week.
EVERY n [HOUR|MONTH|WEEK|DAY|MINUTE] STARTS date ENDS date
Example: EVERY 1 DAY STARTS CURRENT_TIMESTAMP + INTERVAL 1 WEEK ENDS ‘2012-01-01 00:00.00’
Schedule to Drop an Event
You can also be dropped once its schedule has expired with help of (ON COMPLETION NOT PRESERVE).
IF you will set (ON COMPLETION PRESERVE) then your event will preserve after the schedule.
Create Events in MySQL
The following statement creates a recurring event that executes every minute:
Create DEFINER=`root`@`localhost` EVENT `insights_app1`.`failedservices_truncate` ON SCHEDULE EVERY 1 MINUTE DO Delete From failedservices
The above EVENT run every 1 min.
How To Drop an Event
To remove an existing event, you use the DROP EVENT statement as follows:
DROP EVENT [IF EXIST] event_name;
How to Create View in MySQL
MySql View is very important factor of Database based on performance. View is virtual table that’s contains result set of your SQL statement. In SQL statement yo can use SQL functions, WHERE, and JOIN statements to get result set.
The View table can contain rows and column like your original table the column name may be different and unique in VIEW table. By default, the names of the columns retrieved by the SELECT
statement are used for the view column names. The Columns name in view may be one or more real tables in the database.
Syntax to Create View in MySQL
CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition
A view can belong to a database. By default, a new view is created in the default database. To create the view explicitly in a given database, specify the name as db_name.view_name
:
Create view in mysql with Example
CREATE VIEW test.view_name AS SELECT column_name(s) FROM table_name WHERE condition
Where: test is the database name