
Задачи / Задача 4, вариант 15
.docx
Задача 4
Вариант |
A |
B |
C |
D |
E |
15 |
1000000 |
6144 |
65 |
8 |
12 |
Для начала нам необходимо найти количество пар «ключ-указатель» Так как длина ключевого поля равна 65 байтам, а размер указателя – 8 байтам, с учетом расходов на заголовок блока в 12 байт и размером блока 6144-байтовый заголовок тогда поместить 84 пары «ключ-указатель».
6144 – 12/65 + 8 = 84
Теперь перейдем к количеству блоков, которое понадобится для построения плотного индекса, для этого изначальное количество кортежей необходимо разделить на количество пар «ключ-указатель»:
1000000/84 = 11905
Теперь перейдем к количеству операций, которое понадобится для нахождения ключа. Для построения плотного индекса потребуется 10 000 блоков, или 40 Мбайт. Такой индекс при определенных обстоятельствах вполне может быть загружен в буферы оперативной памяти – все зависит от ее общего объема и размеров области, свободной от других данных.
По алгоритму бинарного поиска
log2(11905) = 13,53
Для отыскания нужного ключа придется выполнить 13 или 14 обращение к блокам индекса. Так как при использовании любого варианта бинарного поиска адресуется только небольшое подмножество всех блоков, например, блок в середине списка, далее блоки на позициях 1/4 и 3/4, затем на позициях 1/8, 3/8, 5/8, 7/8 и т.д.) даже в том случае, если разместить весь индекс в памяти нельзя, загрузить основные блоки все-таки удастся и поэтому для извлечения записи с любым ключом потребуется в худшем случае 14 операция.