Comment configurer les bases de données MySQL/MariaDB pour convertir par lots les tables InnoDB en tables MyISAM ?

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

Comment configurer les bases de données MySQL/MariaDB pour convertir par lots les tables InnoDB en tables MyISAM ?

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

  1. Données de sauvegarde Avant de procéder à la conversion, assurez-vous d'exporter. .sql Les fichiers sont stockés de manière à pouvoir être restaurés à tout moment.

  2. Structure de la liste de contrôle Utilisez la commande suivante pour vérifier si une clé étrangère existe :

    SHOW CREATE TABLE `你的表名`;
    
  3. Effectuer la conversion 使用 ALTER TABLE Il est également possible d'utiliser des scripts par lots pour effectuer la conversion.

  4. 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.

发表 评论

Votre adresse email ne sera pas publiée. 项 已 用 * 标注

Répertoire d'articles
Remonter en haut