我正在尝试在数据库中存储至少 500,000 多个小“文件”(3 KB 平均大小,偶尔可达 8~10 MB)。这是为了将它们从文件系统中删除并加快搜索/用户操作。
- 元数据(主要是文件名、创建日期时间、修改日期时间)
- 文件内容的 LONGBLOB
将它们存储在数据库(MySQL)中很好。数据库存储该数量的文件,并且使用相关索引搜索元数据(字符串、日期时间、日期时间)也很快。
不幸的是,在 LONGBLOB 中进行搜索的任何尝试都非常缓慢。LONGBLOB 中的数据如下所示:
- 80% 是“文本文件”(例如 XML)并且小于 100 KB
- 15% 是“文本文件”,但超过 100 KB(最大 8~10 MB)
- 5% 或更少是二进制文件(可能在“文本”容器中损坏)。
在执行 LIKE "%X%" 之类的操作(而不是 LONGBLOB)时,将此数据分类为文本或未知数据,然后将其放在单独的 LONGTEXT 表中是否会提高性能?
在通过 BLOB 搜索时(以非常“grep”风格),我可以采取任何其他技术来提高性能吗?搜索通常是保存在 BLOB 中的短数据序列,并且可能很少有重复的搜索(但搜索在某种程度上是可预测的,一些数据比其他数据更有趣)。