100к файлов в одной папке

1 23
edogs software
На сайте с 15.12.2005
Offline
775
#21
dimas333:
edogs советы с редиректами, хаками и прочими перенаправлениями - это очень плохие советы.

Это хорошие, практические советы не раз спасшие отнюдь не один реальный сайт:) При чем без покупки "крутого дорогого сервера" и без "тонкой дорогой работы по настройке ФС системным администратором".

dimas333:
Сами подумайте, что быстрее: отыскать файл в таблице и это на уровне ядра или распарсить регулярку, сопоставить и потом опять отыскать файл?

Регулярки выполняются настолько быстро по сравнению с дисковыми операциями, что даже странно поднимать об этом вопрос.

Плюс ТС все равно надо думать о физическом разнесении этой файлопомойки по разным местам (хотя бы из соображений нагрузки/быстродействия от простого считывания файлов и возможности более легких бакапов). "Регулярки/кэширование/редиректы" (3,4 вариант) как раз позволят это сделать с минимумом вмешательством в архитектуру (раз уж это важно, хотя самое мудрое это изменить архитектуру), позволяя разнести это не только по папкам, а вообще по разным серверам.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
K
На сайте с 11.08.2005
Offline
172
kpv
#22
phenomena:

С точки зрения рядового пользователя, понимаю так:
чтение диска: 25кб * 10 картинок * 100 посетителей * 1 секунда = 25000 килобайт или 24,4 мегабайт в секунду

Нет, тут проблема ни в диске и не в чтении данных.

формула такая:

Чтобы прочитать хотя бы один файл из каталога надо сосканировать

100к inode чтобы найти нужную. Если все inode в кэше находятся, то процессор тупо перебирает каждый раз эти inode, чтобы найти нужную.

то есть к верхней формуле добавляется

10 (картинок)*100 посетителей = 1000 раз надо пройтись по 100к inode (в худшем случае). Диск при этом, в большинстве случаев, busy = 0% хоть SSD, хоть SATA 5400 rpm

Задача разнести такие данные по подкаталогам сильно зависит от скриптов проекта у ТС. Можно решить и за 5 минут написания дополнительного кода, а можно и на ext4 попробовать переползти - там сортировку усовершенствовали. Затратность оптимизации сложно подсчитать без дополнительных данных о проекте и на чём он работает.

Хостинг в Рестоне (http://ruweb.ws/?page=price), Москве (http://ruweb.net/?page=price&type=unlim), Нижнем Новгороде (http://ruweb-nn.ru/hosting.html). Регистрация доменов, аренда серверов с администрированием.
lastuser
На сайте с 04.09.2010
Offline
101
#23

kvp, давным-давно для поиска файлов используется btree/htree, которое работает на порядок быстрее прямого перебора. Но и htree не панацея для данного случая: ветка папки будет занимать почти половину всего дерева, а чтобы найти файл, ядру придется пройти все дерево, т.е. при частом рандомном обращении к файлам будет ощутимая потеря производительности на фоне повышенной загрузки процессора. Поэтому если есть необходимость хранить много мелких файлов, то лучше использовать ReiserFS, для этого заточенную, и не насиловать extfs.

1 23

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий