繁体   English   中英

存储大量html内容的有效方法

[英]efficient way to store large amount of html content

我有一个数据库,其中有一个表,其中包含“标题,专辑,艺术家...”之类的字段,并且每个记录中都有很多带有html内容的字段(最多30个)。

问题在于,该数据库具有成千上万的记录,并且由于html内容而具有数百兆的大小。 由于sqlite文件的大小,搜索非常慢(对于200个新行,在事务中插入新元素也很慢〜10-30秒)。 第一个LIKE查询可能需要10到15秒的时间,其他搜索的速度足够快(创建索引并可以正常运行)。 当我从数据库中删除html内容时,搜索始终是即时的。

所以问题是,存储这些额外的html内容的最佳方法是什么? 现在,我可以选择将其存储在单独的文件中,但将来它最多可以生成600k文件,甚至更多,这创建起来非常缓慢。 将文件存储在zip存档中可能会达到其文件数限制。 其他选项是按表格行压缩文件,将html存储在同一数据库的单独表中,或为html内容创建单独的数据库文件。

什么会给我最好的表现? 还是还有其他更好的选择? 我需要快速插入,更新和搜索。

您可以考虑做几件不同的事情:

  • 将数据拆分到单独的表中。 然后,您可以在表之间具有1:1映射,并且仅在必要时将它们加入,以加快没有它们的查询。
  • 检查您的索引。 仅仅因为您拥有它们并且您认为它们正在工作,并不意味着它们在起作用。 如果我没记错的话,sqlite每个查询最多使用一个索引,因此您需要确保您拥有尽可能最佳的索引以用于正在使用的查询。 ANALYZE命令可以帮助您。

经过几天的试验,我得出了以下结论:

  • 具有一个表的一个数据库文件最慢(最多10秒)
  • 一个有两个表的数据库在最坏的情况下的速度是一个表的两倍
  • 最快的是拥有两个单独的数据库文件。 一个带有搜索所需的数据,另一个带有巨大的html数据。 在最坏的情况下〜300ms这几乎是瞬间的,在正常使用情况下它是瞬间的

因此,我建议在这种情况下使用两个单独的数据库文件。 如果某人没有更快/更好的解决方案,我将作为答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM