Оптимизация файлов MySQL в базе данных (blob) - PullRequest
1 голос
/ 16 марта 2011

из-за внутренних причин (структура фреймворка) я сохраняю много изображений в таблице со средним BLOB.

Учитывая, что запрос на извлечение этих изображений отправляется с довольно низкой скоростью, есть ли способ сказать mysql не пускать эту таблицу в память? Я не хочу, чтобы таблица из 2 ГБ памяти использовалась только время от времени.

Есть ли способ оптимизировать это?

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

Спасибо

Ответы [ 2 ]

3 голосов
/ 16 марта 2011

MySQL не будет генерировать таблицу в памяти для типов BLOB, так как механизм хранения не поддерживает ее.

http://dev.mysql.com/doc/refman/5.0/en/internal-temporary-tables.html

"Некоторые условия не позволяют использовать временную таблицу в памяти, и в этом случае сервер использует вместо нее таблицу на диске:

  • Наличие столбца BLOB или TEXT в таблице "

Это означает, что вы должны поместить BLOB в другую таблицу и оставить другие полезные данные в таблице BLOB, чтобы таблица была оптимизирована.

0 голосов
/ 16 марта 2011

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

...