Скачиваний:
51
Добавлен:
10.05.2015
Размер:
186.88 Кб
Скачать

Оценка скоростных характеристик хешированного файла

Определим количество доступов, необходимых для поиска записи с заданным ключом V в хешированном файле каждого из операций поиска включения, модификации и удаления требует доступа к внешней памяти для получения нужного блока справочника участка. Затем по указателю нужно загрузить в ОЗУ блок с записями, содержащими запись с ключом V.

Таким образом минимальная оценка такова. Если справочник содержит один блок нужен один доступ – для получения указателя. Еще один доступ – для получения блока с записью (предполагается, что записи находятся в одном блоке).

Еще один доступ нужен при операциях удаления и модификации. Итак для хеш – функции Кф ≥ 3.

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

Индексные файлы, это файлы, состоящие из основного файла, в котором размещаются записи индекса – файла, в котором размещаются в сортированные первичные ключи основного файла и ссылки на место расположения записей основного файла.

В зависимости от организации индексной и основной областей различают 2 типа файлов, с плотным индексом и неплотным индексом.

У этих файлов есть еще дополнительные названия:

Файлы с плотным индексом называются также индексно – прямыми файлами, а файлы с неплотным индексом – индексно – последовательными файлами смысл этого наименования мы уточним позже.

Неплотные индексы

Файлы с неплотным индексом имеют сортированные записи основного файла расположенные в основной области памяти блоках.

Идея неплотного индекса взята из телефонной книги, у которой вынесены алфавитные буквы. По ним мы осуществляем быстрый просмотр и выход на нужную букву . Затем поиск продолжается уже внутри записей на эту букву.

Блок I1

Блок I2

Значение ключей 1 записи каждого заполненного блока основной записи размещаются в сортированном виде в блоках индексной области памяти I1÷Im . В этих записях размещаются ссылки на основную запись.

Быстродействие индексных файлов определяется стратегиями поиска. Рассмотрим стратегии поиска и их скоростные характеристики.

Стратегии поиска

  1. Линейный поиск

При поиске в индексных файлах с неплотным индексом необходимо ввести условие обработки блока индексного файла.

Пусть заданы блоки индексного файла в следующем виде:

Ключ Адрес ссылки

Нам необходимо найти запись с ключом V2. В этом случае в оперативную память загружается тот блок, для которого

V1< V2 <V3

И для ключа V1используют термин «ключ V1 покрывает V2».

При линейной стратегии поиска просматриваются все записи индексного файла до тех пор, пока не будет найдена запись покрывающая искомую запись.

Линейный поиск в индексном файле гораздо эффективнее линейного поиска в основном файле. Рассмотрим это: Пусть в основном файле содержится всего записей - m2 в блоке основного файла - Сгл – записей а в блоке индексного файла содержится - Син записей.

В этом случае в основном файле будет

Mгл/ Сгл – блоков

А в индексном файле.

Будет (Mгл/ Сгл)/ Син– блоков

т.к. Mгл/ Сгл – это количество записей в индексном файле.

Пусть поиск у нас будет равновероятностный т.е. для нахождения требуемой записи необходимо просмотреть половину общего количества блоков.

Сравним скоростные характеристики поиска при линейной стратегии в простом файле и индексном файле с неплотным индексом.

Если поиск равновероятностный, если у нас нет индексного файла то там необходимо иметь:

Кg = ½ * m2/c2

В случае индексного файла в нем будет содержаться m2/c2 записей. Если в блоке индексного файла содержится Син– записей, то индексный файл будет содержать

m2/c2* Син– блоков

А количество доступов в индексном файле нахождение указателя записи с заданным ключом V2 будет равно

Кg = ½ * m2/ c2* Син

Для нахождения записи с ключом V2 нужен еще один доступ

Кg = 1 + (½ * m2/ c2* Син)

И один доступ для размещения модифицированной записи , т.е.

Кg = 2+ (½ * m2/ c2* Син)

Пример:

m2 = 105 записей

c2 = 10

Сгл = 100

Для поиска только в главком файле не обходимо

Кg = 105 /2 = 5*104 – доступность

Для поиска в индексном файле не обходимо

Кg = (105 /2*103 ) +1 = 5*102 – доступность

т.е. разница на два порядка.

Двоичный поиск (вторая стратегия поиска)

Стратегия второго поиска связана с методом деления сортированного адресного пространства пополам и определение, в какой половине находиться искомое значение ключа.

Пусть в индексе имеется 8 записей и значение их ключем совпадает с номерами записей т.е.

1

2

3

4

5

6

7

8

Нам не обходимо найти запись с ключом равным 3.

1 шаг – дает нам значение ключа равное 4

2 шаг – дает нам значение ключа равное 2

3 шаг – дает нам значение ключа равное 3.

т.е. для поиска требуемой записи мы потратим 3 шага.

Обозна чим через n – число записей, и Km – количество шагов для поиска, тога Km = log2 n

Если 16>n>8,то

Km = log2 n + 1

Перейдем теперь к блокам индекса нашего примера.

Пусть нам необходимо найти запись с ключами то при V2 =45 – 4 блока, то при 2-й стратегии мы имеем:

1 шаг – Загружается блок БI3

2 шаг – Загружается блок БI2

3 шаг – Загружается блок БI1

Здесь есть ссылка на адрес записи с ключом 45 затем, Загружается блок с записую, имеющий ключ 45.

Производиться ее модификация и блок поять Загружается на место.

Таким образом

Kg = log2 n + 1 + 1 +1

log2 n + 1 – поиск блок индексного файла с ключом V2

1 – загрузка блока в ОЗУ с записью, имеющей ключ V2 = 45, модификация записи

1 – загрузка блока с модифицированной записью из ОЗУ во внешнюю память

Здесь nин – количество блоков индексного файла

Для примера имеем:

nин = mгл/cгл* Син = 103

и Kg = log2103 + 3 ≈ 13 доступов

т.е. количество доступов уменьшилось по сравнению с поиском в основном файле на 4 порядка.

Соседние файлы в папке Лекции по Базам данных - версия 9.01.10