Транзакция и параллелизм
Транзакция – это последовательность операторов SQL , которая принимается или отменяется как одно целое.
Среду БД можно представить в виде множества пользователей, постоянно вводящих и изменяющих информацию. Любой программист знает, что пользователям всегда нужно давать возможность отменять выполненные операции.
Для того чтобы вносимые изменения сохранить, сделать их постоянными применяется оператор COMMIT WORK, а чтобы их отменить – оператор ROLLBACK WORK. После оператора COMMIT или ROLLBACK начинается новая транзакция.
Транзакция должна состоять из одного или из нескольких тесно связанных операторов. Для операций, которые привели к ошибкам, в любом случае выполняется откат.
Например, нужно из БД удалить продавца по имени MONIKA. Прежде чем удалить ее саму оператором DELETE из таблицы SALESPEOPLE, что -то нужно сделать с ее заказами и покупателями. Логично установить SNUM для этих заказов в NULL, чтобы никто из продавцов не получал по ним коммисионные, а покупателей передать продавцу PETER. После этого можно удалить ее из таблицы.
UPDATE Orders
SET SNUM = NULL
WHERE SNUM = 1004;
UPDATE CUSTOMERS
SET SNUM = 1001
WHERE SNUM = 1004;
DELETE FROM SALESPEOPLE
WHERE SNUM = 1004
Приведенную группу операторов можно рассматривать как одну транзакцию и завершить оператором СОММIТ или ROLLBACK.
Параллелизм (concurrency) относится к механизмам, с помощью которых СУБД предотвращает взаимное влияние операций, одновременно выполняемых над одними и теми же данными разными пользователями.
Обычно SQL используется в многопользовательской среде, где в одно и то же время операции над БД могут выполнять несколько пользователей. Это создает предпосылки для конфликтов между разными операциями.
Чтобы решить эти проблемы SQL обеспечивает управление параллелизмом (concurrency control) с помощью механизмов, называемых блокировками (locks).
Блокировки приостанавливают определенные операции над БД на то время, пока активны другие операции или транзакции.
Блокировки делятся на две общие категории:
-пессимистические блокировки (pessimistic locks), предотвращают доступ к данным для одновременных транзакций;
-оптимистические блокировки (optimistic locks), отслеживают возникновение конфликта и при необходимости выполняют откат транзакций. (они более подходят, если ожидаемая частота конфликтов невелика).
Контрольные вопросы:
Перечислить и дать краткую характеристику категорий языка SQL.
Основные команды, используемые в этих категориях.
Типы данных, применяемые в SQL.
Что такое ограничения, и какие вы знаете ограничения?
Обязательные ключевые слова, входящие в состав оператора SELECT.
Для чего нужна группировка и с помощью какого предложения производится группировка.
Какое предложение применяется для фильтрации групп?
Что такое привилегии, и на какие категории делятся привилегии?
Что такое транзакция, операторы транзакции?
Что такое параллелизм, механизм его устранения?
