Les EVENTS dans MySQL

Les EVENTS dans MySQLDepuis la version 5.1.6, MySQL dispose d’un planificateur d’événements qui évite de recourir à des scripts que nous planifions avec le gestionnaire cron sous Linux. La méthode est bien plus sûre puisqu’elle évite que les mots de passe se baladent dans différents fichiers du serveur, en clair !

Activation du planificateur d’événements

Vous pouvez éditer le fichier my.ini ou my.cnf et ajouter dans la section [mysqld] la ligne event_scheduler=1. Vous devez alors redémarrer l’instance :

Vous pouvez aussi modifier à chaud ce paramètre par l’une ou l’autre des deux commandes ci-dessous :

Pour vérifier que le planificateur d’événements s’exécute sous MySQL, tapez :

SELECT @@global.event_scheduler

Vous pouvez, par ailleurs, vérifier le fonctionnement du planificateur d’événements avec la commande SHOW PROCESSLIST.

Réparation et optimisation planifiées de tables MyISAM

Cet événement planifié a pour objet de programmer tous les jours les commandes REPAIR et OPTIMIZE sur des tables MyISAM :

USE mysql;
DROP EVENT IF EXISTS maintenance;
DELIMITER $$
CREATE EVENT maintenance
    ON SCHEDULE EVERY 1 DAY STARTS '2014-05-10 01:00:00'
    ENABLE
    DO 
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE val_table VARCHAR(255);
    DECLARE val_schema VARCHAR(255);
    DECLARE val_engine VARCHAR(255);
    DECLARE val_sql VARCHAR(255);
    DECLARE cur_tables CURSOR FOR
        SELECT table_schema, table_name, engine
        FROM information_schema.tables
        WHERE 
            table_schema NOT IN ('mysql','information_schema','performance_schema')
        and
            engine IN ('MyISAM','InnoDB');
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    OPEN cur_tables;
    boucle: LOOP
        FETCH cur_tables INTO val_schema,val_table,val_engine;
        IF done THEN
            LEAVE boucle;
        END IF;
        SET @a=val_schema;
        SET @b=val_table;
        SET @c=val_engine;
        IF @c='MyISAM' THEN
            /* SET @s='REPAIR TABLE ?.?'; */
            SET @s=CONCAT('REPAIR TABLE `',@a,'`.`',@b,'`');
        ELSEIF @c='InnoDB' THEN
            /* SET @s='ALTER TABLE ?.? ENGINE=InnoDB'; */
            SET @s=CONCAT('ALTER TABLE `',@a,'`.`',@b,'` ENGINE=InnoDB');
        END IF;
        PREPARE stmt FROM @s;
        EXECUTE stmt /* USING @a,@b */;
        DEALLOCATE PREPARE stmt;
        /* SET @s='OPTIMIZE TABLE ?.?'; */
        SET @s=CONCAT('OPTIMIZE TABLE `',@a,'`.`',@b,'`');
        PREPARE stmt FROM @s;
        EXECUTE stmt /* USING @a,@b */;
        DEALLOCATE PREPARE stmt;
    END LOOP;
    CLOSE cur_tables;
END
$$
DELIMITER ;

Vérifications d’usage

Le 1er contrôle à effectuer est de vérifier que votre « event » a bien été créé. Pour ce faire, vous pouvez employer deux méthodes distinctes :

Mais cela ne suffit pas. Il vous faudra contrôler dans les logs de MySQL que la commande programmée s’est correctement exécutée. Pour les activer, là-encore, vous disposez de deux méthodes.

Le fichier de logs du type host.log se situe par défaut à l’endroit où sont stockées les données.

Pour plus d’information sur la commande CREATE EVENT : Event Scheduler Configuration

MySQL / , , , ,

deneme bonusu veren siteler casino siteleri betdenemebonusu.com bahis siteleri Ev eşyası depolama Depolama Şehirlerarası evden eve nakliyat Evden eve nakliyat Eşya depolama yurtdışına ev taşıma Türkiye'den Almanya'ya ev taşıma zati eşya tasimaciligi uluslararasi zati eşya tasimaciligi eşya depolama şehirler arası nakliyat asansörlü nakliyat greatplay.net güvenilir online bahis siteler 2022 jetbahis Rexbet hovarda mobilbahis güncel adres sartsız Deneme Bonus sekabet maltcasino güncel adres> pinbahis100.com betduman.com olabahis.top سایت شرط بندی shartkade.com 1xbet-mobil.com beykoz evden eve nakliyat ataşehir evden eve nakliyat şişli evden eve nakliyat istanbul evden eve nakliyat
teens porn videos free sex xxx sexy videos