Maison > base de données > tutoriel mysql > Les opérations MySQL ALTER TABLE peuvent-elles être effectuées sans verrouiller la table ?

Les opérations MySQL ALTER TABLE peuvent-elles être effectuées sans verrouiller la table ?

Barbara Streisand
Libérer: 2024-12-24 17:14:15
original
752 Les gens l'ont consulté

Can MySQL ALTER TABLE Operations Be Performed Without Locking the Table?

Les opérations de modification de table peuvent-elles être effectuées sans verrouiller la table ?

Les instructions ALTER TABLE dans MySQL imposent un verrou en lecture sur la table, empêchant toute écriture simultanée. Cela peut être un inconvénient important pour les grandes tables, car cela peut entraîner le blocage des instructions INSERT ou UPDATE pendant des périodes prolongées. Comprendre s'il existe une solution pour les « modifications à chaud », permettant les mises à jour lors de l'ajout d'une colonne, est crucial.

Approche manuelle

En l'absence de support natif pour modifications à chaud, la seule alternative est de répliquer manuellement le processus utilisé par de nombreux systèmes SGBDR. Cela implique :

  1. Créer une nouvelle table.
  2. Copier les données de l'ancienne table en morceaux, gérer les conflits potentiels causés par les opérations INSERT/UPDATE/DELETE en cours sur la table source.
  3. Renommer l'ancienne table, puis renommer la nouvelle table (idéalement dans un transaction).
  4. Recompilation des procédures stockées et d'autres objets dépendants pour maintenir la validité du plan d'exécution.

Justification de l'absence de modifications à chaud

Cela vaut la peine de considérer les raisons derrière le manque de support natif par MySQL pour les modifications à chaud :

  • Ajouter un champ efficacement équivaut à modifier un champ dans chaque ligne, ce qui est une opération importante.
  • Les verrous de champ sont plus complexes à mettre en œuvre que les verrous de ligne.
  • La mise à jour de la structure physique du disque nécessite le déplacement de chaque enregistrement.
  • Ce processus ressemble à une MISE À JOUR d'une table entière, ce qui le rend fondamentalement plus efficace qu'une mise à jour régulière.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal