Oracle 11g XMLType体验

时间:2013-10-18 19:23:10

标签: oracle oracle11g xmltype

1 你好社区,

我们目前正在评估存储通用数据结构的可能性。我们发现,至少从功能的角度来看,Oracle XMLType是一个很好的替代旧的BLOB。因为您可以从xml查询和更新单个字段,还可以在XPath表达式上创建索引。

我们有点担心XMLType的性能。特别是有趣的选择表现。我们有一次选择多个数据结构的查询。这些需要很快。

这样的查询看起来像这样

SELECT DOC_VALUE.getClobval()AS XML_VALUE FROM XML_TABLE WHERE d.ID = IN('1','2',...);

我们的XML文档大小为7到8 KB。我们使用Oracle 11g并创建类型为“XMLTYPE”

的XML列

您是否对xml类型列上的选择性能有经验?您对XMLTYPE有什么总体体验。这是一个强大而快速的Oracle功能吗?或者它是不成熟和实验性的东西。

问候,Mathias

2 个答案:

答案 0 :(得分:0)

XMLDB是我们自9i以来的强大而可靠的功能。

灵活模式XMLType列在隐藏的CLOB列上实现,而固定模式XMLType被分解为隐藏的表和视图;毕竟XMLType与标准对象一样可靠。

性能会因您的使用而有所不同,但是只读取XMLType上的整个XML就像在经典CLOB上读取相同内容一样快,因为实际上它真的只是读取并为您提供存储的XML代码在CLOB原样。

答案 1 :(得分:0)

您可以将XDB.XMLIndex分配给XMLType,之后性能会很好。我们有一个只有13,000条记录的表,每条记录包含一个不太大的XML Clob,如果它打印在文本上,每个可能有40页,而运行简单查询而没有XMLIndex通常需要10分钟以上,并运行更多复杂的查询通常需要2倍或3倍的时间!

使用XMLIndex,性能与典型表相当(全表扫描的毫秒级)。 XMLIndex可以像你需要的那样复杂,我尝试了这个天真的,它工作得很好:(我说天真,因为我不完全理解这个索引类型的内部工作方式!)

CREATE INDEX myschema.my_idx_name ON myschema.mytable
(SYS_MAKEXML(0,"SYS_SOMETHING$"))
INDEXTYPE IS XDB.XMLINDEX
NOPARALLEL;

您应该了解可用的各种XMLIndex选项,并根据您的需要进行选择。文档: https://docs.oracle.com/cd/B28359_01/appdev.111/b28369/xdb_indexing.htm#CHDJECDA