我想知道将图像存储到性能最好的MySQL数据库中的最佳方法是什么。(假设有一个大数据库)
解决方案A:使用LONGBLOB类型并放置二进制内容
解决方案B:将文件存储在主机上,并以VARCHAR类型保存URL
提前感谢
发布于 2014-10-23 19:22:14
如果您正在构建一个需要扩展以提供许多映像的系统:将图像内容放入DBMS中有一个巨大的缺点。
Web服务器可以聚集在大型通用文件存储系统周围,并且可以非常有效地提供图像。这种文件服务架构已经由各种web服务器产品(如Apache、nginx和IIS )进行了高度优化。
但是如果你把你的图像放在数据库中,从数据库中获取它们就成了瓶颈。此外,您还需要一个脚本(php、.net等)来运行每个映像。
几乎所有的生产网站都直接从文件中提供他们的图像。您可以在DBMS中存储文件存储上的位置,然后将它们转换为您发送的HTML页面中的URL。
例如,如果imgloc列包含u/10234/abcde.img,并且该表也有宽度和高度列,则您的web应用程序可以发出以下内容
<img src="/content/u/10234/abcde.img" width="300" height="200">然后,客户端将从内容存储中获取图像。
发布于 2014-10-23 18:41:09
我想说的是,与其存储url,不如像"image1.png“那样存储图像名,并将图像托管在服务器上。这将有助于减少db大小和调用时间。然后编程地在url路径前加上前缀并引用它。
如果图像位置发生变化,保存文件名也可能更好。这样,您就不必担心更新整个表,只需使用url路径修复一行代码即可。
发布于 2014-10-23 18:45:09
我倾向于将它们放在数据库中。这样,当您对DB进行备份时,所有这些都打包在一起。如果您曾经移动过服务器,那么您就不必担心从文件系统中移动文件。
除非您谈论的是大型文件(GBs),否则我怀疑您是否会看到与文件系统vs.db性能有很大不同。
无论哪种方式都会对你有帮助,这只是一个偏好的问题,以及哪种方法对你的特殊情况最有效。
在互联网上已经有很多答案了。
https://stackoverflow.com/questions/26534934
复制相似问题