Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么时候推荐使用MySQL BLOB?_Mysql_Filesystems_Blob - Fatal编程技术网

什么时候推荐使用MySQL BLOB?

什么时候推荐使用MySQL BLOB?,mysql,filesystems,blob,Mysql,Filesystems,Blob,我正在编写一个将上载和删除许多文件的应用程序,我通常只是将文件移动到服务器中的一个文件夹中,并使用行uniqueid命名它们。但据我所知,MySQL还允许我存储二进制数据(文件),什么时候这是一个更好的选择 请使用实参,例如 使用BLOB是否意味着性能 改进 附言:如果有关系的话,我会用MyISAM 谢谢 更新: 相关问题: - -(感谢塞巴斯蒂安) 更新2 将文件存储在数据库中 不需要我想知道什么时候 这是一个比存储更好的主意吗 它们位于文件夹中。如果您使用的是MyISAM db引擎,则可以

我正在编写一个将上载和删除许多文件的应用程序,我通常只是将文件移动到服务器中的一个文件夹中,并使用行unique
id
命名它们。但据我所知,MySQL还允许我存储二进制数据(文件),什么时候这是一个更好的选择

请使用实参,例如 使用BLOB是否意味着性能 改进

附言:如果有关系的话,我会用MyISAM

谢谢


更新:

相关问题
-
-(感谢塞巴斯蒂安)

更新2


将文件存储在数据库中 不需要我想知道什么时候 这是一个比存储更好的主意吗
它们位于文件夹中。

如果您使用的是MyISAM db引擎,则可以为BLOB字段编制索引,以便您可以使用数据库对文件执行快速搜索

另外,将文件存储在BLOB字段中的另一个优点是,可以比磁盘上的文件更高效地访问文件(不需要遍历、打开、读取和关闭目录)

如果您计划在MYSQL中存储大量文件,通常最好将文件存储在单独的表中。这允许您扫描元信息,而不会被blob绊倒。然后,当您实际需要获取blob时,连接就足够有效了。

阅读:

这就结束了

如果您有时需要检索 图像,并且必须在 几个不同的web服务器。但我 我想差不多就是这样

  • 如果不一定要在 有几个服务器,最好是 将它们放入文件系统
  • 如果有 可在多个服务器和 实际上,这里面有某种负荷 系统,你需要一些 分布式存储

嗯,它有点旧了,但本文为BLOB存储提供了一些合理的参数:


虽然这本身并不是一种性能提升,但将图像和其他内容放在DB中而不是目录中也可以消除热链接问题(假设这是一个公开的web应用程序)。

您一定要使用MySQL吗?如果没有,请尝试使用ODBMS或PostgreSQL来存储文件,或者只存储文件的路径。例如,请参阅。

Memcache不是替代解决方案,因为您需要跨分布式服务器管理冗余和TTL,这使得维护变得更加困难

在我看来,更好的解决方案是将公共静态数据放在CDN上,CDN通过设计分发,而私有静态数据放在DB上,以便于跨多个服务器分发

每台服务器在每次命中时都可以实现自己的Memcache

如果您已经将数据存储在文件系统中,并且希望将其迁移到数据库中,最简单的方法是创建一个包含以下内容的键、值表:


KEY='/image/filename'(文件系统位置的字符串),value=BLOB(实际文件),并构建一个包装器,在重写规则和应用程序处理的帮助下从数据库中获取该文件。通过这种方式,您可以对现有代码使用完全透明。

那么,在什么情况下哪种方法更好?当您知道应用程序需要时,您可以说哪种方法更好,但由于您使用的是MyISAM表,因此将文件存储在数据库中可能会给您带来更大的灵活性。不需要将文件存储在数据库中,我只是想知道什么时候这是一个更好的解决方案即使在这种情况下,我认为memcached可能是一个更好的方式来“分发”映像文件-您将映像保存在一个位置/服务器中,点击后将其存储在memcache中,并跨多个web服务器/请求使用。@Suman memcache提供了低延迟,这有助于获取多个小数据对象,但当往返时间只占过渡时间的一小部分且操作系统已能很好地保持时,数据越大,这种优势就可以忽略不计当文件在RAM中被继续使用时。