SqlObject und PickleCol

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
moesibaer
User
Beiträge: 16
Registriert: Donnerstag 27. Dezember 2007, 15:54
Kontaktdaten:

Mittwoch 23. Januar 2008, 00:52

Hallo zusammen,

ich habe ein gewaltiges Perfomanz Problem mit SqlObject und Mysql.

Ich speichere in einer Tabelle von meinen Xen Domains den Traffic, Cputime und die Festplattenauslastung. Diese Stati lese ich aus 'xm list'

Die Tabelle hab ich in SqlObject folgendermaßen definiert

Code: Alles auswählen

class HostState(SQLObject):
    class sqlmeta:
        cacheValues = False

    user = ForeignKey("User")
    host = ForeignKey("Host")
    cputime = PickleCol()
    diskread = PickleCol()
    diskwrite = PickleCol()
    time = DateTimeCol()
In diese Tabelle werden nun die oben genannten Stati alle 5min reingeschrieben. Daher ist diese Tabelle schon nach einem Tag ziemlich gewaltig. Da die Werte nur zu Statistik verwendet werden, lösche ich immer alte Werte:

Code: Alles auswählen

DELETE_INTERVAL = timedelta(days=7)
for item in Traffic.select(Traffic.q.time < datetime.now()-DELETE_INTERVAL):
    Traffic.delete(item.id)
Was jedoch passiert, wenn diese Schleife aufgerufen wird ist, dass die cpulast sofort auf 100% springt und sich der Speicher langsam aber sicher vollfrist bis teilweise mein Rechner einfriert, wenn die Logik nicht zuvor zu ende geht.

Kann mir jemand einen Tipp geben, wie ich damit umgehen sollte um den Zugriff schneller zu gestalten.

Für eure Hilfe danke ich jetzt schomal
Antworten