Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How expensive are MySQL events?

In my web app I use two recurring events that "clean up" one of the tables in the database, both executed every 15 minutes or so.

My question is, could this lead to problems in performance in the future? Because I've read somewhere -I don't recall where exactly- that MySQL events are supposed to be scheduled to run once a month or so. Thing is, this same events keep the table in a pretty reduced size (as they delete records older than 15~ minutes), maybe this compensates the frequency of their execution, right?

Also, is it better to have one big MySQL event or many small ones if they are be called in the same frequency?

like image 808
federico-t Avatar asked Apr 20 '12 06:04

federico-t


People also ask

How do events work in MySQL?

MySQL Events are tasks that run according to a schedule. Therefore, we sometimes refer to them as scheduled events. When you create an event, you are creating a named database object containing one or more SQL statements to be executed at one or more regular intervals, beginning and ending at a specific date and time.

Does MySQL have a scheduler?

The MySQL Event Scheduler manages the scheduling and execution of events, that is, tasks that run according to a schedule.

How do I show events in MySQL?

To see events for a specific schema, use the FROM clause. For example, to see events for the test schema, use the following statement: SHOW EVENTS FROM test; The LIKE clause, if present, indicates which event names to match.

Where are events stored in MySQL?

MySQL Events are named object which contains one or more SQL statement. They are stored in the database and executed at one or more intervals. For example, you can create an event that optimizes all tables in the database that runs at 1:00 AM every Sunday.


1 Answers

I don't think there's a performance indication in the monthly base just more of a suggestion of what to do with it. So i think you're ok with doing your cleanup using the events.

In the end the documentation suggets that the events are

Conceptually, this is similar to the idea of the Unix crontab (also known as a “cron job”) or the Windows Task Scheduler.

And the concept for those is that you can run a task every minute if you wish to do so.


On the second part of that question:

Serialize or spread it up. If you split them up into many events that will run at the same time you will create spikes of possibly very high cpu usage that might slow down the application while processing the events.

So either pack everything into one event so it runs in succession or spread the single events up so they execute on different times during the 15 minutes timeframe. Personally i think the first one is to be preferred, pack them up into a single event as then they are guaranteed to run in succession, even if a single one of them keeps running longer than usual.

The same goes for cronjobs. If you shedule 30 long-running exports at a single time your application is going to fail miserably during that timeslot (learned that the hard way).

like image 90
bardiir Avatar answered Oct 13 '22 09:10

bardiir