虽然与这问题有关,但我有一个稍微不同的角度来处理这个问题。以下是我的情况:
我正在编写一个web应用程序( PHP或Python)来管理桌面应用程序的加载项。用户可以浏览加载项,安装它们,上传它们等等。
我正在计划数据库的模式,并发现自己决定:
更好的方法是将图标(对于加载项)存储在表本身中,还是将它们存储在文件系统中,只在表中存储一个文件名?
图标很小(48x48或接近它),最多不会占用超过5或6 KB。在表中存储图像数据有什么严重的缺点吗?还有什么其他的问题我应该知道吗?表演是否值得关注?储存会是个问题吗?
编辑:我目前正在查看MyISAM数据库中的MySQL表。
发布于 2011-08-22 16:49:49
另一个让存储图像数据相当困难的有趣的方面是具有正确的数据包大小。我在2011年4月27日写过这封信。
由于图像将存储在BLOB字段中,因此将通过程序(如mysqldump)、基础设施(如MySQL复制)和一般查询用法(例如,在联接期间在内部临时表中包含BLOB数据和子句删除)对BLOB数据进行内部操作和/或外部通信。
此外,正如前面的URL所提到的,InnoDB存储引擎有一种处理内存中的数据包和记录文件的方法。
不能忽视的是构造SQL查询
根据这些事实,您必须将my.cnf配置为最大值的一个数字,以便单个MySQL数据包足够大以容纳多个BLOB。您还必须查看DB Server上是否有足够的可用RAM。否则,通过不断地将单个BLOB运入或移出数据包,大量处理BLOB将产生意想不到的性能瓶颈。
一旦您有足够的可用内存、适当大小的MySQL数据包和避免将BLOB数据堆积在多个临时表中的查询,大多数注意事项/缺点都会相互抵消。
另一个考虑是记住在mysqldump中使用--十六进制-blob选项。否则,它可能会使重新加载blob有点困难,这取决于某些字符序列。
https://dba.stackexchange.com/questions/4892
复制相似问题