Що таке рівень ізоляції SNAPSHOT для читання в SQL Server?

READ COMMITTED є стандартний рівень ізоляції для SQL Server. Він запобігає брудному читанню, вказуючи, що оператори не можуть читати значення даних, які були змінені, але ще не зафіксовані іншими транзакціями. 15 вересня 2021 р.

InnoDB пропонує всі чотири рівні ізоляції транзакцій, описані стандартом SQL:1992: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ і SERIALIZABLE .

Незафіксоване читання: це найнижчий рівень ізоляції, коли транзакція може бачити незафіксовані зміни, внесені іншими транзакціями. Це може призвести до брудних зчитувань, неповторюваних зчитувань і фантомних зчитувань. Читання зафіксованих: на цьому рівні ізоляції транзакція може бачити лише зміни, зроблені іншими зафіксованими транзакціями.

У Snapshot Isolation час читання відсканованих рядків є початком транзакції, а додаткове виявлення конфлікту перевіряє узгодженість із часом запису, який є кінцем транзакції. У повторюваних читаннях, завдяки блокуванню отриманих рядків, час їхнього читання є таким самим, як і наприкінці транзакції.

«Ізоляція моментального знімка» в інформатиці означає протокол керування паралелізмом, який гарантує, що кожна транзакція бачить послідовний знімок бази даних, запобігаючи таким проблемам, як брудне читання, і забезпечуючи високий рівень ізоляції між транзакціями.

Рівень ізоляції READ_COMMITTED_SNAPSHOT може прозоро замінити READ COMMITTED для всіх транзакцій. Ізоляція SNAPSHOT визначає, що дані, зчитані в рамках транзакції, ніколи не відображатимуть зміни, внесені іншими одночасними транзакціями.