Найти тему
Данил Михайлов

Уровни изолированности транзакций в СУБД

Многим эта тема покажется не интересной, но эта надо знать так, как в большенстве случаях про них спрашивают на собеседованиях.

Давайте разберемся с чем их едят и для чего используются.

Как говорит нам википедия УИТ — это условное значение, определяющее, в какой мере в результате выполнения логически параллельных транзакций в СУБД допускается получение несогласованных данных. Шкала уровней изолированности транзакций содержит ряд значений, проранжированных от наинизшего до наивысшего; более высокий уровень изолированности соответствует лучшей согласованности данных, но его использование может снижать количество физически параллельно выполняемых транзакций.

У нас есть 4 уровня транзакций.

1) Read uncommitted

Чтение того, что есть на данный момент. Если транзакция не записала данные, то эти данные мы можем прочитать.

2) Read committed

Этот уровень обеспечивает защиту от плохого чтение или как его любят называть «грязное чтение», т.е для этого уровня параллельно исполняющиеся транзакции видят только зафиксированные изменения из других транзакций.

3) Repeatable read

Это уровень, при котором читающая транзакция не видит изменения, которые были ею раннее прочитаны, но если выполнить повторный запрос, то эти изменения будут зафиксированы.

4) Serializable

Этот уровень позволяет изолировать все наши транзакции друг от друга, каждая выполняется, как будто параллельных тразакций нет.

Прочитав чем же отличаются эти 4 УИТ мы можем понят, что чем выше наш уровень изоляции (1-4), тем меньше параллельность выполняемых транзакций

Самое основное я вам рассказал, если вам понравилась эта тема и вы хотите углубится в это, то можете прочитать статью на вики. Этой статьи будет достаточно для понимания.