Я використовую 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