Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекциипо СВИО 4.docx
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
45.21 Кб
Скачать

Транзакция и параллелизм

Транзакция – это последовательность операторов 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), отслеживают возникновение конфликта и при необходимости выполняют откат транзакций. (они более подходят, если ожидаемая частота конфликтов невелика).

Контрольные вопросы:

  1. Перечислить и дать краткую характеристику категорий языка SQL.

  2. Основные команды, используемые в этих категориях.

  3. Типы данных, применяемые в SQL.

  4. Что такое ограничения, и какие вы знаете ограничения?

  5. Обязательные ключевые слова, входящие в состав оператора SELECT.

  6. Для чего нужна группировка и с помощью какого предложения производится группировка.

  7. Какое предложение применяется для фильтрации групп?

  8. Что такое привилегии, и на какие категории делятся привилегии?

  9. Что такое транзакция, операторы транзакции?

  10. Что такое параллелизм, механизм его устранения?

15