Maison > base de données > tutoriel mysql > le corps du texte

Explication détaillée des nouveaux exemples de fonctions MySQL (planificateur d'événements)

零下一度
Libérer: 2017-05-09 12:00:49
original
1277 Les gens l'ont consulté

Vue d'ensemble

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下面的计划任务

Vérifiez si la fonction événementielle est activée

Lorsque vous utilisez la fonction événementielle, assurez-vous d'abord que votre version de MySQL est 5.1 ou supérieure, puis vérifiez votre serveur MySQL Si l'événement est activé.

Pour vérifier si l'événement est activé, utilisez la commande suivante pour vérifier :

#方式一
SHOW VARIABLES LIKE &#39;event_scheduler&#39;;
#方式二
SELECT @@event_scheduler;
#方式三
SHOW PROCESSLIST;

#查看事件状态
SHOW EVENTS;
Copier après la connexion
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.

Activer la fonction événementielle

Méthode 1. Modifier les paramètres dynamiques

SET GLOBAL event_scheduler = ON;
Copier après la connexion
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;
Copier après la connexion
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
Copier après la connexion

Syntaxe de l'événement

1. Créer un événement

CREATE
    [DEFINER = { user | CURRENT_USER }]
    EVENT
    [IF NOT EXISTS]
    event_name
    ON SCHEDULE schedule
    [ON COMPLETION [NOT] PRESERVE]
    [ENABLE | DISABLE | DISABLE ON SLAVE]
    [COMMENT &#39;comment&#39;]
    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}
Copier après la connexion
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.

2. Modifier 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 &#39;comment&#39;]
    [DO event_body]
Copier après la connexion

3. Supprimer la syntaxe de l'événement

DROP EVENT [IF EXISTS] event_name;
Copier après la connexion

Exemples d'utilisation d'événements

1. Créer des événements

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(&#39;1&#39;,now());
Copier après la connexion
Résultat de l'exécution


Explication détaillée des nouveaux exemples de fonctions MySQL (planificateur d'événements)

Résultat de l'exécution de l'événement

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;
Copier après la connexion

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 &#39;2015-04-17 14:42:00&#39;
DO TRUNCATE TABLE test2;
Copier après la connexion

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(&#39;1&#39;,NOW());
Copier après la connexion

Modifier l'exemple d'événement

Exemple 1 Fermer temporairement l'événement

alter event event_insert_t2 disable;
Copier après la connexion
Autres événements de création similaires.

Exemple de suppression d'événement

DROP EVENT IF EXISTS event_insert_t2;
Copier après la connexion
L'appel d'événement

procédure stockée ou fonction est comme un appel normal.

Avantages, inconvénients et scénarios d'application des événements

  1. Avantages

  2. Les tâches planifiées sont gérées de manière uniforme par DBA, évitez le déploiement au niveau de la couche du système d'exploitation.

  3. Réduisez le risque de mauvaise utilisation par les administrateurs système.

  4. Propice à la gestion et à la maintenance ultérieures.

  5. Inconvénients

  6. Déployez et activez le planificateur avec précaution sur des bases de données chargées et exigeantes en performances.

  7. Un traitement trop complexe est plus approprié pour être mis en œuvre à l'aide de programmes.

  8. L'ouverture et la fermeture d'événements nécessitent des privilèges de superutilisateur.

  9. Scénarios d'application

    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.

[Recommandations associées]

1

Tutoriel vidéo en ligne MySQL gratuit

2

Dernier 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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!