gpt4 book ai didi

mysql - 在 MySQL 中存储和搜索文件

转载 作者:行者123 更新时间:2023-11-29 00:40:01 26 4
gpt4 key购买 nike

我正在尝试在数据库中存储至少 500,000 多个小"file"(平均大小为 3 KB,有时高达 8~10 MB)。这是为了将它们从文件系统中删除并加速搜索/用户操作。

  • 元数据(本质上是文件名、创建日期时间、修改日期时间)
  • 文件内容的 LONGBLOB

将它们存储在数据库 (MySQL) 中已经很好了。数据库存储该数量的文件,使用相关索引搜索元数据(字符串、日期时间、日期时间)也很快。

不幸的是,任何在 LONGBLOB 中搜索的尝试都非常缓慢。在 LONGBLOB 中,数据如下所示:

  • 80% 是“文本文件”(例如 XML)且小于 100 KB
  • 15% 是“文本文件”但超过 100 KB(最多 8~10 MB)
  • 5% 或更少是二进制文件(在“文本”容器中可能会损坏)。

将此数据分类为文本或未知数据,然后将其放入单独的 LONGTEXT 表中,在执行 LIKE "%X%"(与 LONGBLOB 相对)之类的操作时是否会提高性能?

在搜索 BLOB(以非常“grep”的方式)时,我是否可以使用任何其他技术来提高性能?搜索通常是保存在 BLOB 中的短数据序列,并且可能很少有重复的搜索(但搜索在某种程度上是可预测的,一些数据比其他数据更有趣)。

最佳答案

那么,您最好做一个全文索引(对于如此大量的数据,它的大小会非常大)并做一个 MATCH AGAINST 查询,以便有效地进行搜索。 LIKE 在处理大量文本时速度非常慢,这是众所周知的,应该避免。

http://dev.mysql.com/doc/refman/5.5/en//fulltext-search.html

您还可以将它们保存在 FS 中并构建您自己的命令行工具,您可以从服务器端语言中调用这些工具,这些工具实际上执行“GREP 样式”搜索并返回与您的“查询”匹配的文件路径列表,但我不确定这是否有效。

关于mysql - 在 MySQL 中存储和搜索文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12665247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com