2014-10-29 28 views
2

我需要在PL-SQL中創建一個非常大的xml文件(最多100k節點)。 哪種方式更快? DBMS_XMLDOM或appendchildxml?什麼是更快...... DBMS_XMLDOM vs appendchildxml

+0

Oracle 11g - 我們發現隨着兄弟節點數量的增加appendchildxml性能會相當快地降低。我們通過減少插入數量來顯着提高性能。我們通過將每個節點及其所有子節點組裝在一個小的臨時文檔中,然後通過appendchildxml將臨時文檔附加到主文檔中,而不是在目標「正在增長」的文檔中做所有事情(我們將在短期內看DOM如果可能的話,嘗試進一步提高性能 - 當我們有他們時,我會更新我們的研究結果) – Pancho 2014-11-25 06:58:50

回答

1

我們同樣使用Oracle 11g R2,並且我們爲報告目的創建了一個XML文檔。整個過程即。 檢索從數據庫中,重組的數據和程序集輸出XML文件,被採取130秒。

我們假設第一階段,即。 檢索,可能會佔用大部分時間,所以我們優化了這一點,並將總時間縮短了40秒,降低到90秒左右。

我們感到驚訝的是它仍然保持「慢」 - 所以我們研究了重組裝配階段,並給我們帶來驚喜發現時大部分正在採取裝配階段,隨着文檔的增長,每個appendchildxml語句都會逐漸變慢。

因此,我們刪除了appendchildxml,並將其完全替換爲dbms_xmldom代碼。令人高興的是,這種改變將整個過程減少到只有9秒,也就是說,一個數量級減少。

基於這個和其他性能增益,我們已經在數據庫上看到了dbms_xmldom,我會推薦使用dbms_xmldom。