Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Esempi di scrittura simultanea
I seguenti esempi di pseudo codice dimostrano come, quando vengono eseguite simultaneamente, le transazioni procedono o attendono.
COPYOperazioni simultanee nella stessa tabella
La transazione 1 copia le righe nella LISTING tabella:
begin; copy listing from ...; end;
La transazione 2 viene avviata contemporaneamente in una sessione separata e tenta di copiare più righe nella LISTING tabella. La transazione 2 deve attendere che la transazione 1 rilasci il blocco di scrittura sulla LISTING tabella, quindi può procedere.
begin; [waits] copy listing from ; end;
Lo stesso comportamento si verificherebbe se una o entrambe le transazioni contenessero un INSERT comando anziché un COPY comando.
DELETEOperazioni concorrenti dalla stessa tabella
La transazione 1 elimina le righe da una tabella:
begin; delete from listing where ...; end;
La transazione 2 inizia simultaneamente e prova a eliminare le righe dalla stessa tabella. Avrà esito positivo perché attende il completamento della transazione 1 prima di provare eliminare le righe.
begin [waits] delete from listing where ; end;
Lo stesso comportamento si verificherebbe se una o entrambe le transazioni contenessero un UPDATE comando per la stessa tabella anziché un DELETE comando.
Transazioni simultanee con una combinazione di operazioni di lettura e scrittura
In questo esempio, la transazione 1 elimina le righe dalla USERS tabella, ricarica la tabella, esegue una query COUNT (*) e quindiANALYZE, prima di eseguire il commit:
begin; delete one row from USERS table; copy ; select count(*) from users; analyze ; end;
Allo stesso tempo, inizia la transazione 2. Questa transazione tenta di copiare righe aggiuntive nella USERS tabella, analizzare la tabella e quindi eseguire la stessa query COUNT (*) della prima transazione:
begin; [waits] copy users from ...; select count(*) from users; analyze; end;
La seconda transazione avrà esito positivo perché deve attendere il completamento della prima. La sua COUNT query restituirà il conteggio in base al caricamento completato.