次のスキーマを持つテーブルに多くの行を挿入しています。
TABLE "SPACE"."WORKTABLE"
( "ID" NUMBER,
"AUTHOR" VARCHAR2(20 BYTE),
"INSERTION_DATE" DATE,
"XML_DOCUMENT" "SYS"."XMLTYPE"
)
挿入はADO.NET()を使用して行われOracleXmlType
ます。最初に挿入された行は、完了するまでに2分以上かかります。しかし、この挿入が行われた後、以下のすべては最初のものよりもはるかに短い時間で済みます。
- なんでそうなの?
- これは、XMLを挿入するときに実行されるXML解析にのみ関連していますか?なぜ(はいの場合)最初の挿入時にのみ発生するのですか?
- この時間を減らすことはできますか?
(可能であれば、回答を文書化してください)
更新:実行されるコードは、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?