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

Le gestionnaire d'événement de MySQL est désactivé par défaut (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 tous les jours la requête DELETE en supprimant les lignes ayant plus de deux jours d'ancienneté.

Application n°2 : créer des statistiques

Un autre cas d'usage est la création régulière de statistiques sur une table. La requête ci-dessous sera lancée tous les jours et insérera dans une table le nombre de lignes 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 22/10/2020 - Quillevere.net

Rechercher sur le site

rss RSS info Informations