Effiziente Nutzung von MySQLDB SSCursor für große Ergebnismengen
Bei der Verarbeitung großer Ergebnismengen mit Hunderttausenden oder mehr Zeilen wird eine effiziente Speicherverwaltung gewährleistet entscheidend. Daher erweist sich der MySQLDB SScursor (Streaming Select Cursor) als geeignetes Werkzeug zur Minimierung des Speicherverbrauchs.
Unterscheidung zwischen Fetchall() mit Base Cursor vs. SSCursor
Entgegen der landläufigen Meinung verbraucht die Ausführung von fetchall() über einen SScursor mehr Speicher als über einen Basiscursor. Dies liegt daran, dass ein SScursor die Ergebnisse inkrementell in Blöcken vom Server abruft, während fetchall() die gesamte Ergebnismenge in den Speicher herunterlädt. Daher wird die Verwendung von fetchall() für speicherbeschränkte Szenarien kontraintuitiv.
Iterieren über Ergebnisse mit SSCursor
Um Ergebnisse von einem SScursor Zeile für Zeile effizient zu streamen Zeilenbasis verwenden Sie die folgende Methode:
import MySQLdb.cursors
connection=MySQLdb.connect(
host="thehost",user="theuser",
passwd="thepassword",db="thedb",
cursorclass = MySQLdb.cursors.SSCursor)
cursor=connection.cursor()
cursor.execute(query)
for row in cursor:
print(row)
Diese Methode iteriert über die Ergebnismenge, ohne den gesamten Inhalt im Speicher zu speichern und verbraucht nur minimale Ressourcen.
Zusätzliche Optimierungen
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3