DB2 9 pureXML与CLOB或分解式XML存储之间的性能对比
2010-02-16 14:59:52 来源:WEB开发网比较CLOB和pureXML列
这种比较是很有趣的,因为对于当今相当多的XML应用程序来说,CLOB列是XML存储最常用的选择。在DB2 9出现之前,没有更好的备选方案。CLOB存储和pureXML处理之间的基本区别在于XML 解析及其对插入和查询性能的巨大影响。
如果XML文档被插入到CLOB列中,那么它们就是作为未解析文本对象插入的。避免在插入时进行XML 解析对性能有益,对于CPU-bound型系统尤其如此。然而,如果不进行XML 解析,XML文档的结构会被完全忽略。因此数据库无法对存储的文本对象执行智能和有效的搜索和提取操作。惟一的补救方法是,在执行查询时调用XML 解析器来“搜索” XML文档,以便找到符合搜索条件的内容。XML 解析巨大的CPU 占用率通常会导致很低的搜索和提取性能。只有盲目、全面的文档检索(这会再次忽略内部 XML 结构)能够快速从 CLOB列读取 XML文档。
DB2 9中的pureXML技术在插入时(而不是查询时)解析XML文档。XML文档以已解析的格式被存储和查询,这在DB2 9中使用一种新的数据类型 “XML” 来表示。这种已解析格式使用节点树结构,有别于XML文档的文本表示。搜索和提取操作的执行无需进行XML 解析,这会获得巨大的性能益处,因为XML 解析开销发生在插入时。类似地,对XML列进行文档检索需要串行化,即,将已解析的XML 格式转换回其原始文本表示。当从 CLOB (在CLOB中 XML 本来就是以文本形式存储的)读取完整的XML文档时,不存在此开销。
总之,CLOB存储为插入和全文档检索操作提供了优秀的性能,这通常是以搜索和提取性能下降为代价的。DB2 9中的XML数据类型牺牲了某些插入和检索性能,来获得更高的搜索和提取性能。这是一种合理的折衷方案,因为业务数据的搜索和分析频率要高于插入频率。通常是一次插入、多次搜索。另外,因为XML列在缓冲池中缓存而 CLOB列不是,所以 XML列的潜在开销通常会增加。
下一节介绍用于量化这些折衷方案的性能度量指标。
比较CLOB插入和XML插入
在第一个测试中,我们顺序插入 100,000个具有或不具有索引的文档,像许多 OLTP应用程序那样在每个文档之后提交。图 1中的结果显示了XML和CLOB列插入之间的相对占用时间(越低越好)。将XML插入的占用时间用作比较基线(100%),维护 6个XML 索引仅需很小的开销(在我们的场景中是5%)。
图 1:比较XML和CLOB列的单用户插入性能
- ››db2 对float类型取char后显示科学计数法
- ››DB2中出现SQL1032N错误现象时的解决办法
- ››DB2 锁升级示例
- ››db2诊断系列之---定位锁等待问题
- ››db2 命令选项解释
- ››DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 基础: 表空间和缓冲池
- ››DB2 XML 编程,第 1 部分: 理解 XML 数据模型
- ››DB2 pureScale 实战
更多精彩
赞助商链接