я начать с простого вопроса:Как Читайте Committed уровень изоляции предотвращает грязное чтение
по определению Грязный Распознать Wikipedia и Msdn:
мы имеем 2 одновременных транзакций, T1 и T2
Происходит грязное чтение, когда T1 обновляет строку, а T2 читает строку, которая «еще не завершена», T1
, но при чтении совершенного уровня sh Заблокированные блоки блокируются, как только данные считываются (не в конце транзакции или даже в конце заявления
то как Read Committed предотвращает грязные чтения? Bkaz, как только блокировка общего доступа, выпущенная на обновленной строке T2, может читать обновленную строку, а t1 может откатить всю операцию, тогда у нас есть грязное чтение на руке t1
говорят у «T1 имеет блокировку на строку, поэтому T2 не может прочитать„еще не совершил“строку, которая может быть rollbacked позже», но если T1 имеет эту блокировку на строку, пока конец транзакции, почему мы должны иметь возможность повторного чтения изоляции для всей транзакции, могу ли я понять? –
@raoofhojat Повторяемый - это еще один уровень изоляции. Это означает, что T2 читает, T1 записывает и фиксирует, T2 перечитывает, если он повторяется, он должен перечитывать те же значения в первый раз. Это можно получить двумя способами: T1 берет блокировку во время первого чтения, поэтому T2 не может писать посередине и должен ждать завершения транзакции T1 или использовать полную моментальную съемку (это больше, чем управление версиями строк, если вы смотрите за столом) – xanatos
i know Repeatable - это еще один уровень изоляции, u сказал: «T2 не может прочитать« еще не зафиксированную »строку, которую можно отбросить позже», если ее то, что выполняется Commited Reads, затем Commited Reads может блокировать читать до конца транзакции, тогда он может обрабатывать повторяющиеся чтения –