
- •Основные функции субд:
- •По модели данных:
- •Иерархические (Иерархической базой данных является файловая система, состоящая из корневого каталога, в котором имеется иерархия подкаталогов и файлов).
- •Сетевые (Сетевые базы данных подобны иерархическим, за исключением того, что в них имеются указатели в обоих направлениях, которые соединяют родственную информацию).
- •По степени распределённости
- •Локальные субд (все части локальной субд размещаются на одном компьютере)
- •Распределённые субд (части субд могут размещаться на двух и более компьютерах).
- •Различные представления о данных в базах данных:
- •Ограничения не-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-технологии.
53.Понятие плана параллельного выполнения транзакций. Последовательные, непоследовательные и неупорядоченные планы.
Для управления параллельным доступом в СУБД существует два инструмента – планировщик и протокол. Планировщик – часть СУБД которая отвечает за такую последовательность атомарных шагов одновременно выполняющихся транзакций, при которой транзакции не оказывают взаимного влияния.
Последовательность атомарных действий транзакций называется планом совместного выполнения транзакций. Основным требованием к плану является сохранение порядка атомарных шагов транзакции при параллельном выполнении.
План называется последовательным, если в нем операции каждой из транзакций выполняются строго последовательно и не могут чередоваться с операциями, выполняющимися в других транзакциях. Таким образом, в последовательном плане транзакции выполняются строго поочередно (пока не закончилась одна транзакция вторая не начнется), следовательно, транзакции не оказывают ни какого взаимного влияния.
Непоследовательный плана – это план в котором чередуются операции из некоторого набора одновременно выполняемых транзакций. Непоследовательный плана является корректным, если он приводит к получению тех же результатов, которые получаются при использовании некоторого последовательного плана. Такой план называется упорядоченным. /*Все три проблемы параллельного доступа были обусловлены неупорядоченностью плана выполнения транзакций. */
Пример. Перевод денежных средств между счетами А, В, С. Две транзакции.
T1: read (A); A:=A-10; write(A); read(B); B:=B+10; write (B);
T2: read (B); B:=B-20; write(B); read(C); C:=C+20; write (C);
Корректность работы заключается в сохранении постоянного значения суммой А+В+С.
Первая таблица соответствует последовательному плану, так как все шаги каждой транзакции выполняются строго последовательно. Вторая таблица – корректный непоследовательный план, так его выполнение приводит к тому же результату, что и приведенный в первой таблице последовательный, то есть не нарушается заданное равенство суммы. Третья таблица соответствует некорректному непоследовательному плану, так как транзакция 2 читает значение элемента В, еще до того, как Т1 запишет корректное, значение В, то есть нарушается заданная сумма.
В отношении достижения упорядоченности плана важен порядок выполнения операций чтения и записи данных. Если две транзакции только считывают некоторый элемент данных или записывают независимые элементы данных, то они не будет конфликтовать между собой и порядок их выполнения не имеет значения. Если одна транзакция записывает элемент данных, а другая его считывает или записывает, то порядок выполнения элементарных шагов очень важен.
54.Конфликтное упорядочивание планов и упорядочивание планов по просмотру.
В конфликтно упорядоченном плане порядок выполнения любых конфликтных операций соответствует их размещению в последовательном плане.
При конфликтном упорядочивании транзакции следуют правилу принудительной записи: транзакция должна обновлять данные исходя из его прежнего значения, которое было считано ранее. При конфликтном упорядочивании для плана строят граф предшествования. Он состоит из следующих элементов:
1 Вершин, соответствующих каждой их транзакций плана.
2 Направленных ребер Ti -> Tj, где транзакция Tj считывает элемент, записанный транзакцией Ti.
3 Направленных ребер, Ti -> Tj, где транзакция Tj записывает элемент после того, как он был считан транзакцией Tj. /*До записи или вообще не записывает */
Если граф предшествования содержит циклы, то он не является конфликтно упорядоченным.
Пример конфликтно упорядочиваемого плана и неупорядочиваемого
T1 |
T2 |
|
T3 |
T4 |
begin tran |
|
|
begin tran |
|
read X |
|
|
read X |
|
write X |
|
|
X=X+100 |
|
|
begin tran |
|
write X |
|
|
read X |
|
|
begin tran |
|
write X |
|
|
read X |
read Y |
|
|
|
X=X*1.1 |
write Y |
|
|
|
write X |
commit |
|
|
|
read Y |
|
read Y |
|
|
Y=Y*1.1 |
|
write Y |
|
|
write Y |
|
commit |
|
|
commit |
|
|
|
read Y |
|
|
|
|
Y=Y-100 |
|
|
|
|
write Y |
|
|
|
|
commit |
|
Граф для Т1 и Т2 – без циклов Т3 и Т4 – с циклом
План является упорядоченным по просмотру, если он эквивалентен по просмотру некоторому последовательному плану.
Два плана S1 и S2, состоящих из одних и тех же операций, входящих в транзакции T1, T2, … Tn, являются эквивалентными по просмотру, если выполняются следующие условия:
1 Если транзакция Ti прочла исходное значение элемента в плане S1, то эта же транзакция Ti должна прочесть исходное значение элемента и в плане S2.
2 Если в плане S1 транзакция Ti считывает значение элемента, записанного транзакцией Tj, то и в плане S2 Ti должна читать элемент, записанный Tj.
3 Если в плане S1 последняя операция записи элемента была выполнена транзакцией Ti, то эта же транзакция должна выполнять последнюю запись элемента и в плане S2.
Планы, упорядоченные по просмотру не должны следовать правилу обязательной записи, то есть включают так называемую операцию слепой записи.
T1 |
T2 |
T3 |
begin tran |
|
|
read X |
|
|
|
begin tran |
|
|
write X |
|
|
commit |
|
write X |
|
|
commit |
|
|
|
|
begin tran |
|
|
write X |
|
|
commit |
Этот план не вызовет никаких аномалий, так транзакция Т3 последней записывает элемент Х, не основываясь на его чтении. Поэтому не важно как другие транзакции ранее записывают значение этого элемента. Это и есть слепая запись.
/*Проверка упорядоченности по просмотру является очень сложной задачей. */
На практике СУБД не проверяют планы на упорядоченность. В большинстве случаев это не только трудоемко, но и нецелесообразно, так как на параллельность выполнения влияет операционная система.
Вместо этого в СУБД используются специальные протоколы, гарантирующие упорядоченность планов.
Протокол – это набор правил, которым должны следовать транзакции, что бы между ними не возникали конфликты.