从mysql数据库加载文件对网站性能的影响

时间:2015-01-26 14:37:29

标签: mysql performance effect

我的网站上所有图片都是从MySQL数据库加载的 有时,当许多客户连接到网站时,它会减慢速度。我正在对我的服务器进行一些优化。代码以提高总体绩效 作为变革的候选人,我想知道将文件移出数据库&从静态文件而不是动态生成的内容加载,可以对我的性能有任何显着的改善吗? 如果是,是否有任何关于它的基准?

2 个答案:

答案 0 :(得分:2)

将图像存储在数据库中通常是一个坏主意,但是你会看到很多人没有任何理由这样做。

在99%的情况下,我建议只存储数据库中图像的文件路径引用,并静态存储图像。

以下是一些原因:

  • 您不会将应用程序服务器和数据库服务器都传输到浏览器,您可以将其卸载到Web服务器本身,这对此更加优化。
  • 如果您有一个相当大的网站,您最终还是希望将静态图像移动到CDN上。您无法使用数据库中的文件
  • 执行此操作
  • 当您尝试将图像插入数据库时​​,应用程序会变慢,因为您基本上必须将文件上传到应用程序服务器,然后转向并写入数据库,而不是简单地编写路径引用。
  • 您的数据库本身可以以足够的图像大幅增长。您不希望将数据库文件系统与一堆文件捆绑在一起,这些文件可以通过其他方式以低成本存储(如Amazon S3等分布式文件存储服务)。

答案 1 :(得分:0)

我和你的情况类似。解决方案很简单:缓存内容。

当您第一次运行查询以获取图像时,即:

SELECT * FROM images WHERE id = 1

然后只需将结果缓存到文件中:

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

下次只需检查文件是否存在,这将避免查询数据库