Qual è Locks in SQL?

February 16

Qual è Locks in SQL?


In un sistema di gestione di database relazionale (RDBMS) ad esempio un database basato su SQL, "Blocchi" vengono utilizzati per impedire agli utenti di modificare gli stessi dati allo stesso tempo. Se un certo insieme di dati viene bloccato, non può essere manipolato da un utente diverso finché l'utente iniziale toglie la serratura. Altre restrizioni possono essere applicate, come impedire ad altri utenti di leggere i dati fino a quando non viene sbloccato, e non ci sono eccezioni a questa regola di blocco generale. Ci sono sei tipi di serrature in SQL.

Blocchi condivisi (S)

Un blocco condiviso contiene i dati per un singolo utente di leggere. Altri utenti non possono modificare i dati che si svolge sotto un blocco condiviso, ma sono in grado di leggere i dati. Una volta che i dati sono stati letti, il blocco viene generalmente ceduto, con alcune eccezioni, come se l'operazione viene eseguita utilizzando il livello di isolamento READCOMMITTED o READCOMMITTEDLOCK bloccaggio. blocchi condivisi sono utilizzati solo operazioni di sola lettura, e non possono essere utilizzati per modificare i dati.

Blocchi esclusivi (X)

Un blocco esclusivo è utilizzato per prevenire una sezione di dati che vengono modificati da una transazione venga modificato da un'altra transazione. Per impostazione predefinita, i dati sotto un blocco esclusivo non possono essere letti da chiunque non sia l'armadio, ma questa impostazione può essere modificata utilizzando l'hint NOLOCK o un livello di isolamento READUNCOMMITTED. Questo tipo di blocco potrebbe essere utilizzato con operazioni come INSERT, UPDATE e DELETE.

Aggiornamento Locks (U)

Un blocco di aggiornamento si trova nel mezzo tra un blocco condiviso e un blocco esclusivo. Se alcuni dati ha un blocco esclusivo su di esso, nessun altro blocco può essere posizionato su di esso. Un blocco di aggiornamento può essere posizionato su una serratura che ha già un blocco condiviso su di esso; e quando arriva il momento di fare gli aggiornamenti dei dati, i cambiamenti blocco di aggiornamento in un blocco esclusivo. Solo un blocco di aggiornamento può essere posizionato su una risorsa in un dato momento.

Blocchi preventivi (I)

Un blocco preventivo consente una transazione di notificare un'altra transazione della sua intenzione di bloccare i dati - da qui il nome "blocco preventivo". Lavorano evitando operazioni di bloccarsi altre operazioni da bloccare una parte superiore del database. Ad esempio, ponendo un blocco preventivo sul tavolo impedisce un'altra operazione di posizionare un blocco esclusivo tabella, che annulla un blocco su una parte inferiore come una riga o una pagina.

Schema Locks (SCH) e aggiornare Serrature prime (BU)

serrature schema sono utilizzati con un'operazione che richiede lo schema della tabella è in esecuzione. Ci sono due tipi - un blocco di stabilità dello schema (Sch-S), che non blocca l'accesso ai dati di un oggetto, e un blocco di modifica dello schema, che fa bloccare l'accesso ai dati degli oggetti. Un blocco di aggiornamento di massa, come dice il nome, viene utilizzato da operazioni di massa come i dati bulk-copiatura, e quando è stato specificato l'hint TABLOCK.