Подтвердить что ты не робот

Проблемы с производительностью при написании больших файлов?

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

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

В файле могут возникнуть проблемы с чтением или поиском, но сейчас я больше заинтересован в том, чтобы знать, может ли запись быть затронута каким-либо образом. В поисках экспертного совета.

Изменить: То, как я думал, что OS только должен открыть дескриптор файла и вставить данные в файловую систему. Существует некоторая корреляция с размером файла, так как вы должны продолжать добавлять данные в конец файла и всякий раз, когда блок данных заполнен, ОС назначит другой блок этому файлу. Как я уже говорил, могут возникать проблемы при чтении и поиске из-за дефрагментации файловых блоков, но при написании я не мог найти большой разницы.

4b9b3361

Ответ 1

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

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

Меня больше беспокоит управляемость огромными файлами: медленная резервная копия, медленная копия, замедление просмотра и т.д.

Ответ 2

Я не эксперт, но я все равно попытаюсь ответить.

Большие файлы могут занять больше времени для записи на диск, и на самом деле это не проблема программирования. Это проблема файловой системы. Возможно, есть файловые системы, у которых таких проблем нет, но в Windows большие файлы не могут записываться в один кусок, поэтому их фрагментация займет время (по той простой причине, что голова должна перейти на другой цилиндр). Предполагая, что мы говорим о "классических" жестких дисках...

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