Я изучаю уровень изоляции моментальных снимков SQL Server 2008 по приведенной ниже ссылке. Мое замешательство,
http://msdn.microsoft.com/en-us/library/ms173763.aspx
Упоминается «Изменения данных, сделанные другими транзакциями после начала текущей транзакции, не видны операторам, выполняющимся в текущей транзакции». - кажется, что данные, зафиксированные другими транзакциями, не видны текущей транзакции уровня изоляции моментального снимка;
Упоминается «Транзакция, работающая с уровнем изоляции SNAPSHOT, может просматривать изменения, сделанные этой транзакцией». - кажется, что данные, зафиксированные другими транзакциями, видны текущей транзакции уровня изоляции моментального снимка.
Кажется, 1 и 2 противоречат друг другу? Есть комментарии?
спасибо заранее, George
Число 2 означает «Я вижу свои изменения; другие изменения не вижу»
Так что, если я начну транзакцию и внесу изменения, я смогу их увидеть. Другие транзакции для других сеансов / подключений, запущенные после того, как мой TXN не видит мои изменения
Вам также необходимо знать разницу между SNAPSHOT и READ COMMITTED SNAPSHOT - для последнего вам необходимо изменить свою цитату из BOL следующим образом:
"Изменения данных, выполненные другими транзакциями после началатекущее ЗАЯВЛЕНИЕ (не транзакция!) невидимо для операторов, выполняющихся в текущей транзакции. "
Пример случая, когда это имеет большое значение: Когда помогает изоляция моментального снимка и когда это причиняет боль
Вы должны думать в целом. READ_COMMITTED допустимо только / полезно. что будет использовать READ_UNCOMMITTED ? Для какого дела понадобится грязное чтение? читать сериал? Почему любое деловое требование навязывает порядок чтения данных. Разработчик SQL-сервера не стал думать об упрощении. Oracle выбрал поддержку только одного, и это работает. Снимок - это то, как БД должен решить эту проблему, поэтому мы даже не должны знать. С левым полушарием мы должны работать над тем, как поддерживать бизнес-логику, а не над самой БД.