ALTER TABLE sans verrouiller la table
Lors de l'exécution d'une opération ALTER TABLE dans MySQL, la table est verrouillée en lecture pendant la durée du instruction, bloquant potentiellement les écritures simultanées. Si cette opération est effectuée sur une table volumineuse, les instructions INSERT ou UPDATE pourraient être interrompues pendant une période prolongée. Existe-t-il une solution pour effectuer une « modification à chaud » sans affecter les mises à jour en cours ?
La seule alternative : la manipulation manuelle
Bien que MySQL ne prenne pas en charge directement les modifications à chaud, un Il existe une alternative : répliquer manuellement les fonctionnalités que de nombreux systèmes SGBDR exécutent automatiquement. Cela implique :
Technique Considérations :
L'ajout d'un nouveau champ modifie efficacement chaque ligne du tableau. Ce processus nécessite une restructuration physique des données sur le disque, semblable à une opération de MISE À JOUR étendue avec un impact plus important. Le verrouillage au niveau du champ serait plus complexe que le verrouillage au niveau des lignes, et les verrous à l'échelle de la table ne sont pas toujours souhaitables.
Autres solutions SGBDR :
Bien que MySQL ne le soit pas prennent en charge les modifications à chaud de manière native, d'autres systèmes SGBDR peuvent offrir une telle fonctionnalité. Par exemple, PostgreSQL autorise les tables partitionnées, qui peuvent être modifiées individuellement sans affecter les autres partitions.
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!