- •Глава 13. Семантическое моделирование
- •Часть III Проектирование базы данных
- •Часть IV
- •14.1. Введение
- •14.2. Транзакции
- •14.3. Восстановление транзакции
- •14.4. Восстановление системы
- •14.5. Восстановление носителей
- •14.6. Двухфазная фиксация
- •14.7. Поддержка языка sql
- •14.8. Резюме
- •15.1. Введение
- •15.2. Три проблемы параллельности
- •15.3. Блокировка
- •15.4. Устранение трех проблем параллельности
- •15.5. Взаимная блокировка
- •15.6. Упорядочиваемость
- •15.7. Уровни изоляции
- •15.8. Блокировка намерения
- •15.9. Средства языка sql
- •15.10. Резюме
- •Часть V
- •16.1. Введение
- •16.2. Избирательная схема управления доступом
- •16.3. Мандатная схема управления доступом
- •16.4. Статистические базы данных
- •16.5. Шифрование данных
- •16.6. Средства языка sql
- •16.7. Резюме
- •17.1. Введение
- •17.2. Пример выполнения оптимизации
- •17.3. Оптимизация запросов
- •17.4. Преобразование выражений
- •17.5. Статистические показатели базы данных
- •17.6. Стратегия по принципу "разделяй и властвуй"
- •17.7. Реализация реляционных операторов
- •17.8. Резюме
- •18.1. Введение
- •18.2. Обзор концепции трехзначной логики
- •18.3. Некоторые следствия изложенной схемы
- •18.4. Отсутствующие значения и ключи
- •18.5. Внешнее соединение
- •18.6. Специальные значения
- •18.7. Поддержка неопределенных значений в языке sql
- •18.8. Резюме
- •Глава 19
- •19.1. Введение
- •19.2. Иерархия типов
- •19.3. Полиморфизм и заменимость
- •19.4. Переменные и операция присвоения
- •19.5. Специализация по ограничениям
- •19.6. Операции сравнения
- •19.7. Операторы, версии и сигнатуры
- •19.8. Является ли окружность эллипсом
- •19.9. Пересмотр специализации ограничением
- •19.10. Резюме
- •20.1. Введение
- •20.2. Предварительные сведения
- •20.3. Двенадцать основных целей
- •1. Локальная независимость
- •2. Отсутствие опоры на центральный узел
- •3. Непрерывное функционирование
- •4. Независимость от расположения
- •5. Независимость от фрагментации
- •6. Независимость от репликации
- •7. Обработка распределенных запросов
- •8. Управление распределенными транзакциями
- •9. Аппаратная независимость
- •10. Независимость от операционной системы
- •11. Независимость от сети
- •12. Независимость от типа субд
- •20.4. Проблемы распределенных систем
- •Транзакция т1х
- •20.5. Системы "клиент/сервер"
- •20.6. Независимость от субд
15.1. Введение
Как разъяснялось во введении к главе 14, восстановление данных и параллельное вы- полнение операций следует рассматривать совместно, поскольку обе эти темы являются частями более общей темы, связанной с обработкой транзакций. Однако в этой главе основное внимание уделяется именно вопросам параллельности. Термин паралле- льность означает поддержку СУБД одновременной обработки многих транзакций, по- лучающих доступ к одним и тем же данным, причем в одно и то же время. Как известно, для корректной обработки параллельно выполняющихся транзакций без возникновения конфликтных ситуаций в любой системе необходимо использовать некоторый механизм управления параллельностью. Ниже, в разделе 15.2, приведены примеры конфликт- ных ситуаций, возникновение которых возможно при отсутствии соответствующего ме- ханизма управления параллельностью.
Данная глава имеет следующую структуру.
Как уже говорилось, в разделе 15.2 рассматриваются проблемы, которые могут иметь место при отсутствии должного механизма управления параллельностью.
В разделе 15.3 предлагается стандартный метод разрешения таких проблем, полу- чивший название метод блокировки.
Замечание. Блокировка не является единственно возможным подходом к решению проблемы управления параллельностью, однако именно этот метод чаще всего используется на практике. Некоторые другие подходы описаны в комментариях, приведенных в списке литературы [15.1], [15.3], [15.6], [15.7], [15.14], [15.15].
В разделе 15.4 поясняется, как можно использовать механизм блокировки для ре- шения проблем, обсуждавшихся в разделе 15.2.
К сожалению, использование метода блокировки связано с возникновением дру- гих проблем, самой известной из которых является ситуация взаимной блоки- ровки, описываемая в разделе 15.5.
В разделе 15.6 рассматривается концепция упорядочиваемости, представляющая собой некоторый формальный критерий правильности выполнения определенного набора параллельно выполняемых транзакций.
В разделах 15.7 и 15.8 продолжается рассмотрение некоторых важных дополне- ний к основной идее блокировки, а именно— концепций уровней изоляции и механизма блокировки намерения.
В разделе 15.9 описываются соответствующие средства языка SQL.
В разделе 15.10 дается краткое резюме и несколько заключительных замечаний к материалу данной главы.
Замечание. Здесь также будет уместно еще раз привести общие замечания, которые были сделаны во введении к главе 14.
Во-первых, идеи управления параллельностью, как и идеи восстановления данных, в значительной степени не зависят от того, какой является СУБД: реляци- онной или какой-либо другой. Однако большая часть теоретической работы в этой области, как и в области восстановления данных, была выполнена именно в реля- ционном контексте, исходя из соображений "определенности" [15.5].
Во-вторых, управление параллельностью, как и восстановление данных, является весьма обширной темой, а потому в этой главе будут описаны только наиболее важные идеи. Обсуждение некоторых последних достижений в этой области знаний содержит- ся в упражнениях и в ответах к ним, а также в списке литературы в конце главы.