여러 삽입/업데이트/삭제가 같은 테이블 (들)에 적용 할 경우, MySqlDataAdapter/DataTable 조합을 사용하여 같은 문을 함께 배치하는 것이 좋습니다. MySqlDataAdapter의 UpdateBatchSize 속성을 설정하면 일괄 처리 지원을 활성화/비활성화 할 수 있습니다. 따라서 같은 테이블에 삽입/업데이트/삭제를 한 번에 DB로 보낼 수 있습니다.
나는 OracleDataAdapter와 SqlDataAdapter를 통해 상당한 성능 향상을 얻었습니다. MySqlDataAdapter는 기본 일괄 처리도 구현 한 것으로 보입니다 (실제로 테스트하지는 않았습니다).
DbCommandBatch 클래스의 형태로 기본 DbDataAdapter/DataTable 클래스를 숨기는 래퍼 클래스를 만드는 것이 좋습니다. 그런 다음이 클래스는 IDbCommand 템플릿에서 필요한 DataTable 백업을 구축하고 궁극적으로 원하는 경우 명령과 같이 그룹화 할 수 있습니다.
public interface IDbBatchCommandFactory
{
IDbCommandBatch Create(IDbCommand templateCommand);
}
그래서 기존의 매개 변수 컬렉션을 반복하여 원하는 경우 실제로 템플릿 명령에서 필요한 DataTable의를 구축 할 수있는 방법을 만듭니다 (당신이 이미 가지고있는 코드에 따라 쉽게 만들 수 있습니다 삶). 그러면 다음과 같은 인터페이스를 구현하는 클래스를 만들 수 있습니다.
public interface IDbBatchCommand : IDisposable
{
void AddToBatch(ParameterCollection parameters);
void ExecuteBatch(IDbTransaction transaction);
}
올바른 경로에 필요한 경우 샘플 코드를 제공 할 수 있습니다. 각 명령이 서로 다른 경우 (즉, 항상 다른 테이블 등), 이는 아무 값도 제공하지 않습니다.
참고 : 완벽한 세계에서 SqlCommandSet 등과 같은 클래스는이 유닉스를 수행하지 않아도되도록 공개적으로 사용할 수 있습니다.
감사합니다. DataTable을 사용하여 이동하십시오. –