0

次のスキーマを持つテーブルに多くの行を挿入しています。

TABLE "SPACE"."WORKTABLE" 
   (    "ID" NUMBER, 
    "AUTHOR" VARCHAR2(20 BYTE), 
    "INSERTION_DATE" DATE, 
    "XML_DOCUMENT" "SYS"."XMLTYPE" 
   )

挿入はADO.NET()を使用して行われOracleXmlTypeます。最初に挿入された行は、完了するまでに2分以上かかります。しかし、この挿入が行われた後、以下のすべては最初のものよりもはるかに短い時間で済みます。

  1. なんでそうなの?
  2. これは、XMLを挿入するときに実行されるXML解析にのみ関連していますか?なぜ(はいの場合)最初の挿入時にのみ発生するのですか?
  3. この時間を減らすことはできますか?

(可能であれば、回答を文書化してください)

更新:実行されるコードは、5500文字の長さのXMLを持つ最大10行の単純な挿入です。また、ラグの原因として、接続を開くのにかかる時間をすでに取り除いています。

string sql = "INSERT INTO WORKTABLE VALUES ( " + rowID + ",'JBALVIN',1,'01-JAN-12',:xmldocument)";
using (OracleCommand comm = new OracleCommand(sql, con))
{
    comm.Parameters.Add(":xmldocument", OracleDbType.XmlType);
    OracleXmlType xmlType = new OracleXmlType(con, entidadXML);
    comm.Parameters[0].Value = xmlType;
    comm.ExecuteNonQuery();
}

アップデート:

We have noticed that the line causing the delay is OracleXmlType xmlType = new OracleXmlType(con, entidadXML);. Could it be fixed by stopping Oracle to check XML validity? If so... how can it be done? by a direct command using the connection?

4

1 に答える 1

0

うーん...いくつかの推測とグーグルの後、XMLで使用されているスキーマを持つURLが削除された場合(属性xmlns:xsixsi:noNamespaceSchemaLocation)、挿入はミリ秒のオーダーで行われることがわかりました。残念ながら、この動作は Oracle OracleXmlType documentationに記載されていません。

于 2013-02-04T15:09:30.570 に答える