집 >데이터 베이스 >MySQL 튜토리얼 >DataTable을 MySQL에 효율적으로 대량 복사하는 방법은 무엇입니까?
최적의 성능으로 MySQL에 데이터 테이블 대량 복사
Microsoft SQL Server에서 MySQL로 프로젝트를 마이그레이션할 때 대량 데이터 복사에 문제가 발생할 수 있습니다. 이는 Microsoft 시스템에 있는 일반적인 SqlBulkCopy API를 MySQL에서 직접 사용할 수 없기 때문입니다.
대량 복사 대안
한 가지 대안은 MySqlBulkLoader 클래스를 사용하는 것이지만, 여기에는 데이터를 CSV 파일로 내보낸 다음 가져오는 작업이 포함되며, 이로 인해 성능 병목 현상이 발생할 수 있습니다.
MySqlDataAdapter를 사용한 최적화 방법
그러나 더 효율적인 접근 방식은 다음과 같습니다. 트랜잭션 내에서 MySqlDataAdapter의 Update() 메서드를 활용하여 활용됩니다. 이 방법을 사용하면 구성 가능한 업데이트 배치 크기로 배치 삽입이 가능해 실행 시간이 크게 단축됩니다.
코드 예
다음은 MySqlDataAdapter 접근 방식을 사용하는 최적화된 예입니다.
<code class="csharp">using (MySqlTransaction tran = conn.BeginTransaction(System.Data.IsolationLevel.Serializable)) { using (MySqlCommand cmd = new MySqlCommand()) { cmd.Connection = conn; cmd.Transaction = tran; cmd.CommandText = "SELECT * FROM testtable"; using (MySqlDataAdapter da = new MySqlDataAdapter(cmd)) { da.UpdateBatchSize = 1000; using (MySqlCommandBuilder cb = new MySqlCommandBuilder(da)) { da.Update(rawData); tran.Commit(); } } } }</code>
MySqlBulkLoader와의 비교
MySqlBulkLoader를 사용하는 것과 비교할 때 MySqlDataAdapter 접근 방식은 실행 속도 측면에서 훨씬 뛰어납니다. 100,000개 행의 대량 삽입을 사용한 테스트에서는 MySqlDataAdapter를 사용하여 30초의 실행 시간이 나타난 반면 MySqlBulkLoader는 5~6초 만에 프로세스를 완료했습니다.
결론
DataTable을 MySQL로 효율적으로 대량 복사하려면 트랜잭션 내에서 MySqlDataAdapter의 Update() 메서드를 사용하는 것이 좋습니다. 이 접근 방식은 중간 CSV 내보내기 및 가져오기 없이 최적의 성능을 제공하므로 더 빠르고 효율적인 데이터 마이그레이션이 가능합니다.
위 내용은 DataTable을 MySQL에 효율적으로 대량 복사하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!