Maison > Article > base de données > Explication détaillée des nouveaux exemples de fonctions MySQL (planificateur d'événements)
EventScheduler est une nouvelle fonction ajoutée après MySQL5.1, qui permet de définir la base de données selon A une période de temps personnalisée déclenche une certaine opération, qui peut être comprise comme un déclencheur temporel , et est similaire à <a href="http://www.php.cn/wiki/1497.html%20" target="_blank">linux</a>La crontab du planificateur de tâches sous le système, ou similaire à la tâche planifiée sous la fenêtre
. Il convient de mentionner que le planificateur d'événements de MySQL peut exécuter une tâche par seconde avec précision, tandis que les tâches planifiées du système d'exploitation (telles que CRON sous Linux ou la planification de tâches sous Windows) ne peuvent exécuter qu'une tâche par minute avec précision. 类似于<a href="http://www.php.cn/wiki/1497.html" target="_blank">linux</a>系统下面的任务调度器crontab,或者类似与window下面的计划任务
Pour vérifier si l'événement est activé, utilisez la commande suivante pour vérifier :
#方式一 SHOW VARIABLES LIKE 'event_scheduler'; #方式二 SELECT @@event_scheduler; #方式三 SHOW PROCESSLIST; #查看事件状态 SHOW EVENTS;Si vous voyez event_scheduler is on ou si les informations event_scheduler sont affichées dans PROCESSLIST, l'événement a été activé. S'il est affiché comme étant désactivé ou si les informations event_scheduler ne sont pas visibles dans PROCESSLIST, cela signifie que l'événement n'est pas activé et que nous devons l'activer.
Méthode 1. Modifier les paramètres dynamiques
SET GLOBAL event_scheduler = ON;Après avoir modifié ce paramètre, il faudra effet immédiatement, mais le redémarrage de MySQL l'a restauré, c'est-à-dire que les paramètres ne peuvent pas s'étendre sur les redémarrages.
Méthode 2. Modifiez le fichier de configuration puis redémarrez Ajoutez le contenu suivant à la section [mysqld] dans my.cnf, puis redémarrez mysql.
event_scheduler=ON;Une fois pour toutes, vous avez besoin d'une autorisation pour modifier la configuration de la base de données.
Méthode 3 : Ajouter « –event_scheduler=1 » directement à la commande de démarrage
mysqld ... --event_scheduler=ON
CREATE [DEFINER = { user | CURRENT_USER }] EVENT [IF NOT EXISTS] event_name ON SCHEDULE schedule [ON COMPLETION [NOT] PRESERVE] [ENABLE | DISABLE | DISABLE ON SLAVE] [COMMENT 'comment'] DO event_body; schedule: AT timestamp [+ INTERVAL interval] ... | EVERY interval [STARTS timestamp [+ INTERVAL interval] ...] [ENDS timestamp [+ INTERVAL interval] ...] interval: quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}DEFINER : Définissez l'utilisateur qui vérifie les autorisations lorsque l'événement est exécuté.
Planification ON SCHEDULE : définissez l'heure et l'intervalle d'exécution.
ON COMPLETION [NOT] PRESERVE : Définissez si l'événement est exécuté une fois ou de manière permanente. La valeur par défaut est une exécution, c'est-à-dire PAS PRESERVE.
ENABLE | DISABLE | DISABLE ON SLAVE : Définissez si l'événement est activé ou désactivé après sa création, et s'il est désactivé par le haut. Si le serveur esclave synchronise automatiquement l'instruction de l'événement de création sur le maître, DISABLE ON SLAVE sera automatiquement ajouté.
COMMENT 'commentaire' :
Commentaire qui définit l'événement.
ALTER [DEFINER = { user | CURRENT_USER }] EVENT event_name [ON SCHEDULE schedule] [ON COMPLETION [NOT] PRESERVE] [RENAME TO new_event_name] [ENABLE | DISABLE | DISABLE ON SLAVE] [COMMENT 'comment'] [DO event_body]
DROP EVENT [IF EXISTS] event_name;
Exemple 1Minuté pour envoyer des messages tous les 3 secondes
Insérer les données dans la table test2
create event event_insert_t2 on schedule every 3 second on completion preserve do insert into test2(department,time_v) value('1',now());Résultat de l'exécution
Exemple 2Créer un événement qui efface les données de la table de test après 10 minutes
CREATE EVENT IF NOT EXISTS event_truncate_test2 ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 10 MINUTE DO TRUNCATE TABLE test2;
Exemple 3Créer un événement en 2015-04 -17 L'événement d'effacement des données de la table de test à 14:42:00
DROP EVENT IF EXISTS event_truncate_test2; CREATE EVENT event_truncate_test2 ON SCHEDULE AT TIMESTAMP '2015-04-17 14:42:00' DO TRUNCATE TABLE test2;
Exemple 4Après 5 jours, commencez à insérer des données dans la table test2 à une heure programmée de 3 secondes chaque jour pendant un mois Puis arrêtez l'exécution
CREATE EVENT IF NOT EXISTS event_truncate_test2 ON SCHEDULE EVERY 3 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 5 day ENDS CURRENT_TIMESTAMP + INTERVAL 1 month ON COMPLETION PRESERVE DO INSERT INTO test2(department,time_v) VALUES('1',NOW());
Exemple 1 Fermer temporairement l'événement
alter event event_insert_t2 disable;Autres événements de création similaires.
DROP EVENT IF EXISTS event_insert_t2;L'appel d'événement
procédure stockée ou fonction est comme un appel normal.
Convient pour la collecte régulière d'informations statistiques, l'effacement régulier des données historiques, les vérifications régulières des bases de données, etc.
Tutoriel vidéo en ligne MySQL gratuit
2Dernier tutoriel manuel MySQL.
3. Tutoriel vidéo d'introduction à l'éducation booléenne Yan Shiba mysql
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!