Содержание
- 2. Atomicity (атомарность)Логика приложения должна предполагать, что должны быть проделаны либо все изменения данных, входящие в транзакцию
- 3. Запуск транзакции SQL сервер позволяет запустить явную, автоматически совершаемую или неявную транзакцию Explicit (явная) транзакция предваряется
- 4. Завершение транзакции. Для завершения транзакции используется конструкция COMMIT Если все прошло успешно, конструкция COMMIT гарантирует, что
- 5. Синтаксис SAVE TRAN [ SACTION ] { savepoint_name | @savepoint_variable } – объявить savepoint BEGIN TRAN
- 6. Примеры: CREATE TABLE ImplicitTran (Cola int PRIMARY KEY, Colb char(3) NOT NULL) SET IMPLICIT_TRANSACTIONS ON /*
- 7. В autocommit режиме в случае возникновения ошибки компиляции SQL сервер делает rollback всему пакету инструкций. При
- 8. В SQL Server контроль имени объекта производится в (во время выполнения) execution time. Поэтому в следующем
- 9. Обработка исключений @@ERROR возвращает номер ошибки, возникшей при выполнении предыдущего SQL-выражения или 0, если ошибок не
- 10. Схема обработки ошибок в explicit транзакции: begin tran Update Authors set contact=1 where au_id=1000 Save transaction
- 11. Блокировки SQL-сервер позволяет одновременную работу большого числа пользователей, каждый из которых запускает свои запросы в параллельных
- 12. Проблема «грязной» записи заключается в том, что при одновременном выполнении транзакций, в которых производится изменение данных,
- 13. Проблема «грязного чтения» возникает, когда одна транзакция пытается прочитать данные, с которыми работает другая параллельная транзакция.
- 14. Проблема повторного чтения состоит в том, что между операциями чтения в одной транзакции другие транзакции могут
- 15. Для разрешения этих проблем необходимо изолировать транзакции друг от друга. Для реализации различных уровней изоляции в
- 16. Уровни определения изоляции транзакций( Каждый уровень включает в себя предыдущий с предъявлением более жестких требований к
- 17. No nonrepeatable read (запрещение неповторяемого чтения). Если данная транзакция читает данные, запрещается изменять эти данные до
- 18. Блокировки в MS SQL Server 2000 (– это механизм реализации требования изолированности транзакций. Существует три основных
- 20. Блокировки применяются для защиты совместно используемых ресурсов сервера. В качестве объектов блокировок могут выступать следующие сущности:
- 21. SQL Server сам выбирает наиболее оптимальный объект для блокировки, однако пользователь может изменить это поведение с
- 22. SQL Server может принимать решение об уменьшении степени детализации, когда количество блокированных ресурсов увеличивается. Этот процесс
- 23. Оптимистический метод управления характеризуется тем, что вместо непосредственного чтения данных берется значение из буфера. Никаких блокировок
- 24. Основные задачи менеджера блокировок: создание и установка блокировок; снятие блокировок; эскалация блокировок; определение совместимости блокировок; устранение
- 25. Когда пользователь делает запрос на обновление или чтение данных, менеджер транзакций передает управление менеджеру блокировок для
- 26. Простые блокировки Разделяемая блокировка (Shared Lock), обозначается латинской буквой S. Эта самый распространенный тип блокировки, который
- 27. Блокировка обновления (Update Lock), обозначается латинской буквой U. Эта блокировка является промежуточной между разделяемой и монопольной
- 28. Если данная транзакция установила на ресурс блокировку обновления, никакая другая транзакция не сможет получить на этот
- 29. Пример: create table test(i int, n varchar(20)) insert into test values(1,'alex') insert into test values(2,'rosa') insert
- 30. В первой сессии зафиксируем транзакцию: --print @@spid --begin tran select * from test сommit Повторный вызов
- 32. Как видно, на три строки была наложена блокировка обновления, что означает невозможность обновления этих строк другими
- 33. Типы блокировок намерений Разделяемая блокировка намерений (обозначается IS). Монопольная блокировка намерений (обозначается IX). Разделяемо-монопольная блокировка намерений
- 34. Продолжим пример. Создадим новую сессию и выполним следующий скрипт: begin tran insert into test values(4,'other')
- 37. Скачать презентацию