2015-01-26 2 views
-1

У меня есть сайт, на котором все его изображения загружаются из базы данных MySQL.
Иногда, когда многие клиенты подключаются к сайту, он замедляется & Я делаю некоторые оптимизации на своем сервере & кодов для увеличения общей производительности.
Как кандидат на изменение, я хочу знать, что перемещение файлов из базы данных & Загрузка из статических файлов вместо динамически созданного содержимого может привести к значительному улучшению моей производительности?
Если да, есть ли в нем какие-либо ориентиры?Эффект загрузки файлов из базы данных mysql на производительность сайта

+1

Голосование, чтобы закрыть вопрос, как OP указал в комментариях, что он пытается понять, как это влияет на производительность в его среде. Это приводит к более широкому вопросу о том, как запускать тесты производительности в приложении/среде и определять узкие места производительности. Это не может быть охвачено простым вопросом SO. –

+0

Запрос на бенчмарк также не соответствует теме. – EJP

ответ

2

Хранение изображений в базе данных, как правило, плохая идея, но вы видите, что многие люди делают это без уважительной причины.

В 99% случаев я бы рекомендовал только хранить ссылки на пути к изображениям в базе данных и сохранять их статически.

Вот несколько причин, почему:

  • Вы не перевязать как сервер приложений и сервер базы данных, передающую изображения в браузере, вы можете переложить это на самом веб-сервер, который более оптимизированной для этого ,
  • Если у вас большой сайт, вы все равно захотите перенести статические изображения на CDN. Вы не можете сделать это с файлами в базе данных
  • Приложение будет медленнее при попытке вставить изображения в базу данных, так как вам в основном нужно загрузить файл на сервер приложений, а затем развернуться и записать в БД, а не просто записывая ссылку на путь.
  • Вы сами DB можете расти в размере с достаточной скоростью с достаточным количеством изображений. Вы не хотите связывать свою файловую систему с кучей файлов, которые можно хранить по низкой цене другими способами (например, распределенные службы хранения файлов, такие как Amazon S3)
+0

Это не мой ответ тоже (как и предыдущий пост!), Я просто хочу знать, есть ли какие-либо доказательства того, что загрузка файлов из базы данных снижает общую производительность или нет? –

+0

@EhsanKhodarahmi Вам нужно будет проверить это в своем конкретном приложении, чтобы определить влияние этого подхода и является ли оно даже одной из самых больших проблем с производительностью, которые вы хотите сосредоточить на исправлении. Мы не знаем вашего приложения или его среды, поэтому мы не можем оказать здесь никакой помощи. –

+0

@EhsanKhodarahmi Вы не просили доказательства: вы спросили, правда ли это. Майк дал вам четыре правдоподобных причины, почему это правда. – EJP

0

У меня такая же ситуация, как у вас , Решение прост: кешируйте содержимое.

При запуске в первый раз, запрос, чтобы получить изображение, то есть:

SELECT * FROM images WHERE id = 1 

Тогда просто кэшировать результат в файл:

file_put_contents("image1.png",$row['data']); 

В следующий раз просто проверить каждый раз, когда есть файл, это позволит избежать запроса к базе данных.

+0

Это не ответ на мой вопрос, потому что я не уверен, что кеширование может улучшить производительность! –

+0

Кэширование, конечно же, может улучшить производительность, особенно когда это позволяет вам запускать запрос в вашу базу данных. Поскольку хранение/запрос изображений в базе данных дорог – dynamic

+0

@EhsanKhodarahmi Вы не уверены, что это не повод, почему это не ответ. Кэширование почти всегда повышает производительность. Это не противоречиво. – EJP

Смежные вопросы