Livelli di isolamento

Transazioni e gestione degli errori in PostgreSQL

Jason Myers

Instructor

Concorrenza

  • Gestire il coordinamento di più operazioni in parallelo.
  • In un database ha problemi specifici.
  • Usa regole dette livelli di isolamento per ragionare sugli esiti.
Transazioni e gestione degli errori in PostgreSQL

Dirty Reads

Dirty Read

Transazioni e gestione degli errori in PostgreSQL

Nonrepeatable Read

Nonrepeatable Read

Transazioni e gestione degli errori in PostgreSQL

Phantom Read

Phantom Read

Transazioni e gestione degli errori in PostgreSQL

Anomalia di serializzazione

Serialization Anomaly

Transazioni e gestione degli errori in PostgreSQL

Livelli di isolamento

Livello di isolamento Dirty Read Nonrepeatable Read Phantom Read Anomalia di serializzazione
Read Uncommitted Protetto (PostgreSQL) vulnerabile vulnerabile vulnerabile
Read Committed Protetto vulnerabile vulnerabile vulnerabile
Repeatable Read Protetto Protetto Protetto (PostgreSQL) vulnerabile
Serializable Protetto Protetto Protetto Protetto
Transazioni e gestione degli errori in PostgreSQL

Effetti dei livelli di isolamento

START TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; 
SELECT COUNT(*) FROM cookies WHERE name = 'lemon drop';

-- Cookie 6 has been added in an external transaction.

SELECT COUNT(*) FROM cookies WHERE name = 'lemon drop';
COMMIT;

Risultati

  • Primo SELECT: 5
  • Secondo SELECT: 6
Transazioni e gestione degli errori in PostgreSQL

Effetti dei livelli di isolamento

START TRANSACTION ISOLATION LEVEL SERIALIZABLE; 
SELECT COUNT(*) FROM cookies WHERE name = 'lemon drop';

-- Cookie 6 has been added in an external transaction.

SELECT COUNT(*) FROM cookies WHERE name = 'lemon drop';
COMMIT;

Risultati

  • Primo SELECT: 5
  • Secondo SELECT: 5
Transazioni e gestione degli errori in PostgreSQL

Passons à la pratique !

Transazioni e gestione degli errori in PostgreSQL

Preparing Video For Download...