Maison > base de données > tutoriel mysql > le corps du texte

Classification et application : comprendre les types et les utilisations des verrous MySQL

WBOY
Libérer: 2023-12-21 08:52:44
original
1078 Les gens l'ont consulté

MySQL 锁的分类与应用

Classification et application des verrous MySQL

Dans le cas d'accès simultanés à la base de données, afin d'assurer la cohérence et l'intégrité des données, MySQL fournit un mécanisme de verrouillage. Les verrous peuvent protéger les ressources clés et contrôler l'accès et la modification des données par des transactions simultanées. Cet article présentera la classification et l'application des verrous MySQL et fournira des exemples de code spécifiques.

1. Classification des verrous MySQL

Les verrous MySQL peuvent être divisés en verrous partagés (Shared Lock) et en verrous exclusifs (Exclusive Lock). Les verrous partagés et les verrous exclusifs s'excluent mutuellement et ne peuvent pas exister simultanément sur la même ressource. Les verrous partagés sont utilisés pour les opérations de lecture, permettant à plusieurs transactions d'acquérir des verrous partagés sur la même ressource en même temps ; les verrous exclusifs sont utilisés pour les opérations d'écriture, permettant à une seule transaction d'acquérir un verrou exclusif sur une ressource.

Il existe trois verrous couramment utilisés dans MySQL :

  1. Verrous au niveau de la table : les verrous au niveau de la table verrouillent la table entière et peuvent être divisés en verrous de lecture et verrous d'écriture. Les verrous de lecture sont des verrous partagés et plusieurs transactions peuvent acquérir des verrous de lecture en même temps ; les verrous d'écriture sont des verrous exclusifs et une seule transaction peut acquérir des verrous d'écriture.
  2. Verrous au niveau de la ligne : les verrous au niveau de la ligne verrouillent les lignes de la table. Seules les transactions qui opèrent sur une certaine ligne obtiendront le verrou sur cette ligne. Les verrous au niveau des lignes peuvent contrôler avec précision l'accès aux données par des transactions simultanées, mais la granularité des verrous au niveau des lignes est plus petite, ce qui augmente le nombre et la surcharge des verrous.
  3. Verrous au niveau de la page : les verrous au niveau de la page verrouillent les pages du tableau. La taille de chaque page est de 16 Ko. Les verrous au niveau de la page se situent entre les verrous au niveau de la table et les verrous au niveau des lignes, ce qui peut réduire le nombre et le coût des verrous. Cependant, le contrôle de granularité des verrous au niveau de la page est moins bon que celui des verrous au niveau des lignes, ce qui peut entraîner des conflits de verrouillage.

2. Application de verrouillage MySQL

  1. Exemple d'application de verrouillage au niveau de la table :
-- 事务1
START TRANSACTION;
LOCK TABLES table_name WRITE;
-- 执行写操作
COMMIT;

-- 事务2
START TRANSACTION;
LOCK TABLES table_name READ;
-- 执行读操作
COMMIT;
Copier après la connexion
  1. Exemple d'application de verrouillage au niveau de la ligne :
-- 事务1
START TRANSACTION;
SELECT * FROM table_name WHERE id = 1 LOCK IN SHARE MODE;
-- 读取数据
COMMIT;

-- 事务2
START TRANSACTION;
SELECT * FROM table_name WHERE id = 1 FOR UPDATE;
-- 更新数据
COMMIT;
Copier après la connexion
  1. Exemple d'application de verrouillage au niveau de la page :
-- 事务1
START TRANSACTION;
SELECT * FROM table_name WHERE id BETWEEN 1 AND 100 LOCK IN SHARE MODE;
-- 读取数据
COMMIT;

-- 事务2
START TRANSACTION;
SELECT * FROM table_name WHERE id BETWEEN 1 AND 100 FOR UPDATE;
-- 更新数据
COMMIT;
Copier après la connexion

3.

MySQL La classification et l'application des verrous sont une partie importante du contrôle de la concurrence des bases de données. Choisir un mécanisme de verrouillage approprié en fonction des besoins réels et utiliser les verrous de manière rationnelle peut améliorer les performances de concurrence et la cohérence des données de la base de données. Dans les applications réelles, les verrous doivent être sélectionnés et utilisés selon des scénarios spécifiques pour éviter les blocages et les problèmes de performances.

J'espère que l'introduction de cet article pourra aider les lecteurs à comprendre la classification et l'application des verrous MySQL, et à mieux comprendre l'utilisation des verrous avec des exemples de code spécifiques.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal