? Dans un système de gestion de base de données relationnelle (SGBDR) comme une base de données SQL, «verrouille» sont utilisés pour empêcher les utilisateurs de modifier les mêmes données en même temps. Si un certain ensemble de données est verrouillée, il ne peut pas être manipulée par un utilisateur différent jusqu'à ce que l'utilisateur initial décolle la serrure. D'autres restrictions peuvent être appliquées , telles que la prévention d'autres utilisateurs de lire les données jusqu'à ce qu'il soit déverrouillé, et il ya des exceptions à cette règle de blocage général. Il ya six types de serrures en SQL. Les verrous partagés ( S)
Un verrou partagé contient des données pour un seul utilisateur à lire. Autres utilisateurs ne peuvent pas modifier les données qui est détenu en vertu d'un verrou partagé , mais ils sont capables de lire les données. Une fois que les données ont été lues, le verrou est généralement abandonnée , à quelques exceptions près comme si l'opération est exécutée en utilisant le READCOMMITTED ou READCOMMITTEDLOCK niveau d'isolation de verrouillage. Les verrous partagés sont utilisés dans les opérations en lecture seule uniquement et ne peuvent pas être utilisés pour modifier les données.
Verrous exclusifs (X)
Un verrou exclusif est utilisé pour prévenir une section de données qui est modifié par une opération d'être modifié par une autre transaction . Par défaut, les données sous un verrou exclusif ne peuvent pas être lus par quelqu'un d'autre que le casier, mais ce réglage peut être modifié à l'aide de l'indicateur NOLOCK ou le niveau d'isolement READUNCOMMITTED . Ce type de verrouillage serait utilisé avec des opérations telles que INSERT , UPDATE et DELETE .
Jour Locks ( U)
Un verrou de mise à jour se trouve au milieu terrain entre un verrou partagé et un verrou exclusif . Si certaines données a un verrou exclusif sur elle , aucun autre verrou peut être placé sur elle . Un verrou à jour peut être placé sur un verrou qui a déjà un verrou partagé sur elle , et quand vient le temps de faire des mises à jour des données , le verrouillage des modifications de mise à jour dans un verrou exclusif . Seul un verrou de mise à jour peut être placé sur une ressource à un moment donné .
Intent Locks ( I)
Un verrou d'intention permet à une transaction de notifier une autre transaction de son intention de verrouiller les données - d'où le nom de « verrou d'intention . " Ils travaillent empêchent les transactions de verrouillage encore les opérations de blocage d'une partie supérieure de la base de données. Par exemple, placer un verrou d'intention sur la table empêche une autre transaction de placer un verrou exclusif de la table , ce qui annulerait un verrou sur une partie inférieure comme une ligne ou une page.
Schéma Locks ( Sch) et mise à jour groupée Locks (BU )
verrous de schéma
sont utilisés avec une opération qui nécessite le schéma de la table est en marche. Il existe deux types - une stabilité verrouillage de schéma (Sch -S ) , ce qui ne bloque pas l'accès à des données d'objet , et un verrou de modification du schéma , ce qui ne bloque l'accès à des données d'objet . Un verrou de mise à jour en vrac , comme son nom l'indique , est utilisé par les opérations en vrac telles que les données en vrac -copie , et lorsque l'indicateur TABLOCK a été spécifié .