Wie kann man 250.000 Datensätze in MySQL mithilfe von Batch-Updates effizient aktualisieren? [geschlossen]

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wie kann man 250.000 Datensätze in MySQL mithilfe von Batch-Updates effizient aktualisieren? [geschlossen]

by Guest » 14 Jan 2025, 08:39

Ich muss 250.000 Datensätze in einer MySQL-Datenbank aktualisieren. Die Aktualisierung umfasst das Zusammenführen zweier Tabellen (student_records und enrollment_details) und das Festlegen der Felder „admission_date“ und „scribed_by“ in der Tabelle „student_records“ basierend auf der Tabelle „enrollment_details“. Die Aktualisierungsbedingung filtert auch Zeilen, in denen enrollment_details.enrollment_type = 'new_admission' ist.
Hier ist die ursprüngliche Abfrage, die ich verwendet habe:

Code: Select all

UPDATE student_records sr
JOIN enrollment_details ed ON ed.enrollment_id = sr.student_id
SET
sr.admission_date = ed.enrollment_date,
sr.admitted_by = ed.enrolled_by
WHERE
ed.enrollment_type = 'new_admission';
Dies funktioniert gut für kleine Datensätze, aber bei 250.000 Datensätzen kommt es entweder zu einer Zeitüberschreitung oder die Tabelle wird zu lange gesperrt, was sich auf andere Prozesse auswirkt.
Ich habe sowohl einen SQL-basierten Ansatz mit einer WHILE-Schleife als auch einen Python-basierten Ansatz mit pymysql versucht. Beim SQL-Ansatz wird jedoch nur der erste Stapel von Zeilen aktualisiert und nachfolgende Stapel werden nicht ausgeführt. Beim Python-Ansatz wird das Skript ohne Fehler ausgeführt, aktualisiert jedoch keine Datensätze.
Ich erwarte Folgendes:
  • Aktualisieren Sie alle 260.000 Datensätze effizient, ohne dass es zu Zeitüberschreitungen kommt oder die Tabelle zu lange gesperrt wird.
  • Stellen Sie sicher, dass Aktualisierungen in überschaubaren Stapeln erfolgen, damit der Prozess robust und skalierbar ist.
  • Identifizieren Sie, warum die von mir ausprobierten Ansätze nicht funktionieren erwartet.

Top