Maison >base de données >tutoriel mysql >Introduction au contenu connexe du verrou Mysql-InnoDB

Introduction au contenu connexe du verrou Mysql-InnoDB

不言
不言avant
2019-02-21 12:00:492169parcourir

Le contenu de cet article est une introduction au contenu pertinent du verrou Mysql-InnoDB. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Type de verrouillage

Verrouillage au niveau de la ligne

Les modes de verrouillage sont uniquement LOCK_S et LOCK_X, d'autres FLAG sont utilisés pour la description du verrouillage, comme mentionné ci-dessus Il existe quatre descriptions : LOCK_GAP, LOCK_REC_NOT_GAP et LOCK_ORDINARY, LOCK_INSERT_INTENTION. (Recommandations associées : Tutoriel MySQL)

LOCK_REC_NOT_GAP

LOCK_GAP

LOCK_ORDINARY (Next-Key Lock)

LOCK_INSERT_INTENTION

static const byte lock_compatibility_matrix[5][5] = {
/** IS IX S X AI /
/ IS / { TRUE, TRUE, TRUE, FALSE, TRUE},
/ IX / { TRUE, TRUE, FALSE, FALSE, TRUE},
/ S / { TRUE, FALSE, TRUE, FALSE, FALSE},
/ X / { FALSE, FALSE, FALSE, FALSE, FALSE},
/ AI / { TRUE, TRUE, FALSE, FALSE, FALSE}
};

Pour le type GAP (l'objet verrou est établi sur supremum ou le type de verrou demandé est LOCK_GAP) et l'application n'est pas un verrou d'intention d'insertion, il n'est pas nécessaire d'attendre un verrou. différentes sessions peuvent s'appliquer à différents types pour le même verrou GAP, et les verrous GAP eux-mêmes sont conçus pour ne pas entrer en conflit les uns avec les autres ;
Les objets de verrouillage de type LOCK_ORDINARY ou LOCK_REC_NOT_GAP n'ont pas besoin d'attendre les verrous de type LOCK_GAP ; les verrous de type n'ont pas besoin d'attendre les objets de verrouillage de type LOCK_REC_NOT_GAP ;
Toute demande de verrouillage n'a pas besoin d'attendre que le verrou d'intention soit inséré.

Verrous au niveau de la table

Les verrous au niveau de la table d'InnoDB incluent cinq modes de verrouillage : LOCK_IS, LOCK_IX, LOCK_X, LOCK_S et LOCK_AUTO_INC, compatibilité entre les verrous Suivez la définition dans le tableau lock_compatibility_matrix.

Le but des verrous au niveau de la table InnoDB est d'éviter les problèmes de concurrence entre DDL et DML. Cependant, après l'introduction des verrous MDL dans la version 5.5, la signification des verrous au niveau des tables dans la couche InnoDB n'est pas si grande. Le verrou MDL lui-même a couvert la plupart de ses fonctions.

Les verrous d'intention sont au niveau de la table. Les verrous IS et IX n'entrent pas en conflit les uns avec les autres, mais entrent en conflit avec les verrous S/X au niveau de la table.

Lorsque vous ajoutez un verrou S ou X à un enregistrement, vous devez vous assurer qu'il dispose d'un verrou d'intention correspondant ou d'un verrou au niveau de la table avec une force de verrouillage plus élevée sur la même table.



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