>  기사  >  데이터 베이스  >  DataTable을 MySQL에 효율적으로 대량 복사하는 방법은 무엇입니까?

DataTable을 MySQL에 효율적으로 대량 복사하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-24 06:34:30625검색

How to Efficiently Bulk Copy DataTables to 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.