@taynoeya
фрилансер

Как количество файлов влияет на работу сервера?

Искала но так и не нашла четкого ответа, как колличество директорий и файлов влиет на работу сервера и насколько ощутима будет разница, если будет, при количестве директорий около 300тыс, в каждой по несколько (до 20) файлов. то что нельзя их все в одну диреторию класть я уже поняла, ну а если они разбиты по каталогам? насколько актуальный этот вопрс, чтобы скажем подумать о том чтобы хранить файлы на другом сервере.
и второй вопрос - связанный. при доступе к сайту обычно обрабатывают чпу-урл через пхп и ищут в базе, у меня всегда был вопрос почему не создавать реальные директории и в них класть php файлик с id и т.п чтобы потом быстро найти данные в б.д.
  • Вопрос задан
  • 1186 просмотров
Решения вопроса 1
DevMan
@DevMan
само по себе кол-во файлов (даже в одной директории) никак не влияет на производительность.
а вот, например, при получении листинга такой директории или ее бекапе буду возникать тормоза.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
saboteur_kiev
@saboteur_kiev Куратор тега Веб-разработка
software engineer
1. Скорость работы с кучей файлов теоретически такая же как и с базой. Но вот кеширование файловой системы и базы идет по разному. И если при обращении к таблице, она у вас сразу вся закешируется, то вот закешировать 300.000 файлов/каталогов не так просто.

2.
При доступе к сайту обычно обрабатывают чпу-урл через пхп и ищут в базе, у меня всегда был вопрос почему не создавать реальные директории и в них класть php файлик с id и т.п чтобы потом быстро найти данные в б.д."


Потому что ID у файлика достаточно сложно раскладывается на каталоги таким образом, чтобы это было равномерно. файлы могут добавляться и удаляться не удобно, в итоге может выйти в одном каталоге 100 файлов, в другом 100 тысяч, и перераспределять все это на ходу - не выйдет. Поэтому гораздо проще файлы распределять не в зависимости от ID, а в зависимости от наполнения папок, а путь к файлу уже хранить в базе, в которой есть ID.
Ответ написан
Комментировать
Sanes
@Sanes
Если коротко, то влияет. Насколько будет заметно вам никто не скажет, много условий.
База данных тоже состоит из файлов.
Ответ написан
Комментировать
AlexanderShapoval
@AlexanderShapoval
PHP maker
Юлия, если поле ЧПУ в базе проиндексировано - то поиск по нему будет проходить достаточно быстро.
Если речь идет о маленьких сайтах-визитках - то тут не принципиально в чем делать хранение данных, в файлах или БД. Если делать большие сайты (блоги, регистрация, комментарии, каталог товаров) - то уже на этапе проектировки БД - этот вопрос сам собой отпадает. Почитай про реляционные БД. На файлах это организовать невозможно, так как между полями БД существуют отношения, а между файлами их сделать нельзя. К файлам нельзя применить сложные SQL запросы.
Ко всему прочему - современные БД - это мощное программное обеспечение ориентировано на надежность и скорость.

Рекомендую к просмотру серию видео с HightLoad++. Много докладов о сервисах выдерживающих высокие нагрузки
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы