
Я читаю пример Megatron 747 из книги "Database System Complete Book 2nd edition" (Пример 13.2 стр. 565-566). Они дают следующую информацию:
- 8 пластин = 16 поверхностей
- 2^16 = 65536 дорожек на поверхность
- 256 секторов на дорожку
- 4096 байт на сектор
При расчете среднего времени поиска они делают следующий расчет:
1 + (65536/3)/4000 = 6.46 millisecond.
Я понимаю, что 65536 — это указанное количество треков, а 1/3 — для усреднения расстояния, но я не могу понять, зачем они добавили 1 и откуда взяли 4000.
Может ли кто-нибудь мне помочь?
решение1
Вам даже не нужно ничего знать по этой теме (на самом деле, то, что вы, как вам кажется, знаете, просто сбивает вас с толку, речь идет овремя поискатолько). Просто найдите все вхождения 4000
в описание (там только одно) и связанное с ним вхождение 1 millisecond
в том же абзаце.
ЦитатаСистема баз данных - Полная книга (2-е издание), выделено мной:
Для перемещения головки блока между цилиндрами требуетсяодна миллисекунда для запуска и остановки, плюсодна дополнительная миллисекунда на каждые 4000 пройденных цилиндровТаким образом, головки перемещаются на одну дорожку за 1,00025 миллисекунды и перемещаются от самой внутренней до самой внешней дорожки, на расстояние в 65 536 дорожек, примерно за 17,38 миллисекунды.
Перефразируя расчет: требуется 17,38 мс, чтобы переместиться от самого внутреннего к самому внешнему цилиндру. Убирая 1 мс на старт/стоп, получаем 16,38 мс для фактического перемещения. Треть этого (перемещение на среднее расстояние по данным автора) составляет 5,46. Добавьте 1 мс на старт/стоп обратно, и вы получите ответ.