Разница между уровнями изоляции транзакций в СУБД заключается в степени защиты от несогласованности данных, возникающих при параллельном выполнении транзакций. 3
Стандарт SQL-92 определяет шкалу из четырёх уровней изоляции: 3
- Read uncommitted (чтение незафиксированных данных). 3 Низший уровень изоляции. 3 Если несколько параллельных транзакций пытаются изменять одну и ту же строку таблицы, то в окончательном варианте строка будет иметь значение, определённое всем набором успешно выполненных транзакций. 3 При этом возможно считывание не только логически несогласованных данных, но и данных, изменения которых ещё не зафиксированы. 3
- Read committed (чтение фиксированных данных). 3 На этом уровне обеспечивается защита от чернового, «грязного» чтения, тем не менее, в процессе работы одной транзакции другая может быть успешно завершена и сделанные ею изменения зафиксированы. 3
- Repeatable read (повторяющееся чтение). 3 При данном уровне изоляции выполняется гарантия, что при повторном чтении одного и того же поля записи в базе будут получаться одни и те же значения в ходе транзакции. 4 Исключение составляют те изменения, которые пользователь сам внёс в базу. 4
- Serializable (упорядочиваемость). 34 При этом уровне изоляции гарантируется полная упорядочиваемость всех совершаемых транзакций, вследствие чего не возникнет ни одна из аномалий. 4
Первый уровень является самым слабым, последний — самым сильным, каждый последующий включает в себя все предыдущие. 3