Фёдор Романов

Рейтинг
22
Регистрация
27.08.2008

Смотря как настроена база, и на чём написан сборщик из пачки файлов, как часто к этим файлам обращаются.

Давайте рассмотрим как обрабатывается запрос к базе.

1 Запускается приложение (вероятно скрипт на php?)

2 Делается запрос через unix или inet socket.

3 База парсит запрос и ищет в себе наличие соответствий.

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

то некоторе количество данных будут в памяти mysl'я. Соответственно он выполнит запрос быстро. Если на машине с базой недостаточно памяти, или mysql настроен так, что не может выделять достаточное количество памяти для кэширования, то он эти действия будет выполнять на жестком диске.

4 результат по тому-же сокету едет к скрипту который формирует ответ и выдаёт посетителю.

Рассмотрим вариант, когда выгребается пачка файлов.

1 Пусть запускается всё тот-же php скрипт

2 Последовательно считывает в свой буфер в памяти пачку файлов с диска.

и формирует ответ.

Тут есть тонкость. файловая система имеет свои кэши. Если к этим файлам идут обращения чаще, чем у другим, то высока вероятность того, что файлы уже в этом кэше.

3 Выдаёт ответ посетителю сайта.

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

Однако, mysql это userland, тоесть процесс выполняющийся на уровне пользователя, а вот файловая система работает на уровне ядра.

Кроме того, обращения к mysql'ю через сокет это лишние накладные расходы как на cpu, так и на память. Что тоже сказывается на скорости выполнения общей задачи.

Мой (imho) вывод. При прочих равных быстрее будет выдача, если собирать файлы с диска.

Готов приобрести светотехнику.

Двадцать одна тысяча рублей.

Если в январе переоформим, то забираю за 11999р.

Девятнадцать тысяч рублей.

Всего: 80