2014-10-29 7 views
2

Мне нужно создать очень большой файл xml (до 100k узлов) в PL-SQL. Какой путь быстрее? DBMS_XMLDOM или appendchildxml?что быстрее ... DBMS_XMLDOM vs appendchildxml

+0

Oracle 11g - мы находим, что производительность appendchildxml ухудшается довольно быстро по мере увеличения количества узлов-братьев. Мы значительно улучшили производительность, минимизируя количество вставок. Мы делаем это, собрав каждый узел и все его дочерние элементы в небольшом промежуточном документе, а затем добавив промежуточный документ в основной документ с помощью appendchildxml, вместо того, чтобы делать все в целевом «растущем» документе (мы вскоре посмотрим на DOM попытаться увеличить производительность дальше, если это возможно - я буду обновлять наши результаты, когда мы их получим) – Pancho

ответ

1

Мы также используем Oracle 11g R2, и мы создаем XML-документ для целей отчетности. Весь процесс, т. Е. извлечения из базы данных, реструктуризация данных и сборка выходной XML-документ, принимал 130 секунд.

Мы предположили, что первая фаза, т.е. извлечение , вероятно, займет большую часть времени, поэтому мы оптимизировали это и сократили общее время на 40 секунд до примерно 90 секунд.

Мы были удивлены тем, что она по-прежнему остается «медленной» - таким образом, мы исследовались реструктуризации и сборочных фазы, и к нашему удивлению, обнаружили, что большая часть времени, принимаемые сборки фазы, с каждый оператор appendchildxml становится медленнее по мере роста документа.

Мы поэтому лишили appendchildxml и полностью заменили его кодом dbms_xmldom.

К счастью, это изменение уменьшило весь процесс до 9 секунд, т.е. на порядок.

Основываясь на этом и других показателях производительности, которые мы видели в базе данных с помощью dbms_xmldom, я бы рекомендовал использовать dbms_xmldom.

Смежные вопросы