Изменения

Перейти к: навигация, поиск
Уровень изоляции Read uncommitted
Вследствие того, что идея изменять данные в базе основываясь на еще незакомиченных данных звучит совсем безумно, стандартом SQL прописано, что транзакции, работающие на уровне изоляции read uncommitted, могут только читать данные, но не изменять их.
Стоит отметить, что использование таких транзакций является разумным в том случае, когда мы хотим посчитать некоторую статистику (например количество студентов в институте или сумму всех денег в банке). В таком случае мы будем довольно часто выполнять запросы на подсчет количества и нам не очень важно, совсем ли точно мы получаем число. Давайте разберем пример со студентами более подробно. Пусть у нас было два момента времени t1 - начало транзакции, t2 - конец транзакции. Пусть количество студентов в эти моменты времени не совпадало. В таком случае, мы понимаем, что за этот промежуток времени было совершено какое-то количество операций с интересующими нас данными, и мы, на самом деле, не можем достоверно назвать ответ о количестве студентов в этот временной интервал. Таким образом, для таких статистических запросов нам важно понимать, как в целом меняется количество студентов во времени {{---}} растет оно или падает, но нам не очень важно однозначно знать, сколько студентов было в институте сейчас с точностью до одного. В таких вопросах важнее, чтобы они не тормозили базу, а данные, которые мы получаем в каждый момент могут быть не до конца точными.
Пример создания такой транзакции:
create transaction isolation read uncommitted;
-- your query goes here
commit;
 
==См. также==
* [[Транзакции. Параллельное исполнение. Блокировки]]
* [[Транзакции. Восстановление. Классический алгоритм]]
10
правок

Навигация