Проблема уровня изоляции моментального снимка SQL Server - PullRequest
3 голосов
/ 12 июля 2009

Я изучаю уровень изоляции моментальных снимков SQL Server 2008 по приведенной ниже ссылке. Мое замешательство,

http://msdn.microsoft.com/en-us/library/ms173763.aspx

  1. Упоминается «Изменения данных, сделанные другими транзакциями после начала текущей транзакции, не видны операторам, выполняющимся в текущей транзакции». - кажется, что данные, зафиксированные другими транзакциями, не видны текущей транзакции уровня изоляции моментального снимка;

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

Кажется, 1 и 2 противоречат друг другу? Есть комментарии?

спасибо заранее, George

Ответы [ 3 ]

8 голосов
/ 12 июля 2009

Число 2 означает «Я вижу свои изменения; другие изменения не вижу»

Так что, если я начну транзакцию и внесу изменения, я смогу их увидеть. Другие транзакции для других сеансов / подключений, запущенные после того, как мой TXN не видит мои изменения

1 голос
/ 12 июля 2009

Вам также необходимо знать разницу между SNAPSHOT и READ COMMITTED SNAPSHOT - для последнего вам необходимо изменить свою цитату из BOL следующим образом:

"Изменения данных, выполненные другими транзакциями после началатекущее ЗАЯВЛЕНИЕ (не транзакция!) невидимо для операторов, выполняющихся в текущей транзакции. "

Пример случая, когда это имеет большое значение: Когда помогает изоляция моментального снимка и когда это причиняет боль

0 голосов
/ 10 августа 2018

Вы должны думать в целом. READ_COMMITTED допустимо только / полезно. что будет использовать READ_UNCOMMITTED ? Для какого дела понадобится грязное чтение? читать сериал? Почему любое деловое требование навязывает порядок чтения данных. Разработчик SQL-сервера не стал думать об упрощении. Oracle выбрал поддержку только одного, и это работает. Снимок - это то, как БД должен решить эту проблему, поэтому мы даже не должны знать. С левым полушарием мы должны работать над тем, как поддерживать бизнес-логику, а не над самой БД.

...