Mysql BLOB снижение производительности после достижения «предела» (MyISAM) - PullRequest
1 голос
/ 13 декабря 2010

У меня довольно небольшая база данных mysql, в которой я храню несколько довольно маленьких изображений (320x480), до недавнего времени все они вели себя очень хорошо, размер таблицы составлял около 1,5 ГБ, а записей было около 34 000.В этот момент ...

... Внезапно производительность упала в 100 раз.

Похоже, что БД достигла невероятного предела и не можетсправиться с этим больше.

Кто-нибудь испытывал что-либо подобное?

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

Ответы [ 3 ]

1 голос
/ 13 декабря 2010

Возможная причина в том, что ваш запрос не использует индексы.Когда таблица была довольно маленькой, это не было проблемой, но чем она больше, тем сложнее MySQL получать ваши данные.

Проверьте, проиндексирован ли столбец property_id.Чтобы ускорить ваш запрос, вы можете добавить индекс покрытия - (* property_id, image)

. Чтобы узнать, использует ли ваш запрос индексы и более полезную информацию, добавьте EXPLAIN к вашему запросу:

EXPLAIN SELECT image FROM mytable WHERE property_id = 30000
0 голосов
/ 13 декабря 2010

Не создавайте индекс для поля BLOB, он бесполезен (и MySQL не допустит этого).

У вас есть правильные индексы? т.е. в этом случае (property_id)? ...

0 голосов
/ 13 декабря 2010

Я совершенно уверен, что база данных начала использовать диск вместо памяти для выполнения операции.Этой операцией вполне может быть сохранение данных во временных таблицах.Вместо этого сохраняйте индексы на диске и т. Д. Выясните, что это такое, и вам будет гораздо проще найти решение.

Снижение производительности от 1 до 100 будет соответствовать разнице в скорости между памятью и диском.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...