Физические модели баз данных

Содержание

Слайд 2

Внешние устройства хранения информации Устройства произвольного доступа (например, магнитные диски). Файлы

Внешние устройства хранения информации

Устройства произвольного доступа (например, магнитные диски). Файлы с

постоянной длиной записи. Местоположение записи файла определяется адресом.
Устройства последовательного доступа (например, стример). Файлы с переменной длиной записи

A = BA + (k-1)*LZ + 1
A3= BA+(3-1)*20+1=BA+41

Слайд 3

Физическая модель Далее будем рассматривать только файлы с постоянной длиной записи

Физическая модель

Далее будем рассматривать только файлы с постоянной длиной записи
Упрощение: для

каждой таблицы отдельный файл
Слайд 4

Физическая модель Логическая запись (запись) – кортеж отношения Физическая запись (страница,

Физическая модель

Логическая запись (запись) – кортеж отношения
Физическая запись (страница, блок) –

единица обмена данными между первичной и внешней памятью

Порядок выполнения операции над данными (в общем случае):
1) Найти страницу на внешнем носителе, содержащую нужную запись
2) Прочитать страницу в первичную память
3) Найти нужную запись в прочитанной странице
4) Выполнить действие над записью в первичной памяти
5) Сохранить страницу с измененной записью во вторичной памяти

БД

страницы

Слайд 5

Физическая модель На производительность СУБД влияют: Организация файла: распределение данных по

Физическая модель

На производительность СУБД влияют:
Организация файла: распределение данных по записям и

страницам на внешнем устройстве
последовательная неупорядоченная организация
последовательная упорядоченная организация
хеширование данных
Метод доступа: алгоритм сохранения и извлечения записей из файла с определенной организацией хранения данных
Слайд 6

Последовательная неупорядоченная организация файла Последовательный неупорядоченный файл (куча) – простейший тип

Последовательная неупорядоченная организация файла

Последовательный неупорядоченный файл (куча) – простейший тип структуры

файла
Записи размещаются в файле в том порядке, в котором добавляются – новая запись на последнюю страницу
При удалении записи место повторно не используется, поэтому потеря эффективности со временем. Требуется периодическая реорганизация
Требуется периодически перестраивать файл
Поиск записи – линейный поиск, перебор всех страниц (чтение страницы, поиск внутри страницы)
Удаление записи – найти нужную страницу, загрузить, изменить страницу в памяти, сохранить на место
Такая организация эффективна при пакетной загрузке данных (последовательных)
Слайд 7

Метод дихотомии На примере упорядоченного массива: Найти срединный элемент. Выбирается та

Метод дихотомии

На примере упорядоченного массива:
Найти срединный элемент. Выбирается та половина на

которая должна содержать заданное значение (по результатам сравнения значения со значениями левой и правой границ половин)
Если элемент не является границей, то в качестве исходного элемента рассматривается выбранная половина. Переход к п.1.
Среднее количество операций ~ln2(n), а последовательный поиск ~n

16?

итерации

Слайд 8

Последовательная упорядоченная организация файла В последовательных упорядоченных файлах записи упорядочены по

Последовательная упорядоченная организация файла

В последовательных упорядоченных файлах записи упорядочены по одному

или нескольким полям
Поиск выполняется быстро методом дихотомии (бинарный поиск)
Операция вставки – трудоемкая:
найти страницу для вставки
если на странице есть свободные места – перестроить записи на странице, если нет – то надо сдвинуть все записи к концу. Вставка в начало наиболее трудоемкая
Удаление – быстрая операция, т.е. после удаления файл не перестраивается

Модификация: область переполнения – последовательное неупорядоченное хранение

Слайд 9

Хеширование данных Основная идея – записи в файле прямого доступа находятся

Хеширование данных

Основная идея – записи в файле прямого доступа находятся в

«перемешанном» порядке (hash = путаница): записи с близкими значениями ключа находятся далеко друг от друга. Поэтому при вставки записи велика вероятность того, что соответствующее место будет свободно и перестраивать файл не потребуется
Функция перемешивания A = h(K), где K – значение ключа записи, A – адрес в файле. K – числовое поле, либо однозначно приводится к числовому виду.
Например, A = K mod N, где N – некоторое заранее заданное число, mod – операция получения остатка от деления по модулю N.

близкие значения ключей, дальние адреса

конфликты – одинаковые значения адресов

Слайд 10

Хеширование данных Коллизия: h(Ki) = h(Kj) Значения таких ключей – «синонимы»

Хеширование данных

Коллизия: h(Ki) = h(Kj)
Значения таких ключей – «синонимы»
Способы разрешения коллизий:
Область

переполнения:
несвязанная
связанная
Свободное замещение
Слайд 11

Хеширование данных Несвязанная область переполнения Основная область Область переполнения (последовательное неупорядоченное

Хеширование данных

Несвязанная область переполнения

Основная область

Область переполнения (последовательное неупорядоченное хранение)

Адрес =
PK

mod5

PK

Слайд 12

Хеширование данных Связанная область переполнения Область переполнения (связанный список) Основная область

Хеширование данных

Связанная область переполнения

Область переполнения (связанный список)

Основная область

Слайд 13

Хеширование данных Свободное замещение Основная область вставка предыдущий следующий

Хеширование данных

Свободное замещение

Основная область

вставка

предыдущий

следующий

Слайд 14

Индексные файлы Снижение времени поиска: Бинарный поиск Часть индексного файла – в оперативной памяти

Индексные файлы

Снижение времени поиска:
Бинарный поиск
Часть индексного файла – в оперативной памяти

Слайд 15

Файлы с плотным индексом Индексный файл Основная область Страница 1 Страница

Файлы с плотным индексом

Индексный файл

Основная область

Страница 1

Страница 2

Новая запись

Новая индексная запись

Слайд 16

Файлы с неплотным индексом Индексный файл Основная область Страница 1 Страница 2 Новая запись

Файлы с неплотным индексом

Индексный файл

Основная область

Страница 1

Страница 2

Новая запись

Слайд 17

Многоуровневые индексы Индексный файл 2 Основная область Индексный файл 1

Многоуровневые индексы

Индексный файл 2

Основная область

Индексный файл 1

Слайд 18

Вторичные ключи Вторичный ключ – произвольный набор атрибутов, которому соответствует набор

Вторичные ключи

Вторичный ключ – произвольный набор атрибутов, которому соответствует набор искомых

записей в операции выборки (значения ключа – не уникальные)
Слайд 19

Вторичные ключи Значения вторичного ключа Номер страницы со списком адресов Значения

Вторичные ключи

Значения вторичного ключа

Номер страницы со списком адресов

Значения вторичных ключей могут

быть изменены, поэтому перестройка индекса требуется не только при INSERT и DELETE, но и при UPDATE
Слайд 20

Индексы в Transact-SQL Виды индексов: Кластерный (неплотный индекс). Один на таблицу.

Индексы в Transact-SQL

Виды индексов:
Кластерный (неплотный индекс). Один на таблицу. Для первичного

ключа автоматически создается кластерный индекс, если не указан тип NONCLUSTERED.
Некластерный (плотный индекс). До 249 для таблицы. Если в таблице не существует кластерный индекс, то ссылки указывают на записи в основной области. Если в таблице имеется кластерный индекс, то все некластерные индексы ссылаются на записи кластерного индекса. Это позволяет избежать перестройку некластерных индексов при упорядочении записей (как это требует кластерный индекс). Если допускаются неуникальные значения ключей, то сервер БД добавляет к ним дополнительные значения, делая их уникальными.
Уникальность:
Уникальный индекс (кластерный или некластерный) гарантирует уникальность значений в индексируемом столбце. Вставка дубликатов будет отклоняться. Вместо требования уникальности индекса можно использовать ограничения PRIMARY KEY или UNIQUE.
Не уникальный индекс. Не гарантирует уникальность значений.

Длинные (символьные и составные) ключи снижают производительность и требуют затрат памяти (значения ключей дублируются в индексе)
Индексирование увеличивает время вставки, поэтому индексирование должно быть оправданным. Для часто изменяемых столбцов следует использовать некластерные индексы.

Слайд 21

Индексы в Transact-SQL Способы задания индексов: Автоматическое создание при объявлении первичного

Индексы в Transact-SQL

Способы задания индексов:
Автоматическое создание при объявлении первичного ключа. Объявление

PRIMARY KEY создает кластерный индекс.
Автоматическое создание при объявлении ограничения целостности UNIQE. Объявление UNIQUE создает уникальный некластерный индекс. Их может быть более одного.
Команда CREATE INDEX
Слайд 22

Индексы в Transact-SQL Сокращенное описание CREATE [ UNIQUE ] [ CLUSTERED

Индексы в Transact-SQL

Сокращенное описание
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED

] INDEX index_name
ON table ( column [ ASC | DESC ] [ ,...n ] )     
[ WITH ( [ ,...n ] ) ]    

::=
{    
PAD_INDEX = { ON | OFF }   |
FILLFACTOR = fillfactor   |
IGNORE_DUP_KEY = { ON | OFF }    
}

index_name – имя индекса должно быть уникальным в пределах одной таблицы
PAD_INDEX – резервировать свободное пространство на страницах (используется вместе с FILLFACTOR. Используется только при перестроении индекса
FILLFACTOR – задает процент (от 1 до 100) заполнения страниц. Используется только при перестроении индекса
IGNORE_DUP_KEY – используется только для уникальных индексов. Если параметр указан, то дубликаты игнорируются. Если параметр не указан, то откатывается вся транзакция