Convertir des tables de base de données WordPress de MyISAM à InnoDB avec WP-CLI

Dans cet article, je vous montre comment convertir facilement vos tables de base de données WordPress du moteur MyISAM au moteur InnoDB avec WP-CLI.

Si vous vous demandez pourquoi vous voudriez effectuer cette conversion de base de données, je vous avais déjà parlé des améliorations d’InnoDB par rapport à MyISAM (tirer parti de plusieurs cœurs est assez impressionnant). On constate d’énormes améliorations du temps de réponse et une réduction de la charge du serveur après la conversion de MyISAM à InnoDB. Il existe également des différences d’index MySQL intéressantes entre les deux moteurs.

Commençons !

Conversion des tables WordPress de MyISAM à InnoDB avec WP-CLI

Vérifiez si certaines de vos tables utilisent MyISAM au lieu d’InnoDB:

wp db query "SHOW TABLE STATUS WHERE Engine = 'MyISAM'" --allow-rootCode language: JavaScript (javascript)

Si vous n’obtenez aucune sortie, il n’y a pas de tables MyISAM. Si vous obtenez une sortie, elle ressemblera à ceci :

+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+---------------------+--------------------+----------+----------------+---------+
| Name     | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time         | Check_time          | Collation          | Checksum | Create_options | Comment |
+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+---------------------+--------------------+----------+----------------+---------+
| wp_posts | MyISAM |      10 | Dynamic    | 2579 |           1916 |     443644 | 28147497610655 |      4224000 |         0 |          11861 | 2017-08-19 21:56:47 | 2017-09-07 03:55:17 | 2017-08-19 21:56:48 | utf8mb4_unicode_ci |     NULL |                |         |
+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+---------------------+--------------------+----------+----------------+---------+Code language: PHP (php)
Faites une sauvegarde de votre base de données avant de commencer !

Vous pouvez facilement sauvegarder la base de données avec cette commande :

wp db export before-engine-change.sql --all-tablespaces --add-drop-table --allow-rootCode language: JavaScript (javascript)

Vous pouvez facilement restaurer avec cette commande :

wp db import before-engine-change.sql --allow-rootCode language: JavaScript (javascript)

Voici un court script bash pour convertir toutes les tables de base de données WordPress MyISAM en InnoDB avec WP-CLI:

sudo -u www-data wp db query "SELECT CONCAT('ALTER TABLE ', TABLE_SCHEMA,'.', TABLE_NAME, ' ENGINE=InnoDB;') FROM information_schema.TABLES WHERE ENGINE = 'MyISAM' AND table_schema NOT IN ('information_schema', 'mysql', 'performance_schema')" --skip-column-names > db_optimize.sql
sudo -u www-data wp db query < db_optimize.sql
rm db_optimize.sqlCode language: JavaScript (javascript)

Et voilà ! Toutes vos tables sont désormais au format InnoDB.

Maintenant, vous pouvez vérifier s’il reste des tables MyISAM, vous ne devriez obtenir aucune sortie :

wp db query "SHOW TABLE STATUS WHERE Engine = 'MyISAM'" --allow-rootCode language: JavaScript (javascript)

Comparez avec la version InnoDB :

wp db query "SHOW TABLE STATUS WHERE Engine = 'InnoDB'" --allow-rootCode language: JavaScript (javascript)

Vous devriez obtenir une grande sortie de table montrant que toutes les tables ont été converties du moteur MyISAM au moteur InnoDB.

Envie d'ajouter des fonctionnalités exceptionnelles à votre site WordPress ou WooCommerce? Je suis là pour vous aider.

Explorons les possibilités ensemble »

Matt

Matt Biscay est développeur WordPress et WooCommerce certifié chez Codeable, ainsi que sysadmin qualifié et enseignant-chercheur. Passionné par le code performant et les solutions sécurisées, je m'efforce d'offrir une expérience utilisateur exceptionnelle sur chaque projet.

Vous avez aimé cet article ? Vous avez un projet en tête, n'hésitez pas à me contacter, je serai ravi d'en discuter avec vous !

Opinions