Die betreffende Tabelle enthält ungefähr zehn Millionen Zeilen.
for event in Event.objects.all():
print event
Dies führt dazu, dass die Speichernutzung stetig auf etwa 4 GB ansteigt. Zu diesem Zeitpunkt werden die Zeilen schnell gedruckt. Die lange Verzögerung vor dem Drucken der ersten Zeile hat mich überrascht - ich hatte erwartet, dass sie fast sofort gedruckt wird.
Ich habe auch versucht, Event.objects.iterator()
was sich genauso verhält.
Ich verstehe nicht, was Django in den Speicher lädt oder warum es dies tut. Ich hatte erwartet, dass Django die Ergebnisse auf Datenbankebene durchläuft, was bedeuten würde, dass die Ergebnisse mit einer ungefähr konstanten Rate gedruckt werden (und nicht alle auf einmal nach einer langen Wartezeit).
Was habe ich falsch verstanden?
(Ich weiß nicht, ob es relevant ist, aber ich verwende PostgreSQL.)