2013-02-08 99 views

回答

3

的经验法则是你不应该在数据库中存储的图像。 Blob是可用的,但相当糟糕。

你应该做的是将二进制文件存储在比数据库快许多倍的文件系统上,并在数据库中存储路径或链接或文件名,并让应用程序从路径加载图像。

这使您可以轻松实现像静态文件的CDN或SAN存储等东西。它甚至允许你使用类似lighttpd的东西显示静态内容图像而不是apache。

https://blogs.oracle.com/manveen/entry/blob_vs_file_system_storage给多一点信息,但有大量的统计信息和数据的约斑点

的缺点在网络上
+0

其他更深入的文章http://research.microsoft.com/apps/pubs/default.aspx?id=64525 – Dave 2013-02-08 14:21:05

0

使用BLOB数据类型,这意味着二进制大对象

0

BLOB的可能比文件存储速度较慢,但​​它是非常容易复制,备份和恢复单个数据库文件,而不是管理/维护文件结构中的图像。

我还建议将图像存储在自己的专用数据库中(将属性/标记信息存储在单独的数据库中)。

+0

我叮叮当当,下载文件并不复杂。其实,对我来说似乎更容易。 – 2013-02-08 14:29:42

+0

没有它没有。 tar -cf/imagefolder/imagebackup.tar就像那样,将它设置为自动备份的cron。也更容易备份到s3之类的东西,例如使用重复数据而不会导致数据库服务器执行mysqldump的负载。由于db数据库的大小从图像存储中增长,数据库服务器的性能下降不足。 – Dave 2013-02-08 14:29:54

0

将图像存储在数据库中是一个非常糟糕的主意。数据库被确定为保存一小段信息 - 而不是图像或文件。你有这个目的的硬盘。
相反,您应该将图像保存在磁盘上并将其文件名保存在数据库中。这样的:

$name = uniqid(); 
file_put_contents($name.".png",$image_data); 
mysql_query("INSERT INTO `images` (image) VALUES ('$name.png')") or die(mysql_error()); 

如果你真的坚持在DB保存图像使用BLOB

0

简单&优化选项是上传服务器上的图像,并在数据库中存储“图像的网址”字符串。

Incase,你只想存储实际的图像文件,然后使用Blob数据类型。

相关问题