在数据库中存储图像的效率

时间:2014-10-03 08:28:17

标签: mysql database

我想更好地了解如何在数据库中存储图像。主要围绕表演。

我想要一个图像数据库。我知道查询是否有很多字段需要搜索,效率会很低,但如果我将图像保存在一个单独的表(仅包含imageID和Image的表)中,性能如何受到影响。所以当查询表时我可以使用主表,但我只会在需要时从图像表中拉回图像。

当然这是不好的做法,理想的做法是将图像保存在目录中并将该图像的文件路径存储在数据库中。

请记住引用图像位置的文件路径(字符串变量)可能比imageID长。

有意义的是,通过数据库搜索数据库相关图像会更快,而不是在数据库和主机目录之间跳转。

你觉得怎么样?

1 个答案:

答案 0 :(得分:1)

根据您的应用程序目标,将决定哪种存储/检索方法最佳。没有一种全面的解决方案可以满足所有需求。

存储用户上传图像的两种主要方式是将二进制内容作为BLOB放入数据库,或将图像存储到文件系统中。

事实是二进制存储的方法非常成功,并且与文件系统存储相比具有许多优点。一些优点是:

参照完整性(ACID一致性)

易于备份

保存Inode

轻松分类

无名称冲突

元数据的存储(有关数据的数据)

中心操作点

通过多台服务器进行复制

将图像放在数据库中的优点是不需要在Web服务器上使用任何类型的文件系统权限,并且如果您从多个Web服务器提供站点,则会删除任何类型的同步问题。但是,随着时间的推移,它会使您的数据库变得庞大,如果您没有正确设计表,那么它绝对会降低您的性能和可伸缩性。

还有几个原因不能将图像或其他二进制数据存储在数据库中。

更好的缓存

外部代理

MySQL可以更好地存储“正常”数据

文件系统的数据吞吐量更高

检索速度

参考:Storing images with MySQLStackOverflow Question