Répertoire d'articles
Le moteur de stockage d'une table de base de données est comparable au moteur d'une voiture : le changer modifie instantanément ses performances et ses caractéristiques. Beaucoup pensent qu'une base de données sert uniquement à stocker des données, mais lorsqu'on commence à travailler avec… InnoDB 转成 MyISAMC’est seulement alors que vous découvrirez les secrets cachés qui se dissimulent derrière cela.
Pourquoi quelqu'un voudrait-il passer d'InnoDB à MyISAM ?
Dans de nombreux cas, MyISAM est plus rapide, notamment pour les applications à forte intensité de lecture et faible intensité d'écriture, telles que les bases de données de journaux et de statistiques.
Son mécanisme de verrouillage au niveau de la table fonctionne en réalité très bien même en cas de faible concurrence.
De plus, le stockage de fichiers de MyISAM est plus intuitif ; .MYD Stocker les données, une .MYI Le stockage des index, la migration et la sauvegarde sont autant d'opérations très pratiques.
Cependant, la prise en charge des transactions et des clés étrangères par InnoDB est quasiment indispensable dans les scénarios commerciaux complexes.
Par conséquent, vous devez déterminer si votre entreprise a réellement besoin de ces fonctionnalités avant d'effectuer la transition.
Commande principale : ALTER TABLE
Pour convertir une seule table d'InnoDB en MyISAM, une seule ligne de code est nécessaire :
ALTER TABLE `你的表名` ENGINE = MyISAM;
Une fois l'exécution terminée, le moteur de stockage de la table sera modifié.
N'est-ce pas simple ?
Conversion par lots : génération automatique de scripts
Si vous avez des dizaines, voire des centaines de tables, les modifier manuellement n'est absolument pas pratique.
À ce stade, une seule requête peut être utilisée pour générer automatiquement des instructions de conversion par lots :
SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE = MyISAM;')
FROM information_schema.tables
WHERE table_schema = '你的数据库名' AND engine = 'InnoDB';
Après son exécution, il affichera un tas de... ALTER TABLE ... Déclaration.
Copiez ces instructions et exécutez-les toutes en même temps pour effectuer la conversion par lots en une seule opération.
C'est ce qu'on appelle la « conversion par lots automatisée ».
Évaluation des risques avant conversion

contraintes de clé étrangère
InnoDB prend en charge les clés étrangères, tandis que MyISAM ne les prend pas du tout en charge.
Une fois converties, les contraintes de clé étrangère seront directement supprimées.
Si votre activité repose sur des suppressions ou des mises à jour en cascade, la logique sera complètement défaillante après la conversion.
Assistance aux transactions
InnoDB gère et prend en charge les transactions. COMMIT et ROLLBACK.
MyISAM ne gère pas les transactions, seulement les verrous au niveau des tables.
Après la conversion, tout le code relatif à la transaction deviendra invalide et toute restauration sera impossible en cas d'exception.
Performances de concurrence
InnoDB utilise le verrouillage au niveau des lignes, tandis que MyISAM utilise le verrouillage au niveau des tables.
Dans les scénarios de forte concurrence, MyISAM verrouille fréquemment les tables, ce qui entraîne des goulots d'étranglement au niveau des performances.
Caractéristiques de l'index
Dans MySQL Avant la version 5.6, MyISAM disposait de son propre index de texte intégral.
Mais en MySQL L'indexation en texte intégral est déjà prise en charge dans les versions 5.6 et 10+ de MariaDB et InnoDB.
Par conséquent, sauf si vous utilisez une version plus ancienne, il n'est pas nécessaire de passer à MyISAM pour l'indexation en texte intégral.
Processus de meilleures pratiques
Données de sauvegarde Avant de procéder à la conversion, assurez-vous d'exporter.
.sqlLes fichiers sont stockés de manière à pouvoir être restaurés à tout moment.Structure de la liste de contrôle Utilisez la commande suivante pour vérifier si une clé étrangère existe :
SHOW CREATE TABLE `你的表名`;Effectuer la conversion 使用
ALTER TABLEIl est également possible d'utiliser des scripts par lots pour effectuer la conversion.Vérifier l'état de santé Une fois la conversion terminée, exécutez :
CHECK TABLE `你的表名`; OPTIMIZE TABLE `你的表名`;Cela confirme que la table fonctionne correctement et libère les fragments.
Méthode de récupération inverse
Si une dégradation des performances ou des problèmes de logique métier sont observés après la conversion, vous pouvez revenir à InnoDB à tout moment :
ALTER TABLE `你的表名` ENGINE = InnoDB;
C'est ce qu'on appelle une « opération réversible », vous offrant une porte de sortie.
Points de vue faisant autorité cités
Selon Documentation officielle de MySQL Explication:
"Construction à clé étrangère"aiLes types NTM ne sont pris en charge que par InnoDB. Si vous convertissez une table au format MyISAM, toutes les clés étrangères seront ignorées.
——Manuel de référence MySQL, Chapitre 14.6.6 Contraintes de clé étrangère
Cette déclaration nous indique clairement que les clés étrangères sont totalement invalides dans MyISAM.
et Documentation officielle de MariaDB Il a également été souligné que :
« MyISAM ne prend pas en charge les transactions. Les applications qui reposent sur l'intégrité transactionnelle ne doivent pas utiliser MyISAM. »
— Base de connaissances MariaDB, Moteurs de stockage
C'est pourquoi il faut bien réfléchir avant de changer.
Mon point de vue et ma conclusion
Convertir InnoDB en MyISAM, c'est comme remplacer le moteur d'une voiture de luxe par un moteur de camion.
Il peut fonctionner, mais d'une manière complètement différente.
Si votre activité implique des requêtes statistiques légères, la rapidité et la simplicité de MyISAM peuvent être plus adaptées.
Cependant, si votre système repose sur des transactions et des clés étrangères, les convertir à la hâte revient à retirer l'airbag.
La véritable sagesse ne réside donc pas dans la poursuite aveugle de la vitesse, mais dans l'équilibre entre stabilité et performance.
Le choix de la base de données détermine l'âme du système.
La maîtrise des compétences liées à la commutation des moteurs de stockage ne constitue pas seulement une démonstration de compétences techniques, mais aussi une élévation de la pensée architecturale.
Si vous envisagez une conversion en masse, veuillez d'abord effectuer une évaluation complète des risques.
Exécutez l'environnement de test une fois pour simuler des scénarios d'entreprise réels.
Après avoir vérifié que tout est correct, exécutez la commande dans l'environnement de production.
Les bases de données ne sont pas des jouets ; elles sont au cœur des données d'entreprise.
Et c'est vous qui contrôlez le rythme de votre cœur.
J'espère que le blog de Chen Weiliang ( https://www.chenweiliang.com/ L'article « Comment convertir par lots des tables InnoDB en tables MyISAM dans les bases de données MySQL/MariaDB ? » partagé ici pourrait vous être utile.
Bienvenue à partager le lien de cet article :https://www.chenweiliang.com/cwl-34157.html
