SQL: Гарантированно ли грязное чтение, чтобы увидеть самые последние данные? - PullRequest
0 голосов
/ 24 января 2019

Если я открою транзакцию на READ UNCOMMITTED уровне изоляции, гарантированно ли я вижу последние данные в каждой таблице / строке ?Т.е. как только какая-то другая транзакция обновит строку, моя транзакция увидит это изменение?(это было бы аналогично сквозной записи в основную память)

Возможно ли, что мой SELECT получит строку, содержащую часть UPDATE, но не всеиз этого?Каким в этом случае будет самый маленький элемент, который атомарно обновляется / читается?

Существуют ли различия в различных системах реляционных баз данных?

1 Ответ

0 голосов
/ 24 января 2019

Нет. «Грязные данные» означают, что вы полагаетесь на внутреннюю часть базы данных, поэтому никаких гарантий нет. Данные могут быть записаны на страницу данных, а затем удалены из-за отката транзакции. Данные могут быть записаны на страницу данных, а затем более поздний шаг в той же транзакции может перезаписать ее.

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

...