Maison >base de données >tutoriel mysql >Comment utiliser les tables de verrouillage dans MySQL

Comment utiliser les tables de verrouillage dans MySQL

PHPz
PHPzoriginal
2023-04-20 10:06:424513parcourir

MySQL est un système de gestion de base de données open source populaire qui prend en charge plusieurs mécanismes de verrouillage pour garantir la simultanéité et la cohérence. Le verrouillage de table fait référence au verrouillage d'une table pour empêcher d'autres utilisateurs de modifier les données de la table en même temps. Dans certains cas, le verrouillage des tables est inévitable, comme dans le cas d'une migration de données à grande échelle ou de modifications de la structure des tables.

Ce qui suit est une introduction détaillée à la façon d'utiliser les tables de verrouillage dans MySQL.

1. Verrouillage au niveau de la table

Le verrouillage au niveau de la table de MySQL est le mécanisme de verrouillage le plus simple. Il verrouille l'intégralité du tableau pour empêcher d'autres utilisateurs de modifier le tableau en même temps. Les verrous au niveau de la table incluent les verrous de lecture et les verrous d'écriture, qui sont utilisés respectivement pour les opérations de lecture et de modification.

Les verrous au niveau de la table peuvent être verrouillés via la syntaxe suivante :

LOCK TABLES table_name [AS alias] lock_type;

Parmi eux, table_name est le nom de la table à verrouiller, [AS alias] est l'alias de la table et lock_type peut être READ ou WRITE, indiquant la lecture. verrouiller ou verrouiller en écriture.

Par exemple, pour ajouter un verrou en écriture à l'utilisateur de la table, vous pouvez utiliser la commande suivante :

LOCK TABLES user WRITE;

2. Verrouillage au niveau de la ligne

Le verrouillage au niveau de la ligne est un mécanisme de verrouillage de niveau supérieur dans MySQL. Contrairement aux verrous au niveau de la table, il verrouille uniquement une ou plusieurs lignes spécifiques. Les verrous au niveau des lignes peuvent lire/écrire des lignes individuelles de données simultanément, évitant ainsi l'inefficacité du verrouillage de la table entière.

Dans MySQL, les verrous au niveau des lignes sont divisés en verrous partagés et verrous exclusifs, qui sont utilisés respectivement pour les opérations de lecture et d'écriture. Si un verrou partagé est ajouté à une ligne de données, les autres utilisateurs peuvent lire cette ligne de données, mais ne peuvent pas écrire ; si un verrou exclusif est ajouté à une ligne de données, les autres utilisateurs ne peuvent ni lire ni écrire cette ligne de données.

Les verrous au niveau des lignes peuvent être implémentés en utilisant la syntaxe suivante :

SELECT ... FROM table_name WHERE ... FOR UPDATE;

Parmi eux, l'instruction SELECT est l'instruction de requête à exécuter, table_name est le nom de la table, la clause WHERE est la condition de requête et FOR UPDATE signifie ajoutez un verrou exclusif.

Par exemple, pour ajouter un verrou exclusif à une ligne avec l'identifiant 1 dans la table utilisateur, vous pouvez écrire comme ceci :

SELECT * FROM user WHERE id=1 FOR UPDATE;

3 Deadlock

Deadlock signifie que deux processus ou plus détiennent certaines ressources en même temps et. s'excluent mutuellement.Le phénomène d'attente que l'autre partie libère des ressources. Dans MySQL, si un blocage se produit, vous devez utiliser l'instruction suivante pour déverrouiller :

KILL CONNECTION connection_id;

Parmi elles, connection_id est l'ID de la connexion verrouillée. Vous pouvez utiliser la commande suivante pour interroger la situation de verrouillage :

SHOW ENGINE INNODB STATUS;

Ce qui précède. est la méthode de verrouillage d'une table dans MySQL, il convient de noter que vous devez être prudent lorsque vous utilisez la table de verrouillage pour éviter les blocages. Dans le même temps, lorsque la migration de données à grande échelle ou la structure des tables change, l'impact du verrouillage doit également être pris en compte pour éviter d'affecter les performances du système et l'expérience utilisateur.

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