Maison >base de données >tutoriel mysql >Comment puis-je effectuer une opération ALTER TABLE dans MySQL sans verrouiller la table entière ?

Comment puis-je effectuer une opération ALTER TABLE dans MySQL sans verrouiller la table entière ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-21 03:17:17464parcourir

How Can I Perform an ALTER TABLE Operation in MySQL Without Locking the Entire Table?

ALTER TABLE sans verrouiller la table

Dans le domaine de la gestion de bases de données, les opérations ALTER TABLE dans MySQL infligent généralement une lecture au niveau de la table. verrouiller, empêchant les écritures simultanées tout en autorisant les lectures simultanées. Pour les tables volumineuses, cela peut entraîner des retards importants pour les instructions INSERT ou UPDATE.

Une solution potentielle, cependant, consiste à envisager une approche de « modification à chaud ». Bien que MySQL ne le prenne pas en charge nativement, d'autres systèmes SGBDR peuvent le proposer. Pour MySQL, cependant, il faut recourir à une solution de contournement manuelle :

  • Établissez une nouvelle table, reflétant la structure de la table d'origine, mais avec la colonne supplémentaire souhaitée.
  • Transférez progressivement les données dans morceaux de la table d'origine vers la nouvelle table, en prenant des mesures de précaution pour gérer toutes les opérations INSERT/UPDATE/DELETE simultanées sur la table d'origine (par exemple, en utilisant déclencheurs).
  • Une fois terminé, échangez les noms de table pour la table originale et la nouvelle table, de préférence au sein d'une transaction.
  • Reconfigurez toutes les procédures stockées qui s'appuient sur la table modifiée.

Il est important de noter que l'ajout d'une nouvelle colonne est intrinsèquement une opération de transformation qui a un impact sur l'ensemble de la structure de la table et sur l'organisation des données sur le disque. Ainsi, ce processus entraîne inévitablement une baisse des performances, analogue à une opération UPDATE globale. Cependant, cette solution de contournement élimine le besoin de verrouillage explicite des tables, permettant ainsi la mise à jour des données pendant le processus de modification.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn