Seite 1 von 1

MySql MemoryError

Verfasst: Montag 23. August 2010, 00:01
von Killver
Hallo!

Ich mache einige mysql calls auf meiner lokalen Datenbank von sehr großen Tabellen und erhalte jetzt immer einen MemoryError.

Irgendeine Idee wie ich das lösen kann?

lg
killver

Re: MySql MemoryError

Verfasst: Montag 23. August 2010, 07:06
von BlackJack
@Killver: Weniger Daten abfragen? Mehr Quelltext zeigen?

Re: MySql MemoryError

Verfasst: Montag 23. August 2010, 08:56
von Killver
Weniger Daten Abfragen geht nicht. Mache ich dasselbe in sqlite gibt es kein Problem.

Source hilft hier auch nix, is ne einfache mysql SELECT WHERE Abfrage.

Re: MySql MemoryError

Verfasst: Montag 23. August 2010, 09:15
von BlackJack
@Killver: Ja aber was machst Du dann damit? Ein `fetch_all()`?

Re: MySql MemoryError

Verfasst: Montag 23. August 2010, 09:20
von Killver
Ja genau ein fetch_all()

Re: MySql MemoryError

Verfasst: Montag 23. August 2010, 09:21
von noisefloor
Hallo,

hm... hier steht auch so was ähnliches, also das man nicht das ganze Resultat auf einmal in der Speicher holen soll.

Mir ist gerade aber nicht ganz klar, ob es ein Fehler von MySQL an sich ist oder vom MySQLdb Modul?

Gruß, noisefloor

Re: MySql MemoryError

Verfasst: Montag 23. August 2010, 09:25
von Killver
Das hab ich auch shcon gefunden. Liegt glaub ich am Mysqldb modul. WÜrde mir das überhaupt was helfen, wenn die DB lokal ist? Warum swappt python eigentlich nicht?

Re: MySql MemoryError

Verfasst: Montag 23. August 2010, 09:33
von Killver
Ich habe das jetzt so probiert, wenn ich den cursor schrittweise durchgehe, anstatt ein fetchall zu machen scheint es zu funktionieren. Hoffe nur es ist dadurch nicht langsamer.

Re: MySql MemoryError

Verfasst: Montag 23. August 2010, 10:24
von noisefloor
Hallo,
WÜrde mir das überhaupt was helfen, wenn die DB lokal ist?
IMHO nein. Es liegt ja daran, wie MySQLdb die Daten handelt. Der Ort der DB ist egal.

Interessant wäre mal, ob dir mehr RAM helfen würden.
Hoffe nur es ist dadurch nicht langsamer.
Die ganzen Iteratoren sind in Python eigentlich sehr effizient - zumal es so wie so die empfohlene Weg ist, wenn man großen Datenmenge (egal aus einer DB oder nicht) handeln muss bzw. will.

Gruß, noisefloor

Re: MySql MemoryError

Verfasst: Montag 23. August 2010, 11:54
von /me
Killver hat geschrieben:Warum swappt python eigentlich nicht?
Das ist nicht die Aufgabe von Python, sondern, wie bei der Verwendung jeder anderen Programmiersprache auch, die des Betriebssystems.

Re: MySql MemoryError

Verfasst: Montag 23. August 2010, 14:40
von BlackJack
@Killver: Wie gross wäre denn so ein Ergebnis gewesen und wie sahen die Ergebnisse aus, so von den Datentypen und dem Umfang her?

Wie /me schon schrieb ist swappen Aufgabe des Betriebssystems und das tut das auch. Zumindest kann ich das bei meinen Python-Programmen beobachten, wenn die Daten umfamgreich genug werden.

Ich vermute mal eher Deine Daten werden so gross, dass sie nicht mehr in den virtuellen Adressraum eines Prozesses passen. Dann hilft auch kein swappen mehr.

Re: MySql MemoryError

Verfasst: Dienstag 24. August 2010, 06:45
von noisefloor
Hallo,

die genau Beschreibung des Memory Errors findet man hier. ist wohl so wie BlackJack sagt - zu großes Ergebnis.

BTW: Wo von hängt es ab, wie viel RAM ein Python-Prozess bekommt? Gibt es ein hartes oberes Limit oder ist das nur vom OS und RAM abhängig?

Gruß, noisefloor

Re: MySql MemoryError

Verfasst: Dienstag 24. August 2010, 09:07
von Leonidas
noisefloor hat geschrieben:BTW: Wo von hängt es ab, wie viel RAM ein Python-Prozess bekommt? Gibt es ein hartes oberes Limit oder ist das nur vom OS und RAM abhängig?
Es ist OS-abhängig.