DB2 9 pureXML与CLOB或分解式XML存储之间的性能对比
2010-02-16 14:59:52 来源:WEB开发网CLOB和XML列的XML查询比较
为了评估 XML和CLOB列之间的查询性能差异,本文设计了5个查询来涵盖以下常见的搜索和检索情况:
对全部文档进行全文档检索,无谓词
对匹配某个标准的一个文档进行全文档检索(一个谓词)
对匹配某个标准的多个文档进行全文档检索(多个谓词)
对全部文档进行部分检索
对匹配某个标准的全部文档进行部分检索
这些操作使用如下 5个查询实现:
Q1(Select*):选择全部 XML文档(选择 <table>中的全部文档)
Q2(1Pred1Doc):返回一个给定帐号的客户文档
Q3(5PredSome):返回全部主要地址在加利福尼亚、拥有美元帐户、尚未达到高级客户级别的女性客户的客户文档
Q4(PartialAll):返回每个客户的姓名及其帐户的余额总数
Q5(PartialSome):获取全部在其任意帐户中持有 IBM 股票的客户的主要电子邮件地址
对于CLOB 来说,这些查询使用具有 XML Extender提取函数的SQL 表示。 对于XML列来说,这些查询使用XQuery 表示法。无论 XQueries 是嵌入在SQL中还是单独执行,在我们的测试中并没有性能区别。全部查询和某些示例数据在可下载的zip文件中提供。
图 5 显示了对pureXML和CLOB进行的全部 5个测试查询的查询性能(占用时间)。您可看到pureXML查询的速度可以很轻松地达到CLOB列中的XML 速度的20、30 或 40 倍。这些是没有用于表空间的系统文件缓存的默认设置的结果。图 6包括具有文件系统缓存的相同结果。文件系统缓存仅对查询Q1(检索全部文档,无谓词运算)有较大影响。在没有文件系统缓存的情况下,XML和CLOB列的Q1 执行效果类似,不在缓冲池进行缓冲的CLOB列略微落后(10%)。文件系统缓存大大改进了CLOB 检检索性能(参见 图 6),因此查询Q1 速度能够达到XML列的两倍以上。这是因为从 XML列读取数据需要串行化或将已解析的XML 转换回文本格式。在没有文件系统缓存的情况下,XML列在DB2 缓冲池进行缓冲而 CLOB列则不是,从而可降低开销。
图 5:查询性能,无索引,无文件系统缓存
- ››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 实战
更多精彩
赞助商链接