Mysql 将图片存储到数据库中

Mysql 将图片存储到数据库中,mysql,database,database-design,phpmyadmin,Mysql,Database,Database Design,Phpmyadmin,我想知道什么是将图像存储到性能最好的MySQL数据库的最佳方法。(假设有一个大数据库) 解决方案A:使用LONGBLOB键入并放入二进制内容 解决方案B:将文件存储在主机上,并将URL保存为VARCHAR类型 提前感谢我想说,与其存储url,不如将图像名称存储为“image1.png”,并将图像托管在服务器上。这将有助于减少数据库大小和调用次数。然后通过编程为url路径添加前缀并引用该路径 最好只保存文件名,以防图像位置发生变化。这样,您就不必担心更新整个表,只需使用url路径修复一行代码即可。

我想知道什么是将图像存储到性能最好的MySQL数据库的最佳方法。(假设有一个大数据库)

解决方案A:使用
LONGBLOB
键入并放入二进制内容

解决方案B:将文件存储在主机上,并将URL保存为
VARCHAR
类型


提前感谢

我想说,与其存储url,不如将图像名称存储为“image1.png”,并将图像托管在服务器上。这将有助于减少数据库大小和调用次数。然后通过编程为url路径添加前缀并引用该路径


最好只保存文件名,以防图像位置发生变化。这样,您就不必担心更新整个表,只需使用url路径修复一行代码即可。我想说的是,与其存储url,不如将图像名称存储为“image1.png”,并将图像托管在服务器上。这将有助于减少数据库大小和调用次数。然后通过编程为url路径添加前缀并引用该路径


最好只保存文件名,以防图像位置发生变化。这样,您就不必担心更新整个表,只需使用url路径修复一行代码,我倾向于将它们放入数据库中。这样,当您备份数据库时,它就打包在一起了。如果您曾经移动过服务器,那么您就不必担心从文件系统中移动文件

除非您谈论的是大文件(GBs),否则我怀疑您是否会看到文件系统与.db性能之间的巨大差异

无论哪种方法都会对你有用,只是偏好的问题,以及什么最适合你的特殊情况

SO和互联网上已经有很多答案。

我倾向于将它们放入数据库。这样,当您备份数据库时,它就打包在一起了。如果您曾经移动过服务器,那么您就不必担心从文件系统中移动文件

除非您谈论的是大文件(GBs),否则我怀疑您是否会看到文件系统与.db性能之间的巨大差异

无论哪种方法都会对你有用,只是偏好的问题,以及什么最适合你的特殊情况

SO和互联网上已经有很多答案。

如果您正在构建一个需要扩展以服务于许多图像的系统:将图像内容放在DBMS中有一个巨大的缺点

Web服务器可以聚集在大型通用文件存储系统周围,并可以非常高效地为图像提供服务。这种文件服务体系结构已通过各种web服务器产品(如Apache、nginx和IIS)进行了高度优化

但是,如果将图像放入数据库blob中,则从数据库中获取图像将成为一个瓶颈。另外,您还需要一个脚本(php、.net等)来运行以服务于每个图像

几乎所有生产网站都直接从文件中提供图像。您可以在DBMS中存储文件存储区中的位置,然后将它们转换为发送的HTML页面中的URL

例如,如果
imgloc
列包含
u/10234/abcde.img
,并且该表还包含宽度和高度列,则您的web应用程序可能会发出类似

<img src="/content/u/10234/abcde.img" width="300" height="200">


然后,客户端将从您的内容存储中获取图像。

如果您正在构建一个需要扩展以服务许多图像的系统:将图像内容放入DBMS中有一个巨大的缺点

Web服务器可以聚集在大型通用文件存储系统周围,并可以非常高效地为图像提供服务。这种文件服务体系结构已通过各种web服务器产品(如Apache、nginx和IIS)进行了高度优化

但是,如果将图像放入数据库blob中,则从数据库中获取图像将成为一个瓶颈。另外,您还需要一个脚本(php、.net等)来运行以服务于每个图像

几乎所有生产网站都直接从文件中提供图像。您可以在DBMS中存储文件存储区中的位置,然后将它们转换为发送的HTML页面中的URL

例如,如果
imgloc
列包含
u/10234/abcde.img
,并且该表还包含宽度和高度列,则您的web应用程序可能会发出类似

<img src="/content/u/10234/abcde.img" width="300" height="200">

然后客户端将从您的内容存储中获取图像