- •1.Организация информационных массивов.
- •2.Компоненты среды субд.
- •3.Преимущества и недостатки субд. Преимущества
- •Недостатки
- •4.Жизненный цикл информационной системы.
- •Системный структурный анализ
- •5.Проектирование бд.
- •6.Моделирование данных.
- •7.Определение связей между объектами.
- •8.Логическое проектирование бд.
- •9.Реляционная модель данных.
- •10.Идентификация объекта.
- •11.Построение схемы реляционной бд.
- •1. Простой объект
- •2. Между объектами по имеется связь 1:1
- •3. Между объектами имеется связь 1:м
- •4. Между объектами имеется связь м:м.
- •5. Агрегированный объект
- •6. Супертип-подтип
- •Фрагмент концептуальной модели "институт"
- •12.Операции над реляционными отношениями.
- •Операции над множествами
- •13.Нормализация отношений.
- •14. Обеспечение целостности бд.
- •Целостность таблицы
- •Ссылочная целостность
- •15.Физическое проектирование базы данных
- •16.Анализ транзакций при физическом проект.
- •18.Особенности логических моделей данных
- •19.Иерархическая модель данных
- •20.Сетевая модель данных
- •21.Транзакция. Св-во транзакции.
- •22.Проблемы, возникающие при параллельном выполнении транз.
- •23.Методы управления параллельностью
- •24.Этапы развития субд
- •Эволюция серверов баз данных
- •25.Требования к современным субд. Активный сервер
- •26. Информационные приложения
- •27. Варианты построения информационных систем
- •28.Клиент-сервер
- •30. Распределенные базы данных
- •31. Виды систем поддержки принятия решений
- •32. Хранилища данных
- •34. Субд третьего поколения.
- •Объектно-реляционные субд.
- •Преимущества орсубд
- •Недостатки орсубд
- •17.Язык структурированных запросов(Structured Query Language)
- •29.Архитектура Web-приложений, публикующих бд
- •Трехуровневые Web-приложения
- •Многоуровневые Web-приложения
- •33.Оперативная аналитическая обработка
23.Методы управления параллельностью
Для организации параллельной работы в СУБД применяют механизм блокировки, который основан на следующем принципе: транзакция должна выполнить блокировку некоторого элемента данных перед тем, как она сможет выполнить в базе соответствующую операцию чтения или записи.
Блокировка может быть выполнена для элементов различного размера, начиная с базы данных в целом и заканчивая отдельным полей конкретной записи. Выбор элемента блокирования оказывает заметное влияние на производительность всей системы, поэтому разработчики приложений должны блокировать по возможности минимальный ресурс, чтобы не задерживать параллельно работающих пользователей.
Существует блокировка для чтения (разделяемая) и блокировка для записи (эксклюзивная, монопольная). Поскольку операция чтения не может служить причиной конфликта, допускается устанавливать блокировку одного и того же элемента одновременно со стороны сразу нескольких транзакций. В то же время блокировка элемента по записи предоставляет транзакции монопольное право доступа к нему, при этом ни какая другая транзакция не сможет ни считать, ни обновить заблокированный элемент.
Порядок использования блокировок:
любая транзакция, которой необходимо получить доступ к элементу данных, должна сначала выполнить блокировку этого объекта. Блокировка может быть для чтения или для записи, в последнем случае транзакция получит право доступа и для чтения и для записи;
если элемент еще не был заблокирован какой-либо другой транзакцией, то блокировка элемента будет выполнена успешно;
если элемент данных в настоящий момент уже заблокирован, СУБД проанализирует, является ли тип полученного запроса совместим с типом уже наложенной блокировки. Если запрашивается доступ для чтения к элементу, который заблокирован для чтения, доступ к элементу будет разрешен. В противном случае транзакция будет переведена в состояние ожидания, которое будет продолжаться до тех пор, пока существующая блокировка не будет снята;
транзакция продолжает удерживать блокировку элемента до тех пор, пока она явным образом не освободит его – либо в ходе выполнения транзакции, либо после ее окончания (успешном или неуспешном). Только после того, как с элемента данных будет снята блокировка для записи, другие транзакции смогут увидеть результаты проведенной операции записи.
Механизм блокировки может приводить к проблемам бесконечного ожидания и взаимной блокировки.
Пример бесконечного ожидания: Транзакция Т1 заблокировала элемент Х. Поступившая затем в систему транзакция Т2, которой также необходим элемент Х, переходит в состояние ожидания, периодически проверяя доступен ли элемент Х. В момент разблокировки в систему поступает транзакция Т3, которой требуется элемент Х, и она перехватывает инициативу по его блокировке и т.д. В таких условиях не исключена возможность, что транзакция Т2 все время будет находиться в состоянии ожидания. Чтобы избежать бесконечных ожиданий, система блокировки должна регистрировать время поступающих запросов и предоставлять им возможность блокировки ресурсов по правилу FIFO.
Тупиковые ситуации возникают при блокировке общих элементов. Например, параллельно запущены две программы.
Программа 1 Программа 2
блокировать элемент А блокировать элемент В
читать А читать В
блокировать элемент В блокировать элемент А
читать В читать А
обработка А и В обработка А и В
записать А записать В
снять блокировку А снять блокировку В
снять блокировку В снять блокировку А
СУБД следит за возникновением тупиковых ситуаций. При обнаружении тупика действия одной из транзакций аннулируется, а все выполненные ею изменения в базе данных устраняются. Транзакция либо переходит в состояние ожидания с последующим рестартом, либо снимается полностью.