今早我在DZone无意中看到这篇文章。是教人如何把图像(用PHP)存入MySQL数据库的。有几样东西我并不赞同,我这里就不提了。我耿耿于怀的是它并没有提到这样做是非常不好的。
关系数据库并非文件系统。文档存到文件系统,关系数据存到关系数据库(RDBMS)。重复几多几遍。
最大的争议的还是性能问题。我做过一个简单的测试。直接在google图片搜索里搜索并且下载了前10个。然后写脚本用2种不同的方式来读取这些图片:
1.从一张有两列的MySQL(MyISAM)表:ID(int, auto_increment)和DATA(mediumblob)
2. 使用readfile.
第三种测试方式,"FS",没有任何脚本,只是简单的通过http加载这些图片。
下面的结果都是用 Apache Benchmark 跑10次后取的平均值:每次运行都是10个并发请求,一共1000次请求
可见,MySQL的方式跟FS的方式比起来简直是巨慢无比。
存储图像(或二进制文档)的最好方法是用文件系统。每个现代网络服务器都能很流畅为静态内容提供服务,把它们存到数据库是不实际的,不仅慢,而且会使到数据库的备份复杂化了:MySQL很难把二进制数据压缩好,使得数据库备份慢且需要的容量大的多。
所以,请记得把文档存到文件系统。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务