2

こんにちは、私は現在 Oracle 11.2 XE を使用しており、大きな xml ファイルを操作する際にいくつかのパフォーマンス テストを行おうとしています。これまでのところ、私はあまりうまくいきませんでした。少し助けていただければ幸いです。

私の目標は、データベース内で大きな xml ドキュメントを 1 つの xml 形式から別の xml 形式に効率的に変換することです。そのため、XMLType バイナリおよび XMLType オブジェクト リレーショナル データ型に期待を寄せています。ほとんどの場合、XPath 式。

問題 1 は、複雑なスキーマを OR XMLTYPE に登録できないことです。1 時間の登録時間の後、約 1.3 GB のメモリ割り当てでメモリ不足エラーが発生して中断します。スキーマはすでに 3 つのファイルに分割されています。メモリ不足エラーを引き起こすファイルは 80 KB しかありません。これをどのように処理すればよいですか?インクルードを介してより多くの接続されたスキーマファイルをさらに分類しますか?

問題 2 は、XMLTransform を機能させることができないことです。使ってる

Insert into OUTPUT_BINARY SELECT a.filename, XMLtransform( a.xml, b.stylesheet )
FROM XMLTYPE_BINARY a, stylesheets b
  WHERE (a.filename = 'test.xml' and b.filename = 'stylesheet.xsl');

テーブル XMLTYPE_BINARY および OUTPUT_BINARY の場所

create table XMLTYPE_BINARY (filename varchar2(50), xml XMLTYPE) 
XMLTYPE Column xml store as BINARY XML

100KB のドキュメントの場合でも、変換に永遠に時間がかかります (30 分で終了しました) 5MB のドキュメントを試してみると、ORA-24331: ユーザー バッファが小さすぎます。誰かが私がここで見逃していることを教えてもらえますか?

4

1 に答える 1

0

これはおそらく XE バージョンの制限であると思いましたが、Oracle 11gR2 でも同じです。XMLTYPE の XMLTransform の代わりに dbms_xslprocessor を試しました。XMLINDEX を介してバイナリ XMLTYPE 列にインデックスを付けましたが、100 KB のファイルを 10 分以上処理するのにまだ時間がかかりすぎています (一度も終了せず、常に途中で終了しました)。

Javaアプリケーションを使用して、データベースの外部でXDKパーサーとプロセッサを使用して同じドキュメントをすでに変換しており、良好な結果を得ることができました。では、なぜ db 内のパーサーとトランスフォーマーがうまく機能しないのでしょうか?

于 2012-08-09T11:14:28.247 に答える