哪个更好:每次从数据库解析大数据或缓存结果?

时间:2013-04-17 03:08:49

标签: sql database performance

我对系统性能有疑问。在DB表中,每条记录中都会有一个大的XML数据。我担心的是,如果我每次都要从数据库解析XML数据,以获取XML中的属性和信息。另一种选择可能是解析XML一次并捕获它们。 XML大小平均为100KB,将有10 ^ 10条记录。如何解决这个空间与计算性能问题?我的猜测是捕获结果(XML中的重要属性)。因为每个查询解析10 ^ 10条记录并不是一件容易的事。此外,已解析的属性可用作索引。

3 个答案:

答案 0 :(得分:1)

如果您要解析所有每个查询,您无疑应该缓存结果,或者将完整生成的产品放入单个数据库字段或文件以供将来使用,或者最后直到某事改变了,就像论坛系统一样。

对大量数据重复进行昂贵的处理,因为您知道总会得到相同的结果,这真的是浪费资源。

答案 1 :(得分:0)

如果您打算使用XML中的某些属性进行索引,最好将它们作为列添加到表中。

关于解析XML,100kb几乎不会影响性能。此外,您可以在获取记录时读取并存储XML(按原样),只有在您想要显示/使用这些附加属性时才解析它。

答案 2 :(得分:0)

您没有提到最佳选择:解析XML并将其数据存储在它们所属的表中。如果你真的真的需要原始的XML逐字,请将其保存为blob,否则忽略它。

(顺便说一下,我认为你的意思是缓存,而不是捕获。)