Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД (Дубов И.Р) / 02 Физические модели баз данных.ppt
Скачиваний:
51
Добавлен:
07.03.2016
Размер:
1.09 Mб
Скачать

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

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

PK

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

 

0

20

Петров2

Адрес =

1

11

Иванов1

PK mod5

2

7

Петров

 

 

3

18

Сидоров1

 

4

24

Иванов2

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

26

Сидоров3

27

Пушкин

31

Пушкин2

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

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

 

 

 

Адрес в области

 

 

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

переполнения

 

 

 

0

20

Петров2

-

1

11

Иванов1

2

2

7

Петров

1

3

18

Сидоров1

-

4

24

Иванов2

-

 

Область переполнения

 

 

(связанные списки синонимов)

Вставка новых синонимов

0

26

Сидоров3

-

в начало списка

 

1

27

Пушкин

-

 

2

31

Сидоров4

0

 

 

3

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

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

 

 

 

 

предыдущий

 

 

следующий

 

 

 

 

Основная

 

 

 

 

 

0

22

Петров2

-

-

 

 

 

1

12

Иванов1

-

9

N = 11

 

 

2

24

Петров

-

6

 

 

3

14

Сидоров1

-

-

 

 

 

4

26

Иванов2

-

-

 

 

 

5

45

Сидоров4

9

8

 

 

 

6

13

Пушкин

2

-

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

34

Сидоров4

5

-

 

 

 

9

23

Сидоров5

1

5

 

 

 

 

вставка

10

 

 

 

 

 

 

 

 

 

 

 

?

23

Сидоров5

?

?

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

Снижение времени поиска:

Бинарный поиск

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

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

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

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

Страница 2 Страница 1

Значение

Номер

ключа

записи

5

4

11

6

12

1

107

5

Ключ

Неключевые атрибуты

12

 

5

107 11

Новая

индексная

запись

Новая запись

2

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

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

 

Значение

Номер

 

ключа

страницы

 

первой

 

1

записи

 

Страница

5

1

 

 

12

2

Страница 2

 

 

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

Ключ

Неключевые атрибуты

5

 

запись

2

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

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

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

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

 

 

 

Значение

Номер

Ключ Неключевые атрибуты

Значение

Номер

 

ключа

страницы

2

ключа

страницы

первой

 

3

первой

 

записи

 

записи

 

2

 

6

2

 

 

 

9

 

 

23

 

 

 

 

15

 

9

 

 

 

 

 

 

 

10

 

 

23

 

13

 

 

 

 

15

 

 

 

 

18

 

 

 

 

21

 

 

 

 

23

 

 

 

 

33

 

 

 

 

46

 

 

 

 

53

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

Вторичный ключ произвольный

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

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

Значения

Номер страницы

0

со списком

1

вторичного

адресов

ключа

5

 

 

 

100

1

 

150

3

8

 

 

 

 

9

 

 

2

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

7

6

могут быть изменены,

3

поэтому перестройка индекса

 

требуется не только при

 

INSERT и DELETE, но и при

4

UPDATE

10

 

 

11

Ключ Неключевые атрибуты

100

100

100

150

150

100

150

150

100

100

150 150

Индексы в Transact-SQL

Виды индексов:

Кластерный (неплотный индекс). Один на таблицу. Для первичного ключа автоматически создается кластерный индекс, если не указан тип NONCLUSTERED.

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

Уникальность:

Уникальный индекс (кластерный или некластерный) гарантирует уникальность значений в индексируемом столбце. Вставка дубликатов будет отклоняться. Вместо требования уникальности индекса можно использовать ограничения PRIMARY KEY или UNIQUE.

Не уникальный индекс. Не гарантирует уникальность значений.

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