Я использую SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
в большинстве своих общих запросов SQL, главным образом потому, что это было подробно изучено при первоначальном изучении языка.
WITH (NO LOCK)
Насколько я понимаю, этот уровень изоляции действует так же, как и я, когда-либо склонен использовать SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
.
- Есть ли когда - нибудь время, когда я должен использовать
WITH (NO LOCK)
болееSET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
. - Не
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
мешает ли другим пользователям быть заблокированными из таблиц, которые я читаю? - Если
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
используется для остановки блокировок, но я только читаю данные, какой смысл в этом? Только системные запросы будут генерировать блокировки? Стоит ли использовать его при выполнении запросов, которые возвращаются, скажем, через 5-10 секунд? - Мне сказали не использовать
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
при чтении данных, которые будут использоваться в обновлениях, по-видимому, чтобы избежать обновления грязных данных. Будет ли это единственной причиной? - С типом базы данных, над которой я работаю, есть среда производства и тестирования. Мы очень редко будем запрашивать производственную среду, но когда мне нужно, я обычно буду использовать
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
в своем запросе. Я понимаю, что с этим возможно грязное чтение. Помимо получения данных обратно, которые могут не в конечном итоге быть переданы в базу данных (и, следовательно, выбросить мои результаты), какие другие типы «грязного чтения» могут быть возможны?
Извините за массу вопросов.
READ UNCOMMITTED
везде, точно так же, как я бы не использовал WITH (NOLOCK)
везде (по сути, это одно и то же) blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere