Niveaux d'Isolation des Transactions

Ils régulent la façon dont les transactions observent les données modifiées par d'autres, équilibrant intégrité et concurrence.

Les niveaux d'isolation régissent l'interaction des transactions concurrentes. Les quatre niveaux ANSI sont : READ UNCOMMITTED (lectures sales), READ COMMITTED (évite les sales), REPEATABLE READ (données stables) et SERIALIZABLE (exécution sérielle). Chacun fait un compromis entre concurrence et cohérence. Les systèmes MVCC utilisent des instantanés pour des lectures non bloquantes.

        graph LR
  Center["Niveaux d'Isolation des Transactions"]:::main
  Rel_transaction["transaction"]:::related -.-> Center
  click Rel_transaction "/terms/transaction"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 Explique-moi comme si j'avais 5 ans

Generated ELI5 content

🤓 Expert Deep Dive

Generated expert content

❓ Questions fréquentes

What is a dirty read?

Reading data that has been modified but not yet committed by another transaction.

What is a non-repeatable read?

Reading the same data twice within a single transaction yields different results because another transaction committed changes in between.

What is a phantom read?

A new row matching a query appears in subsequent reads within the same transaction, due to inserts by other transactions.

Which isolation level prevents dirty reads?

READ COMMITTED or SERIALIZABLE (and REPEATABLE READ) prevent dirty reads.

How should I choose an isolation level?

Base the choice on the required balance between correctness guarantees and concurrency, adjusting per operation, and consider MVCC or locking behavior of your DBMS.

📚 Sources