BLOB или нет - кэширование изображений - PullRequest
1 голос
/ 31 октября 2011

Я занимаюсь разработкой сайта, который обрабатывает пользовательский ввод, в результате чего создается графическое изображение jpg, нарисованное с использованием библиотеки GDI +. Для повышения производительности я генерирую эти изображения только один раз, затем сохраняю их на диск. Для дальнейшего использования я получаю местоположение из базы данных. Каждый пользовательский ввод дает три изображения (уменьшенное изображение, увеличенное изображение и одно для pdf-отчета), всего около 60 КБ. Мы ожидаем, что их будет 100 - 1000 в день.

Сейчас я рассматриваю возможность сохранения изображений в базе данных (поля BLOB - я использую MySql) и создание страницы обработчика ashx для отображения изображений. Основной причиной было бы облегчить перемещение сайта с одного сервера на другой (не нужно беспокоиться о правах чтения / записи в файловой системе серверов и не нужно беспокоиться о неработающих ссылках между БД и файлом).

Желательно ли это изменение в моем сценарии? Будет ли иметь какие-либо существенные положительные или отрицательные изменения в производительности?

1 Ответ

4 голосов
/ 31 октября 2011

Влияние на производительность зависит от настроек вашей БД в отношении HW (RAM, SSD и т. Д.) И сети (это на той же машине, что и приложение?).

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

OTOH, если вы достаточно уверены в размерах(макс. 60 КБ) И ваша БД достаточно быстрая, тогда сделайте это ... убедитесь, что поместили большие двоичные объекты в отдельную таблицу только с другим полем (первичным ключом), не храните метаданные и т. д. в одной таблицекак BLOB!

Одно замечание:

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

...