Un bref de verrouillage
A partir de la granularité de verrouillage peut être divisé en deux catégories
Verrouillage de ligne : grande tête, verrouillage lent, il y aura une impasse, une petite force de verrouillage, une faible probabilité de conflits de verrouillage, lecture exécutées simultanément.
verrou de table : Petite tête, verrouillage rapide, ne sera pas une impasse, une grande force de verrouillage, forte probabilité de conflits de verrouillage, le faible degré de concurrence.
Au niveau de la rangée de
la serrure au niveau de la ligne est un verrou Mysql meilleur verrouillage de granularité, la serrure que pour la représentation des lignes de l'opération en cours. conflit de verrouillage de ligne peut réduire considérablement les opérations de base de données. La taille minimale de la serrure, mais la serrure de la plus grande tête. verrouillage de ligne est divisée en verrous partagés et des verrous exclusifs.
Caractéristiques
grosses dépenses, verrouillé lent, il y aura une impasse, le verrouillage de la plus petite taille, plus faible probabilité de conflits de verrouillage, ont le plus haut degré de concurrence.
Tableau
table niveau granularité de verrouillage est l' une des plus grande écluse du représente MySQL, verrouillé la serrure entière de table sur l'opération en cours, il est simple, une faible consommation de ressources, soutenue par la plupart des moteurs de MySQL. MyISAM et InnoDB les plus couramment utilisés supportent le verrouillage de table. Le verrouillage de table de niveau table dans un verrou en lecture partagée (verrou partagé) et une table de verrouillage d'écriture exclusif (verrou exclusif).
Il dispose d'
une petite surcharge, verrouillage rapide, pas une impasse, verrouillez grande taille, la probabilité de conflits de verrouillage question du plus haut et le plus bas degré de concurrence.
Rangée de verrouillage et de l'impasse:
Lorsque les deux opérations en même temps, un indice de clé primaire verrouillée, en attendant que les autres indices. Un autre indice de clé verrouillé non primaire, en attendant l'indice de clé primaire. deadlock Un tel produit.
Les verrous partagés et verrous exclusifs:
serrures Partager (Partager Lock)
des verrous partagés, également connu sous le nom de verrouillage et opération de verrouillage lecture créés. Les autres utilisateurs peuvent simultanément lire les données, mais aucune donnée de transaction ne peuvent pas être modifiés (pour obtenir un verrou exclusif sur les données), jusqu'à ce que ont été libérés tous les verrous partagés.
Si les données de transaction T à A plus verrou partagé, d' autres transactions ne peut partager plus de verrouillage A ne peut pas ajouter un verrou exclusif. Certes une opération de verrouillage partagée ne peut lire les données, les données ne peuvent être modifiées.
用法 SELECT ... LOCK IN SHARE MODE;
Augmenter après la requête LOCK IN SHARE MODE, requête Mysql se traduira par chaque ligne des verrous partagés, lorsque aucun autre jeu de résultats de requête de ligne de fil lors de l'utilisation verrou exclusif, verrou partagé peut être appliquée avec succès, sinon il sera bloqué . D'autres threads peuvent également être lues à l'aide d'une table de verrou partagé, et lire ces fils est la même version des données.
verrou exclusif (eXclusive Lock)
verrou exclusif, également connu comme un verrou d'écriture, si les données de transaction T à A plus verrou exclusif après, d' autres transactions ne peut pas être d'un plus tout type de blocus. Les deux ont approuvé les données de ligne transaction de lecture de ses serrures, mais modifient également les données.
SELECT ... FOR UPDATE;
Augmenter après la requête FOR UPDATE, Mysql va Regrouper les résultats dans chaque ligne, plus un verrou exclusif, quand il n'y a pas de ligne d'autres fils de l'ensemble de résultat de la requête est utilisée exclusivement lorsque le verrou peut être appliquée avec succès pour un verrou exclusif, sinon il sera bloqué.
Selon l'utilisation, il peut être divisé en deux catégories:
Optimiste verrouillage : verrouillage Optimiste est une sorte de pensée, comme son nom l' indique: que la situation ne sera pas mise à jour des données verrouillé, si nous trouvons quelque chose de mal, il ne met pas à jour (rollback). Souvent ajouter un champ de version dans la base de données pour obtenir.
verrouillage Pessimiste : l' utilisation de verrouillage pessimiste est le verrou de ligne sur la base de données que le conflit d'accès concurrentiel de base de données se produit, les données directement mis en place des verrous, d' autres opérations ne peuvent pas être modifiés avant la soumission de la transaction en cours