Maison > Article > base de données > Expliquez comment MySQL implémente les tâches planifiées à travers des exemples
Depuis MySQL 5.1.6, une fonctionnalité très distinctive a été ajoutée - le planificateur d'événements, qui peut être utilisé pour effectuer certaines tâches spécifiques sur une base planifiée (par exemple : suppression d'enregistrements, données agrégation, sauvegarde de données, etc.) pour remplacer le travail qui ne pouvait être effectué que par les tâches planifiées du système d'exploitation.
Ce qui mérite d'être mentionné, c'est que le planificateur d'événements de MySQL peut être précis pour exécuter une tâche chaque seconde, tandis que les tâches planifiées du système d'exploitation (telles que le cron de Linux ou la planification des tâches sous Windows) ne peuvent être précises que pour être exécutées toutes les minutes. . Il est très adapté à certaines applications nécessitant des données en temps réel élevées (telles que les actions, les cotes, les scores, etc.).
Les planificateurs d'événements sont parfois appelés déclencheurs temporaires, car les planificateurs d'événements sont déclenchés en fonction d'une période de temps spécifique pour effectuer certaines tâches, tandis que les déclencheurs sont déclenchés en fonction d'une certaine table. L'événement généré est déclenché, et c'est ici. la différence réside.
1. Vérifiez si
> show variables like 'event_scheduler';
2. Activez le planificateur d'événements
set global event_scheduler = on;
Le paramètre ici, lorsque MySQL redémarre. Ensuite, il se refermera automatiquement. Si vous devez l'activer tout le temps, vous devez le configurer dans my.ini comme suit :
(tutoriel vidéo d'apprentissage recommandé : tutoriel vidéo mysql)
event_scheduler = on
trois , créez la syntaxe de l'événement
CREATE EVENT [IF NOT EXISTS ] event_name ON SCHEDULE schedule [ ON COMPLETION [ NOT ] PRESERVE ] [ ENABLE | DISABLE ] [ COMMENT '注释' ] DO SQL语句; schedule : AT TIMESTAMP [+ INTERVAL interval ] | EVERY interval [ STARTS TIMESTAMP ] [ ENDS TIMESTAMP ] interval : quantity { YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND }
event_name : nom de l'événement, longueur maximale de 64 caractères.
calendrier : délai d'exécution.
[ ON COMPLETION [ NOT ] PRESERVE ] : indique si l'événement doit être réutilisé.
[ ENABLE | DISABLE ] : L'événement est activé ou désactivé.
4. Fermer l'événement
ALTER EVENT event_name DISABLE;
Ouvrir l'événement
ALTER EVENT event_name ENABLE;
6.
DROP EVENT [IF EXISTS ] event_name;
7. Afficher tous les événements
SHOW EVENTS;
8. Exemples d'événements
Nous créons d'abord un simple The. la table de test est utilisée pour testerCREATE TABLE `test` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `now` datetime DEFAULT NULL COMMENT '时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;Il existe deux types d'événements, l'un est un déclenchement par intervalle et l'autre est déclenché à une heure précise.
DROP EVENT IF EXISTS event_test; CREATE EVENT event_test ON SCHEDULE EVERY 1 SECOND STARTS '2017-08-22 11:57:00' ENDS '2017-08-22 12:00:00' ON COMPLETION PRESERVE ENABLE COMMENT '每隔一秒向test表插入记录' DO INSERT INTO test VALUES(NULL, now());Le résultat est tel qu'indiqué sur la figure :
Tutoriels d'articles connexes Recommandé :
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!