Utilitaires
Scripts
Divers
Jeux
Rechercher
Quillevere.net
Réflexions informatiques

Créer une tâche planifiée sur MySQL

01/10/2019
Il est possible sur MySQL de créer une tâche planifiée afin d'exécuter régulièrement une requête.

La fonction se nomme CREATE EVENT et prend en paramètres la fréquence et la requête à exécuter.

Activation du gestionnaire d'événement

Par défaut le gestionnaire d'événement de MySQL est désactivé (valeur OFF). Vous pouvez le vérifier avec la requête suivante :

SHOW VARIABLES WHERE VARIABLE_NAME = 'event_scheduler'

S'il est inactif, il faut modifier le fichier de configuration de MySQL. Sur Ubuntu, c'est :

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Puis il faut ajouter dans la section [mysqld] la ligne suivante :

event_scheduler=1

Sauver et redémarrer le serveur MySQL :

sudo service mysql restart

Application n°1 : purger une table

Un cas pratique est de purger régulièrement une table de log. La requête suivante est une solution simple à mettre en place :

CREATE EVENT even_purge_table_log
ON SCHEDULE EVERY 1 DAY
STARTS '2019-01-01 09:50:00'
ON COMPLETION PRESERVE
DO
 DELETE LOW_PRIORITY FROM log WHERE
 `date_creation` < DATE_SUB(NOW(), INTERVAL 2 DAY)

Elle exécutera la requête DELETE en supprimant les lignes ayant plus de deux jours d'ancienneté tous les jours.

Application n°2 : créer des statistiques

Une autre utilité est d'effectuer régulièrement des statistiques sur une table. La requête ci-dessous sera lancée tous les jours et insérera dans une table le nombre de données d'une autre table.

CREATE EVENT even_stat_journaliere
ON SCHEDULE EVERY 1 DAY
STARTS '2019-01-01 09:50:00'
ON COMPLETION PRESERVE
DO
INSERT INTO stat_nb_matable (matable_id)
SELECT COUNT(*) FROM matable
Dernière modification le 01/10/2019 - Quillevere.net

Rechercher sur le site

rss RSS info Informations