Quando viene eseguito un DML regolare (UPDATE/DELETE/INSERT, MERGE e SELECT ... FOR UPDATE) oracle ottiene 2 blocchi. Blocco livello riga (TX) - Questo ottiene un blocco sulla particolare riga che viene toccata e qualsiasi altra transazione che tenta di modificare la stessa riga viene bloccata, fino a quando quella che lo possiede già finisce. Table Level Lock (TM) - Quando si ottiene il blocco riga (TX), viene anche ottenuto un blocco Tabella aggiuntivo per impedire che eventuali operazioni DDL si verifichino mentre è in corso un DML.
Ciò che importa è in quale modalità si ottiene il blocco tabella. Un blocco di condivisione riga (RS), chiamato anche blocco tabella sottoschede (SS), indica che la transazione che contiene il blocco sul tavolo ha le righe bloccate nella tabella e intende aggiornarle. Un blocco SS è la modalità meno restrittiva del blocco tabella, offrendo il massimo grado di concorrenza per una tabella.
Un blocco di riga esclusiva (RX), detto anche blocco di tabella subexclusive (SX), indica che la transazione che contiene il blocco ha aggiornato le righe della tabella o emesso SELECT ... FOR UPDATE. Un blocco SX consente ad altre transazioni di interrogare, inserire, aggiornare, eliminare o bloccare le righe contemporaneamente nella stessa tabella. Pertanto, i blocchi SX consentono a più transazioni di ottenere blocchi simultanei SX e SS per la stessa tabella.
Un blocco tabella condivisa (S) trattenuto da una transazione consente ad altre transazioni di eseguire query sulla tabella (senza utilizzare SELECT ... FOR UPDATE) ma consente gli aggiornamenti solo se una singola transazione contiene il blocco della tabella condivisa. Più transazioni possono contenere contemporaneamente un blocco di tabelle condivise, quindi non tenere questo blocco non è sufficiente per garantire che una transazione possa modificare la tabella.
Un blocco tabella esclusivo della riga di condivisione (SRX), denominato anche blocco tabella secondario-secondario (SSX), è più restrittivo di un blocco tabella condivisa. Solo una transazione alla volta può acquisire un blocco SSX su una tabella specifica. Un blocco SSX detenuto da una transazione consente ad altre transazioni di interrogare la tabella (eccetto per SELECT ... FOR UPDATE) ma non aggiornare la tabella.
Un blocco tabella esclusivo (X) è la modalità più restrittiva del blocco tabella, consentendo alla transazione che detiene il blocco accesso in scrittura esclusivo alla tabella. Solo una transazione può ottenere un blocco X per una tabella.
fonte
2014-04-28 09:12:21
i collegamenti non sono attivi! –
@Gab 是 好人 - ringrazia per avermelo fatto sapere. Li ho sostituiti con collegamenti all'ultima versione dei documenti. – APC