Реферат: Базы данных 10
Общие ограничения целостности задаются с помощью оператора CREATE ASSERTION.
Синтаксис оператора:
CREATEASSERTION имя CHECK (условное выражение);
Здесь в параметре имя задается имя правила, а в параметре условное выражение – соответствующее условие ограничения.
Пример .
CREATE ASSERTION ABC1 CHECK
(NOT EXISTS (SELECT * FROM P
WHERE NOT (P.WEIGHT>0)));
Здесь применительно к таблице Р выполняется проверка, что каждый товар имеет положительный вес.
Лекция 10
1.19. Проблема параллелизма
При одновременном исполнении нескольких транзакций (при параллельной работе) между ними могут возникать конфликты, приводящие к нарушению целостности БД.
Рассмотрим пример нарушения целостности БД двумя параллельно действующими транзакциями, представленный в табл. .
Время |
Операции транзакции А |
Операции транзакции В |
Результат |
t1 | Читает запись i | 10 | |
t2 | Читает запись i | 10 | |
t3 | К записи iприбавляет число 10 |
20 | |
t4 | К записи iприбавляет число 15 |
25 |
В момент t1 транзакция А читает запись i, которая содержит число 10.
В момент t2 другая транзакция читает это же число. В момент t3 транзакция А модифицирует прочитанное число, прибавляя к нему число 10. В результате в БД оказывается число 20. Но в следующий момент транзакция В модифицирует прочитанное число, прибавляя к нему число 15. Таким образам, в записи i оказывается число 25. Это результат параллельной работы этих транзакций. Очевидно, что результат неправильный, т.к. две транзакции в сумме прибавили число 25. Значит, окончательным результатом должно было быть число 35, а не 25.
Фактически результат модификации, выполненной транзакцией А, пропал.
1.20. Блокирование информационных объектов базы данных
Все современные СУБД ориентированы на поддержку одновременной работы многих пользователей, а следовательно, на параллельную обработку транзакций. Для корректной обработки параллельных транзакций без возникновения конфликтных ситуаций необходимо использовать некоторыйметод управления параллелизмом. Основным методом управления параллелизмом является блокирование (альтернативными являются метод временных меток и оптимистичные технологии).
Его основная идея очень проста: в случае, когда для выполнения некоторой транзакции необходимо, чтобы некоторый объект базы данных (например, отдельный кортеж таблицы или вся таблица) не изменялся непредсказуемо и без ведома этой транзакции, такой объект блокируется. Таким образом, эффект блокирования состоит в том, чтобы "заблокировать доступ к этому объекту со стороны других транзакций", а значит, предотвратить непредсказуемое изменение этого объекта. Следовательно, первая транзакция в состоянии выполнить всю необходимую обработку с учетом того, что обрабатываемый объект остается в стабильном состоянии настолько долго, насколько это нужно.
Реально блокирование может быть выполнено посредством установки некоторого бита в соответствующем объекте, означающего, что этот объект базы данных является заблокированным. Второй подход состоит в организации списка заблокированных объектов. Существуют и другие способы реализации механизма блокирования.
Для пояснения идеи блокирования рассмотрим пример, приведенный на рис.1.18.
Рис.1.18. Пример блокирования таблиц БД