Уровни изоляции транзакций
Уровни изоляции регулируют доступ к изменениям данных другими транзакциями, балансируя между целостностью и параллелизмом.
Уровни изоляции определяют взаимодействие транзакций. Стандарты ANSI: READ UNCOMMITTED (грязные чтения), READ COMMITTED (запрещает грязные), REPEATABLE READ (стабильные чтения) и SERIALIZABLE (последовательное выполнение). Каждый уровень имеет компромисс между производительностью и согласованностью данных. Системы MVCC используют снимки данных для неблокирующего чтения.
graph LR
Center["Уровни изоляции транзакций"]:::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;
🧒 Простыми словами
Generated ELI5 content
🤓 Expert Deep Dive
Generated expert content
❓ Частые вопросы
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.