- •Основные функции субд:
- •По модели данных:
- •Иерархические (Иерархической базой данных является файловая система, состоящая из корневого каталога, в котором имеется иерархия подкаталогов и файлов).
- •Сетевые (Сетевые базы данных подобны иерархическим, за исключением того, что в них имеются указатели в обоих направлениях, которые соединяют родственную информацию).
- •По степени распределённости
- •Локальные субд (все части локальной субд размещаются на одном компьютере)
- •Распределённые субд (части субд могут размещаться на двух и более компьютерах).
- •Различные представления о данных в базах данных:
- •Ограничения не-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-технологии.
59.Взаимная блокировка параллельных транзакций.
Взаимная блокировка или тупик возникает в случае, когда две или более транзакции находятся во взаимном ожидании освобождения элементов, удерживаемых каждой из них.
Т1 |
Т2 |
begin tran |
|
writeLock X |
begin tran |
read X |
writeLock Y |
writeLock Y |
read Y |
Wait |
writeLock X |
|
wait |
Таким образом, ни одна транзакция не может быть закончена.
СУБД борется с тупиками следующим образом. Во время работы параллельных транзакций через определенные промежутки времени выполняется поиск тупиков. Для их поиска строится граф ожиданий. Вершины этого графа соответствуют транзакциям, выполняемым в данный момент времени. Ребро Ti ? Tj строится в том случае, когдаTi ожидает освобождения элемента, занятого Tj. Взаимная блокировка имеет место в том случае, когда граф ожиданий содержит цикл. При обнаружении тупика одна из транзакций, создавших цикл, должна быть снята, то есть отменена. При оптимальной работе после такой отмены транзакция должна быть перезапущена СУБД. /*На практике deadLock появляется на клиенте, и он сам должен перезапустить транзакцию. */
60.Использование метода временных отметок для управления параллельными транзакциями.
С одной стороны методы временных отметок является альтернативным способом борьбы с тупиками. Он заключается в том, что тупик просто не может возникнуть, так как никакие транзакции не переводятся в состояние ожидания.
По своей сути же временные отметки являются методом управления параллельными транзакциями, применяемым вместо метода блокировок. То есть временные отметки являются методом достижения упорядоченности планов параллельных транзакций.
Временная отметка (timestamp) – уникальный идентификатор, создаваемый СУБД с целью обозначения относительного момента времени запуска транзакции. /*относительное, потому что может быть и не время, а просто какой-то счетчик */
Метод работы СУБД с использованием временных отметок заключается в установлении глобальной очередности выполнения транзакций, при которой более старые транзакции имеют более высокий приоритет при разрешении возникающих конфликтов. Более старой считается транзакция с меньшим значением временной отметки.
При использовании протокола временных отметок операция чтения или записи выполняется только в том случае, если последнее изменение требуемого элемента данных было выполнено более старой транзакцией. В противном случае транзакция, запросившая операцию, отменяется и перезапускается с присвоением ей новой временной отметки. Новая временная отметка необходима для того, чтобы транзакция не попала в бесконечный цикл перезапуска.
Элементы данных в таких системах должны иметь временную отметку чтения и временную отметку записи. Значение этих отметок равно временным отметкам транзакций, которые последними выполняли операцию чтения и записи.
Согласно протоколу с упорядочиванием по временным отметкам обработка транзакции T с временной отметкой ts(T) выполняется следующим образом.
1 Транзакция T выдает команду read(x)
а) Элемент x обновлен более поздней транзакцией, то есть ts(T)<write_timestamp(x). В этом случае высока вероятность, что любые другие считанные этой транзакцией элементы уже не согласованы со значением элемента x. Поэтому транзакция отменяется и перезапускается.
б) Если ts(T)>=write_timestamp(x), то операция чтения выполняется, транзакция продолжает работу, временной отметки по чтению элемента x(read_timestamp(x)) присваивается значение ts(T).
2 Транзакция T выдает команду write (x).
а) Транзакция запрашивает запись элемента x, значение которого было считано более новой (поздней) транзакцией. То есть, ts(T)<read_timestamp(x).
Это означает, что более новая транзакция уже использовала текущее значение элемента x и в результате его обновления возникнет ошибка. В этом случае транзакция Т будет отменена и перезапущена с новой временной отметкой.
б) Транзакция запрашивает запись элемента, который был обновлен более поздней транзакцией.ts(T)<write_timestamp(x). Это означает, что транзакция пытается записать в элемент x устаревшее значение, следовательно, транзакция должна быть отменена и перезапущена.
в) В противном случае операция записи элемента xвыполняется, временной отметки по записи элемента присваивается значение ts(T) и транзакция продолжает работу.
Такая схема работы гарантирует упорядоченность плана выполнения транзакций.
Для обеспечения повышения уровня параллельности может быть использован модернизированный протокол упорядочивания по временным отметкам, который позволяет достичь менее жесткой конфликтной упорядоченности за счет отмены устаревших операций записи. В этом случае пункт 2б) изменяется следующим образом.
Пусть транзакция Т пытается записать элемент x иts(T)<write_timestamp(x). Это означает, что более новая транзакция уже перезаписала элемент данных, который пытается перезаписать более старая транзакция, основываясь на устаревшем значении элемента. В таком случае операция записи может быть проигнорирована и транзакция продолжит работу.