> 데이터 베이스 > MySQL 튜토리얼 > 대용량 데이터 삽입을 위해 Entity Framework를 어떻게 최적화할 수 있습니까?

대용량 데이터 삽입을 위해 Entity Framework를 어떻게 최적화할 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2025-01-23 21:42:10
원래의
962명이 탐색했습니다.

How Can I Optimize Entity Framework for High-Volume Data Insertion?

Entity Framework의 데이터 삽입 속도 향상

Entity Framework에 대용량 데이터를 삽입하려면 최적화된 기술이 필요합니다. 이 기사에서는 빠른 삽입 속도를 달성하는 가장 효율적인 방법을 살펴봅니다.

잦은 SaveChanges() 통화의 함정

각 레코드에 대해 SaveChanges()을 호출하는 것은 주요 성능 병목 현상입니다. 속도를 최대화하려면 이 방법을 사용하지 마십시오. 다음 대안을 고려하십시오.

일괄 SaveChanges():

  • 단일 SaveChanges() 호출을 실행하여 모든 삽입을 동시에 커밋합니다.

주기적 SaveChanges():

  • 삽입을 일괄 처리(예: 레코드 100개)하고 각 일괄 처리 후에 SaveChanges()를 호출합니다.

컨텍스트 재활용:

  • DbContext마다 SaveChanges()를 삭제하고 새
  • 를 만듭니다. 이렇게 하면 시간이 지남에 따라 성능에 큰 영향을 미칠 수 있는 추적된 엔터티가 누적되는 것을 방지할 수 있습니다.

예시 코드:

이 예는 효율적인 삽입 전략을 보여줍니다.
<code class="language-csharp">using (TransactionScope scope = new TransactionScope())
{
    MyDbContext context = null;
    try
    {
        context = new MyDbContext();
        context.Configuration.AutoDetectChangesEnabled = false;

        int count = 0;
        foreach (var entityToInsert in someCollectionOfEntitiesToInsert)
        {
            ++count;
            context = AddToContext(context, entityToInsert, count, 100, true);
        }

        context.SaveChanges();
    }
    finally
    {
        if (context != null)
            context.Dispose();
    }

    scope.Complete();
}</code>
로그인 후 복사

벤치마크 결과:

560,000개 개체를 대상으로 한 테스트에서 다음과 같은 결과가 나왔습니다.
  • SaveChanges()개인 :
  • 몇 시간(매우 느림)
  • 100개 레코드 일괄 처리:
  • 164초
  • 1000개 레코드 일괄 처리:
  • 191초

SaveChanges()이러한 결과는 컨텍스트 삭제를 사용하는 주기적

이 최고의 성능을 제공한다는 것을 나타냅니다.

위 내용은 대용량 데이터 삽입을 위해 Entity Framework를 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿