|
Нова програма SpeedFan
У застосуванні до SQL шипик містить у собі один і більше операторів мови. Рівні ізоляцій шипиків з різним ступенем забезпечують цілісність даних при їхній одночасній обробці безліччю процесів. Сергій Тарасов Найбільш простий варіант відомий усім: один користувач записує інформацію на рівні запису таблиці, а іншої намагається неї прочитати. При відсутності ізоляції другий користувач може прочитати дані незавершеного шипика.
Ситуація якісно ускладнюється, якщо змінам (модифікації, вставці, видаленню) піддана не один запис, а трохи, можливо, навіть у різних таблицях. Перш ніж приступитися до експериментів на практиці, давайте коротко перелічимо особливості рівнів ізоляції відповідно до стандарту ANSI SQL-92. Незавершене (чорнове) читання (read uncommitted) мінімальний рівень ізоляції гарантує тільки фізичну цілісність при записі даних. Процеси-Читачі можуть зчитувати дані незавершеного шипика процесу-письменника
Підтверджене читання (read committed) процеси-читачі не можуть зчитувати дані незавершеного шипика, але процеси-письменники можуть змінювати вже прочитані читачем дані
Повторюване читання (repeatable read) повторне читання даних поверне ті ж значення, що були й на початку шипика. При цьому процеси-письменники можуть вставляти нові записи, що мають статус фантома при незавершеному шипику. Сериализуемость (serializable) максимальний рівень ізоляції, гарантує незмінюваність даних іншими процесами до завершення шипика.
Моментальний зріз (snapshot) даний вид ізоляції не входить у рекомендації стандарту SQL 92, але він реалізований у багатьох СУБД. Процеси-Читачі не чекають завершення шипиків письменників, а зчитують дані, точніше їхню версію, за станом на момент початку свого шипика. Моментальний зріз дозволяє нам вирішити проблему блокувань за рахунок дозволу іншим шипикам змінювати дані. Якщо ми встановимо рівень SNAPSHOT і повторимо експеримент, то зникнуть численні поділювані блокування рівня сторінок, що перешкоджають записи даних.
Таким чином, моментальний зріз являє собою дуже гарний засіб для генерації звітів або експорту даних, оскільки гарантує для читача несуперечність і цілісність даних у кожний момент часу, але при цьому не перешкоджає роботі інших пишучих шипиків. Повторюване читання гарантує, що при повторній вибірці тих самих даних усередині шипика ми одержимо ті самі їхнього значення.
|