- •Основные функции субд:
- •По модели данных:
- •Иерархические (Иерархической базой данных является файловая система, состоящая из корневого каталога, в котором имеется иерархия подкаталогов и файлов).
- •Сетевые (Сетевые базы данных подобны иерархическим, за исключением того, что в них имеются указатели в обоих направлениях, которые соединяют родственную информацию).
- •По степени распределённости
- •Локальные субд (все части локальной субд размещаются на одном компьютере)
- •Распределённые субд (части субд могут размещаться на двух и более компьютерах).
- •Различные представления о данных в базах данных:
- •Ограничения не-Null Ограничение не-null просто говорит, что колонка не должна содержать значение null. Пример синтаксиса:
- •2. Определение структур базы данных (ddl)
- •3. Манипуляция данными (dml)
- •4. Отбор данных (dql)
- •5. Язык управления данными (dcl)
- •6. Команды администрирования данных
- •7. Команды управления транзакциями
- •14.Запись sql-операторов
- •15.Типы данных языка sql, определенные стандартом
- •16.Основные команды языка ddl
- •17.Основные команды языка dml
- •18.Оператор выбора select
- •19.Применение агрегатных функций и вложенных запросов в операторе выбора
- •20. Операторы манипулирования данными
- •21.Физическая организация бд: файлы, записи, блоки.
- •23.Организация файла бд в виде кучи. Эффективность таких файлов.
- •24.Хешированные файлы: бакет, каталог бакетов, дополнительный каталог бакетов, выбор хеш-функции. Операции над хешированными файлами.
- •25.Сравнение эффективности хешированных файлов и файлов, организованных в виде кучи. Причины снижения эффективности хешированных файлов.
- •26.Динамическое хеширование. Операции над динамически хешированными файлами.
- •27.Последовательная организация файлов. Операции добавления и удаления записей в последовательных файлах, блок переполнения.
- •28. Индексированные файлы: инициализация, поиск.
- •29. Индексированные файлы: операции вставки и удаления записей.
- •30.Разреженные и плотные индексы. Индексация по нескольким полям.
- •Составные индексы
- •31.Эффективность операций в индексированных файлах при различной организации поиска.
- •32.B-деревья: принципы построения, операция поиска.
- •33.В-деревья: операции добавления и удаления записей.
- •34.Эффективность организации файлов в виде в-дерева.
- •35.Технология кластеризации бд.
- •36.Технология сжатия информации в бд.
- •37.Основные шаги обработки запросов.
- •Можно транслировать в выражение
- •38.Статистика бд.
- •40.Алгоритмы выполнения селекции с одним условием сравнения: размер селекции, использование первичного индекса, использование вторичного индекса.
- •41.Размер комплексной селекции при конъюнкции и дизъюнкции условий.
- •43.Алгоритм внешней сортировки.
- •44.Размер операции соединения. Алгоритм соединения, основанный на двух вложенных циклах.
- •45.Алгоритмы выполнения соединения: поблочное соединение, усовершенствование алгоритма поблочного соединения, соединение по индексу.
- •46.Алгоритм соединения слиянием.
- •47.Алгоритмы выполнения операций с множествами, проекции, внешнего соединения.
- •48.Два подхода к вычислению выражений при обработке запросов.
- •50.Виды оптимизаторов: итеративный, основанный на стоимостях и эвристический.
- •51.Понятие транзакции. Свойства acid транзакций.
- •52.Аномалии параллельных транзакций: потерянное обновление, зависимость от нефиксированных результатов, несогласованная обработка.
- •53.Понятие плана параллельного выполнения транзакций. Последовательные, непоследовательные и неупорядоченные планы.
- •54.Конфликтное упорядочивание планов и упорядочивание планов по просмотру.
- •55.Блокировки как механизм управления параллельными транзакциями: понятие блокировки, хранение блокировок, виды блокировок.
- •56.Работа транзакций при использовании механизма блокировок. Предотвращение аномалий при использовании блокировок.
- •57.Понятие протокола. Двухфазный протокол.
- •58.Проблема каскадного отката в параллельных транзакциях. Строгий двухфазный протокол.
- •59.Взаимная блокировка параллельных транзакций.
- •60.Использование метода временных отметок для управления параллельными транзакциями.
- •61.Оптимистические технологии управления транзакциями.
- •63.Уровни изоляции параллельных транзакций.
- •64.Восстановление бд: возможные причины отказов, механизм резервного копирования, журнал транзакций, создание контрольных точек.
- •65.Методы восстановления бд: восстановление с резервной копии, метод «redo», метод теневых страниц.
- •66.Улучшенные модели транзакции: проблемы классических моделей транзакций, модель вложенных транзакций, модель хроник.
- •67.Технология raid. Уровни raid.
- •68.Oltp- технологии и хранилища данных. Хранилища данных.
- •Понятие хранилища данных.
- •Проблемы хранилищ данных.
- •Архитектура хранилища данных
- •Проектирование схемы бд для хранилища данных.
- •Olap-технологии.
55.Блокировки как механизм управления параллельными транзакциями: понятие блокировки, хранение блокировок, виды блокировок.
Блокировка заключается в следующем. Когда некоторая транзакция получает доступ к элементу БД, механизм блокировки позволяет отклонить попытки получения доступа к этим же данным со стороны других транзакций.
Блокировка – это проявление консервативного подхода к управлению.
Блокировки хранятся СУБД в таблице в виде (<элемент>, <тип блокировки>, <транзакция>). В качестве элементов могут быть выступать кортежи, части кортежей, отношения, блоки (страницы). Большие элементы уменьшают пространство, занимаемое таблицей блокировок и время на ее обработку. Маленькие элементы позволяют большему числу транзакций работать одновременно. На практике блокировка транзакции редко охватывает только один элемент. Например, при индексированных файлах требуется как минимум блокировка двух элементов – в индексном и главном файле. Большинство запросов требуют обращения больше, чем к одной таблице. При вставке новой записи должна осуществляться проверка уникальности первичного ключа, ограничения других полей, то есть необходимо блокировать все отношение, а возможно и связанные с ним отношения.
Блокировки бывают на чтение и на запись. Блокировка на чтение означает, что транзакция сможет читать этот элемент, но не сможет изменять, другие же транзакции так же смогут читать этот элемент, но не изменять его. То есть другие транзакции так же смогут установить блокировку чтения на этот элемент. Блокировка на запись означает, что элемент данных может как читаться, так и изменяться транзакцией. При этом ни какая другая транзакция не может получить доступ к элементу ни по чтению, ни по записи.
Обработка данных, с использованием механизма блокировок, ведется следующим образом.
1 Если транзакции необходимо получить доступ к элементу, она должна вначале выполнить блокировку этого элемента.
2 Если элемент еще не заблокирован, то устанавливается блокировка запрашиваемого вида и транзакция получает доступ к элементу.
3 Если элемент уже заблокирован, то выполняется анализ существующей и запрашиваемой блокировки. Если они обе на чтение, то на элемент устанавливается еще одна блокировка и транзакция получает доступ на чтение. В противном случае транзакция переходит в состояние ожидания, которое будет продолжаться до тех пор, пока с элемента не будут сняты существующие блокировки.
4 Транзакция продолжает удерживать блокировку элемента до тех пор, пока она явным образом не освободит элемент. Это происходит либо в ходе выполнения транзакции, либо по ее окончании, как успешном, так и не успешном.
Кроме этого, в некоторых системах разрешено устанавливать блокировку на чтение, которая позже может расширяться и преобразовываться в блокировку на запись. Такой подход повышает эффективность, так как позволяет транзакции вначале проанализировать данные, перед тем как устанавливать более жесткую блокировку.
Рассмотрим, как блокировки решают аномалию потерянного обновления
T1 |
T2 |
значение элемента f |
|
begin tran |
100 |
begin tran |
writeLock f |
100 |
wait |
read f |
100 |
wait |
f:=f+100 |
100 |
wait |
write f |
200 |
wait |
unlock f |
200 |
wait |
Commit |
200 |
writeLock f |
|
200 |
read f |
|
200 |
f:=f-10 |
|
200 |
write f |
|
190 |
unlock f |
|
190 |
commit |
|
190 |
Перед чтением вторя транзакция установила блокировку, поэтому первая перешла в режем ожидания до тех пор, пока вторая не разблокирует элемент. /*Сейчас соответствует последовательному выполнению транзакций – значение элемента тоже, а раньше было – 90 */
Остальные аномалии решаются таким же способом, то есть если без блокировок транзакция свободно читала или писала необходимый ей элемент, то при наличии блокировок и их упорядоченности, транзакция будет переведена в режим ожидания и доступ, провоцирующий конфликт не будет осуществлен.