MariaDB : convertir vos tables MyISAM en Aria
J’ai cru comprendre que l’un des intérêts majeurs à passer de la base de données MySQL à MariaDB était le choix du moteur Aria (inexistant sur MySQL) préférable à MyISAM. L’éditeur annonce un gain de performance de 50% à l’avantage du moteur Aria par rapport à MyISAM !
Procédure stockée de conversion de tables MyISAM en Aria
Je vous ai concocté une procédure stockée pour convertir vos tables MyISAM en Aria. Après vous être connecté via un tunnel SSH à votre serveur, je vous conseille de requêter directement sur votre base MariaDB à partir de HeidiSQL :
DELIMITER // CREATE PROCEDURE allengines2aria() BEGIN DECLARE done INT DEFAULT FALSE; DECLARE strSchema,strTable VARCHAR(255); DECLARE curInnoDB CURSOR FOR SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES WHERE ENGINE IN ('MyISAM') ; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN curMyISAM; read_loop: LOOP FETCH curInnoDB INTO strSchema,strTable; IF done THEN LEAVE read_loop; END IF; SET @s=strSchema; SET @t=strTable; SET @sql=CONCAT('ALTER TABLE `',@s,'`.`',@t,'` ENGINE=Aria'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END LOOP; CLOSE curMyISAM; END; // DELIMITER ;
Pour exécuter cette procédure stockée :
CALL allengines2aria();