如何存储和调用500k图像?

时间:2011-01-26 09:16:20

标签: php mysql

我的文件夹/目录中有500k个独特的图像。我想通过名称调用它,所有名称都存储在Mysql数据库中。但我听说图像可以存储在数据库中。所以我的问题是更快速地显示图像的选项。我需要存储在mySQl中,还是可以保留我所遵循的相同方法?

如果我需要存储在mySQL中,那么如何为它创建一个表,以及如何存储所有这些图像?

6 个答案:

答案 0 :(得分:6)

这已经回答了很多次。但是你还没有谈到你正在构建什么类型的应用程序,如果你正在构建一个Web应用程序,那么将文件存储在文件系统上具有优势:缓存。

Storing Images In Filesystem As Files Or In BLOB Database Field As Binaries

Storing Images in DB - Yea or Nay?

将图像存储在表格中很容易,但如果图像非常大,我肯定会避免使用它。

答案 1 :(得分:4)

我不认为单个目录中的500k条目会很好地完成:How many files can I put in a directory?

曾几何时,一旦目录累积了大约2000个文件,Linux ext3开始运行缓慢,非常简单。 (O(N)类型很慢!)合并htree补丁后,大目录性能大幅提升,但我仍然建议根据一些非常简单的标准对映像存储进行分区。 (例如,Squid Web缓存创建目录树,如01/02/,并根据文件名中的前两个字符放置文件。)

答案 2 :(得分:3)

不要在像mysql这样的数据库中存储这么多数据,特别是如果你不像听起来那么熟悉。将图像保留在fs上

答案 3 :(得分:2)

  

我有500k的独特图像   文件夹/目录。我想叫它   名称和所有名称都存储在Mysql中   数据库。但我听说图像可以   存储在数据库中。所以我的问题   哪个是最快的选择   更快地显示图像。

您应该使用文件系统。存储在数据库中不会很好地工作。您应该阅读Facebook Photo Storage Architecture以了解facebook如何做到这一点。他们拥有世界上最多的照片。

干草堆文件存储:

enter image description here

同样有趣: http://www.fredberinger.com/high-performance-at-massive-scale-lessons-learned-at-facebook/

答案 4 :(得分:1)

将图像存储到数据库中(使用blob数据类型)的效率要比保存在文件系统中的图像低得多。

BTW here解释了如何将二进制数据插入到mysql表中

答案 5 :(得分:0)

如果你有Redis,你可以将所有图像放在内存中,这将是最快的方式