Themabewertung:
- 0 Bewertung(en) - 0 im Durchschnitt
- 1
- 2
- 3
- 4
- 5
ggeretsae
Erfahrener Benutzer
Beiträge: 621
Registriert seit: Apr 2009
|
sql, MEMORY, overhead
wenn ich viele Datensätze aus einer Tabelle lösche entsteht ja bei mysql erstmal ein overhead, den man mit nem einfachen optimize oder (glaube ich mal gelesen zu haben) mit einer modifikation der tabelle los wird (also insert, update etc...).
Jetzt habe ich mir ein Sessionsystem geschrieben, was mir die Benutzerdaten immer in eine Tabelle schreibt, welche als Storage Engine "MEMORY" hat.
Darauf kann man aber kein Optimize ausführen, wie bekomme ich jetzt den overhead und damit Ramverschwendung wieder weg?
jemand ne idee?
|
|
15.06.2009 11:57 |
|
CHRiSNEW
Internetblasensammler
Beiträge: 2.864
Registriert seit: Jul 2008
|
sql, MEMORY, overhead
Das Ding sollte afaik selbst Lücken finden und die befüllen, da bei MEMORY keine variablen Längen existieren.
Aber keine Garantie, ob das jetzt stimmt.
|
|
15.06.2009 13:54 |
|
ggeretsae
Erfahrener Benutzer
Beiträge: 621
Registriert seit: Apr 2009
|
sql, MEMORY, overhead
jo an sich müsste das schon stimmen, aber wie bekomm ich die lücken geschlossen, das ist mein problem.
es scheint mir, dass der ramverbrauch dynamisch in die höhe geht solange er gebraucht wird und anschliesend aber an dem punkt stehen bleibt, und das ist nen verhalten, was ich nich haben will.
|
|
15.06.2009 13:56 |
|
CHRiSNEW
Internetblasensammler
Beiträge: 2.864
Registriert seit: Jul 2008
|
sql, MEMORY, overhead
Zitat:Memory used by a MEMORY table is not reclaimed if you delete individual rows from the table. Memory is only reclaimed when the entire table is deleted. Memory that was previously used for rows that have been deleted will be re-used for new rows only within the same table. To free up the memory used by rows that have been deleted you should use ALTER TABLE ENGINE=MEMORY to force a table rebuild.
Problem solved.
|
|
15.06.2009 16:15 |
|
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste