Количество вычислений блочных считываний с учетом оператора реляционной алгебры

cs.stackexchange https://cs.stackexchange.com/questions/11492

Вопрос

Так что я только начинаю узнавать о обработке запросов и тому подобное в базах данных, и у меня есть некоторые проблемы. Я не очень понимаю, как вычислить минимальное количество чтения блоков, учитывая отношение и запрос, я думаю, вы могли бы сказать. Если бы кто -то мог бы мне помочь, это будет очень оценено. Вот пример, над которым я работаю:

  • R1 (A, B, C) A является первичным ключом, а C - внешний ключ к R2.C
  • R2 (C, D, E) C является первичным ключом
  • R1 имеет 20 000 записей, 200 записей на блок. Существует первичный индекс B+-tree на A с высотой h = 3
  • R2 имеет 45 000 записей, с 4500 записями на блок. Существует первичный индекс B+-tree на C с высотой hc = 3 и вторичным индексом B+-tree на D с высотой hd = 2.

Найдите минимальное количество чтений блока для каждого оператора. Я могу держать только один блок памяти для каждого отношения за раз.

  • Где b = 1 (r1)
  • Где c = 1 (r2)

Я не ищу ответов. Я ищу объяснение того, как на самом деле это сделать, и направлять меня по пути. Aka уравнения и т. Д. Трудно найти что -нибудь полезное онлайн вообще.

Это было полезно?

Решение

select * from R1 Where B=1

У вас нет указателя в поле поиска (B), поэтому вам нужно сделать полное сканирование таблицы. Это означает, что вы забираете все блоки отношения один за другим и берите записи, которые удовлетворяют условию B=1. Анкет (Стоимость - 200000/200 = 200 блоков)

select * from R2 Where C=1

Не хватает информации - вы должны знать (по крайней мере приблизительно), сколько записей в R2 удовлетворяют условию C=1Анкет Например, если все записи в R2 имеют C=1 Вы сделаете полное сканирование таблицы, как выше (стоимость - 45000/4500 = 10 блоков), с другой стороны, если у вас есть только одна запись с C=1 Вы прочитаете 3 блока индекса и еще один на диске (стоимость 3 + 1 = 4 блока)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с cs.stackexchange
scroll top