Oracle

Oracle 11g XMLType 體驗

  • September 16, 2014

我們目前正在評估儲存通用資料結構的可能性。我們發現,至少從功能的角度來看,Oracle XMLType 是舊 BLOB 的一個很好的替代品。因為您可以從 xml 查詢和更新單個欄位,還可以在 XPath 表達式上創建索引。

我們有點擔心 XMLType 的性能。尤其是select的表現很有趣。我們有一次選擇多個資料結構的查詢。這些需要快速。

這樣的查詢看起來像這樣

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

我們的 XML 文件大小為 7 到 8 KB。我們在 Oracle 11g 上創建類型為 的 XML 列XMLTYPE

您對 xml 類型列的選擇性能有經驗嗎?您對 XMLTYPE 有哪些總體經驗?這是一個強大而快速的 Oracle 特性嗎?還是它相當不成熟和實驗性的東西?

問候馬蒂亞斯

在過去的 4 年裡,我一直使用 Oracle Xmltype,從 Oracle 10.2.0.4 開始,現在使用 Oracle 12c。我覺得非常可靠。我們不僅將它用於儲存,還用於 XML 操作。在這方面,Oracle 在 XSLT 之上選擇了 XQuery。

性能取決於您定義這些 XML 的儲存方式。您可以將它們儲存為 CLOB、對象關係儲存或(在 12c 中)作為二進制 XML。您做出的選擇取決於不同的參數。CLOB 在 XML 中保留空格。對象關係儲存是最小的,二進制 XML(12c 中的預設值)介於兩者之間。

關於查詢速度,我更喜歡二進制 xml,但根據我的經驗,所有 3 種解決方案都非常可行。我沒有看到 CLOB 和 Xmltype(儲存為 clob)之間的任何性能差異。當 XML 以更壓縮的格式儲存時,您甚至可以提高速度。

XMLType CLOB 從 Oracle 12c 及更高版本開始被棄用。關於壓縮,AFAIK,目前這不會增加您的性能速度。

XMLType Securefile Binary XML 和/或 XMLType Object 關係儲存是最好的方法(二進制 XML 的 XML 模式或無模式,基於 XML 類型的 XML 模式 OR)。

要開始使用,請查看 XMLDB 首頁上的白皮書:

Oracle Database 12c 中 XQuery 處理的最佳實踐。2013 年 6 月 Oracle Database 12c 中 XML 儲存的最佳實踐

http://www.oracle.com/technetwork/database/database-technologies/xmldb/overview/index.html

XMLDB 以各種方式使用,從小型 SOA 環境到具有數百萬 XML 文件的 TB 環境。小的“如何做”也可以在這裡找到:www.xmldb.nl

XMLType Securefile Binary XML 是在數據庫版本 11.1 中引入的,可以進行重複數據刪除、保護或壓縮。可以在此處找到語法(http://www.liberidu.com/blog/2007/08/28/about-moving-deduplication-securefile-storage-and-encryption-of-binary-xmltype-tables/)或您的數據庫版本的 XMLDB 開發人員指南。

接近“前面”我不會在(至少)11.2.0.3.0(錯誤明智……)之前使用 XMLType Securefile 替代方案的壓縮

引用自:https://dba.stackexchange.com/questions/51782