나는 다음과 같은 스키마를 갖는 테이블에 많은 행을 삽입 해요 :Oracle DB에 XML을 삽입하는 데 시간이 오래 걸리는 이유는 무엇입니까?
TABLE "SPACE"."WORKTABLE"
( "ID" NUMBER,
"AUTHOR" VARCHAR2(20 BYTE),
"INSERTION_DATE" DATE,
"XML_DOCUMENT" "SYS"."XMLTYPE"
)
삽입은 ADO.NET (OracleXmlType
)를 사용하여 수행되고있다. 첫 번째로 삽입 된 행이 완료되는 데 2 분 이상 걸립니다. 그러나이 삽입이 완료되면, 다음 모든 것은 첫 번째 것보다 훨씬 적은 시간이 걸립니다.
- 왜 이렇게 되나요?
- 이것은 XML을 삽입 할 때 수행되는 XML 구문 분석과 관련이 있습니까? 왜 (그렇다면) 첫 번째 삽입에서만 발생합니까?
- 이번 시간을 단축 할 수 있습니까?
(가능하면, 답을 기록하십시오)
UPDATE : 코드가 실행되는 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();
}
UPDATE : 우리는 지연의 원인이 라인이 OracleXmlType xmlType = new OracleXmlType(con, entidadXML);
입니다 것으로 나타났습니다
. 오라클이 XML 유효성을 검사하는 것을 막음으로써 문제를 해결할 수 있습니까? 그렇다면 ... 어떻게 할 수 있습니까? 연결을 사용하여 직접 명령으로?
"오랜 시간"이란 무엇을 의미합니까? 허용 가능한 시간 제한은 무엇입니까? 오랜 시간이 걸릴 수도 있음을 나타내는 코드를 제공하지 않았습니다. – Ben
예, 코드를 보여줄 수 있습니까? 오라클 대신 코드에 버그가있을 수 있습니까? – Pete
@ben 우리는 많은 단위 테스트를위한 시나리오를 설정하기위한 데이터를 수립하고 있습니다. 이 데이터는 마치 숫자가있는 행을 삽입 한 것처럼 삽입 될 것입니다. 또는 더 나은 : 가능한 한 빨리. 삽입에는 30 초가 걸리고 300 단위 테스트가 있기 때문에 모든 단위 테스트를 실행하는 데는 실용적이지 않습니다. 또한, 질문에 언급했듯이, 첫 번째 삽입은 대부분의 시간이 걸립니다. – JPCF