Heim > Datenbank > MySQL-Tutorial > Wie kann ich das Entity Framework für das Einfügen großer Datenmengen optimieren?

Wie kann ich das Entity Framework für das Einfügen großer Datenmengen optimieren?

Mary-Kate Olsen
Freigeben: 2025-01-23 21:42:10
Original
962 Leute haben es durchsucht

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

Steigerung der Dateneinfügungsgeschwindigkeit von Entity Framework

Das Einfügen großer Datenmengen in Entity Framework erfordert optimierte Techniken. In diesem Artikel werden die effizientesten Methoden zum Erreichen schneller Einfügegeschwindigkeiten untersucht.

Die Gefahr häufiger SaveChanges()Anrufe

Das Aufrufen SaveChanges() für jeden Datensatz ist ein großer Leistungsengpass. Vermeiden Sie diese Vorgehensweise, um die Geschwindigkeit zu maximieren. Betrachten Sie diese Alternativen:

Charge SaveChanges():

  • Führen Sie einen einzelnen SaveChanges()-Aufruf aus, um alle Einfügungen gleichzeitig zu übernehmen.

Periodisch SaveChanges():

  • Verarbeiten Sie Einfügungen in Stapeln (z. B. 100 Datensätze) und rufen Sie SaveChanges() nach jedem Stapel auf.

Kontextrecycling:

  • Entsorgen Sie das DbContext nach jedem SaveChanges() und erstellen Sie ein neues. Dies verhindert die Anhäufung von verfolgten Entitäten, die sich im Laufe der Zeit erheblich auf die Leistung auswirken können.

Illustrativer Code:

Dieses Beispiel zeigt eine effiziente Einfügungsstrategie:

<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>
Nach dem Login kopieren

Benchmark-Ergebnisse:

Ein Test mit 560.000 Unternehmen ergab folgende Ergebnisse:

  • Einzelperson SaveChanges():Mehrere Stunden (extrem langsam)
  • Stapelverarbeitung bei 100 Datensätzen: 164 Sekunden
  • Stapelverarbeitung bei 1000 Datensätzen: 191 Sekunden

Diese Ergebnisse zeigen, dass periodisches SaveChanges() mit Kontextentsorgung die beste Leistung bietet.

Das obige ist der detaillierte Inhalt vonWie kann ich das Entity Framework für das Einfügen großer Datenmengen optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage