Maison  >  Article  >  base de données  >  [MySQL] Transactions implémentées par le contrôle de concurrence multiversion MVCC

[MySQL] Transactions implémentées par le contrôle de concurrence multiversion MVCC

little bottle
little bottleavant
2019-04-16 11:33:133177parcourir

Contrôle de concurrence multi-versions Contrôle de concurrence multi-versions, MVCC est une méthode de contrôle de concurrence. Il est généralement utilisé dans les systèmes de gestion de bases de données pour obtenir un accès simultané à la base de données. Il implémente la mémoire transactionnelle dans les langages de programmation.

1. Il n'existe pas de norme de mise en œuvre unifiée pour réaliser des opérations de lecture non bloquantes, et les opérations d'écriture ne verrouillent que les lignes nécessaires
Obtenu en enregistrant un instantané des données à un moment donné3. Les exemples typiques incluent le contrôle de concurrence optimiste et le contrôle de concurrence pessimiste
4. Le mvcc d'Innodb a un numéro de version incrémentiel pour chaque transaction. En ajoutant deux colonnes de champs masqués après chaque ligne d'enregistrements, les deux colonnes sont respectivement Créer un numéro de version. et supprimez le numéro de version, stockez le numéro de version de la transaction qui l'exploite
5 Ajouter, supprimer, modifier et archiver la transaction consiste à utiliser le champ du numéro de version à deux colonnes

insérer enregistre l'actuel. valeur pour chaque ligne nouvellement insérée Numéro de version de la transaction dans le champ du numéro de version de création de ligne

mise à jour Insérez une nouvelle ligne pour enregistrer le numéro de version de création de transaction actuel, modifiez le numéro de version de suppression des données de ligne d'origine par le numéro de version de cette transaction
supprimer Modifier le champ du numéro de version de suppression de la ligne Pour le numéro de version de cette transaction
sélectionner la requête pour créer des données dont le champ du numéro de version est inférieur ou égal à la version actuelle de la transaction. Assurez-vous que l'enregistrement existe avant cela. transaction ou est nouvellement inséré dans cette transaction
et requête pour supprimer le champ du numéro de version qui n'existe pas. Ou des données plus grandes que la version actuelle garantissent que l'enregistrement n'a pas été supprimé avant cette transaction

6. Une telle conception ne nécessite pas de verrouillage et offre de bonnes performances de lecture et de fonctionnement, mais nécessite un espace de stockage supplémentaire

7 .mvcc ne fonctionne que sous les deux isolations REPEATABLE READ et READ UNCOMMITED lit toujours les dernières données SERIALIZABLE ; toutes les lignes se lisent

[Cours recommandé :

Tutoriel vidéo MySQL

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer