Разница между последовательной и случайной записью

в чем разница между последовательной записью и случайной записью в случае :- 1) дисковые системы 2) SSD [Флэш-устройство ] на основе систем

когда приложение пишет что-то, и информация/данные должны быть изменены на диске, то как мы знаем, является ли это последовательной записью или случайной записью.До этого момента запись не может быть различена как "последовательная" или "случайная".Запись просто буферизуется, а затем применяется к диску, когда мы сбросим буфер.

пожалуйста, поправьте меня, если я ошибаюсь.

1 ответов


когда люди говорят о последовательный vs случайные записывает в файл, они обычно проводят различие между записью без промежуточных поисков ("последовательных"), против шаблона поиска-записи-поиска-записи-поиска-записи и т. д. ("случайный.)"

различие очень важно в традиционных дисковых системах, где каждый поиск диска займет около 10 мс. Последовательная запись данных на тот же диск занимает около 30 МС на МБ. Поэтому, если вы последовательно написать 100 МБ данных на диск, это займет около 3 секунд. Но если вы сделаете 100 случайных записей по 1 МБ каждая, это займет в общей сложности 4 секунды (3 секунды для фактического написания и 10 мс*100 == 1 секунда для всех поисков).

как каждая случайная запись становится меньше, вы платите все больше и больше штрафа на диске. В крайнем случае, когда вы выполняете 100 миллионов случайных 1-байтовых записей, вы все равно получите 3 секунды для всех фактических записей, но теперь у вас будет 11.57 дни стоит стремиться сделать! Очевидно, что степень, в которой ваши записи последовательны и случайны, может действительно повлиять на время, необходимое для выполнения вашей задачи.

ситуация немного отличается, когда дело доходит до вспышки. С flash у вас нет физической головки диска,которую вы должны перемещать. (Это где цена поиска 10ms приходит от для традиционного диска). Однако флэш-устройства, как правило, имеют большие размеры страниц (наименьший "типичный" размер страницы составляет около 512 байт согласно Википедия, и размеры страниц 4K также являются общими). Поэтому, если вы пишете небольшое количество байтов, flash все еще имеет накладные расходы, так как вы должны прочитать всю страницу, изменить байты, которые вы пишете, а затем записать всю страницу. Я не знаю характерных чисел для вспышки с моей головы. Но эмпирическое правило заключается в том, что на flash, если каждая из ваших записей обычно сопоставима по размеру с размером страницы устройства, вы не увидите много разница в производительности между случайными и последовательными записями. Если каждая из ваших записей мала по сравнению с размером страницы устройства, вы увидите некоторые накладные расходы при выполнении случайных записей.

теперь для всего вышеперечисленного, это правда, что на уровне приложения многое скрыто от вас. В ядре есть слои, контроллер диска/flash и т. д. это может, например, вставлять неочевидные поиски в середине вашего "последовательного" письма. Но в большинстве случаев пишу, что " выглядит" последовательный на уровне приложения (без поиска, много непрерывного ввода-вывода) будет иметь производительность последовательной записи при записи, которая "выглядит" случайной на уровне приложения, будет иметь (как правило, хуже) производительность случайной записи.