Разница между последовательной и случайной записью
В чем разница между последовательной и случайной записью в случае:- 1) дисковых систем 2) систем на основе SSD [флэш-устройств]
Когда приложение записывает что-то и информация / данные должны быть изменены на диске, тогда как мы узнаем, является ли это последовательная запись или случайная запись. До этого момента запись не может быть определена как "последовательная" или "случайная". Запись просто буферизуется и затем применяется к диску, когда мы очистим буфер.
Пожалуйста, поправьте меня, если я ошибаюсь.
1 ответ
Когда люди говорят о последовательной или случайной записи в файл, они обычно проводят различие между записью без промежуточных операций поиска ("последовательная") и моделью поиска-записи-поиска-записи-поиска-записи и т. Д. ("случайный").
Различие очень важно в традиционных дисковых системах, где каждый поиск диска занимает около 10 мс. Последовательная запись данных на этот же диск занимает около 30 мс на МБ. Таким образом, если вы последовательно записываете 100 МБ данных на диск, это займет около 3 секунд. Но если вы делаете 100 случайных записей по 1 МБ каждая, это займет всего 4 секунды (3 секунды для фактической записи и 10 мс *100 == 1 секунда для всех операций поиска).
По мере того как каждая случайная запись уменьшается, вы платите все больше и больше штрафа за поиск диска. В крайнем случае, когда вы выполняете 100 миллионов случайных однобайтовых записей, вы все равно получаете 3 секунды на все фактические записи, но теперь у вас будет 11,57 дней на поиск! Очевидно, что степень, в которой ваши записи являются последовательными и случайными, действительно может повлиять на время, необходимое для выполнения вашей задачи.
Ситуация немного отличается, когда дело доходит до вспышки. При использовании флэш-памяти у вас нет головки физического диска, которую вы должны перемещать. (Вот откуда берется стоимость поиска в 10 мс для традиционного диска). Однако флэш-устройства, как правило, имеют большие размеры страниц (наименьший "типичный" размер страницы составляет около 512 байт согласно Википедии, и размеры страниц 4K также являются общими). Таким образом, если вы пишете небольшое количество байтов, у флэш-памяти по-прежнему есть накладные расходы: вы должны прочитать всю страницу, изменить байты, которые вы пишете, а затем записать обратно всю страницу. Я не знаю характерные цифры для вспышки на макушке. Но практическое правило заключается в том, что на флэш-памяти, если каждая из ваших записей обычно сопоставима по размеру с размером страницы устройства, вы не увидите большой разницы в производительности между случайной и последовательной записью. Если каждая из ваших записей невелика по сравнению с размером страницы устройства, то при выполнении случайной записи вы увидите некоторые издержки.
Теперь для всего вышесказанного, это правда, что на уровне приложений многое скрыто от вас. В ядре, контроллере диска / флэш-памяти и т. Д. Есть слои, которые могут, например, вставлять неочевидные поиски в середине вашей "последовательной" записи. Но в большинстве случаев запись, которая "смотрит" последовательно на уровне приложения (без поиска, много непрерывного ввода-вывода) будет иметь производительность последовательной записи, тогда как запись, которая "выглядит" случайным образом на уровне приложения, будет иметь (как правило, хуже) произвольная запись производительности.