Code:
[b]Tabelle "Cache"[/b]
Name VARCHAR(31) UNIQUE KEY
Time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
Size INT
Data TEXT
Hash CHAR(32)
Size entspricht sozusagen Length(Data)
wenn ich z.B. diese Daten in der Tabelle hab (Datum/Zeit vereinfacht)
> schon nach Datum sortiert, da das Neuste ja immer angehängt wird
Code:
Name Time Size ...
A 1°° 123 ...
B 2°° 345 ...
C 3°° 234 ...
D 4°° 111 ...
E 5°° 432 ...
F 6°° 789 ...
G 7°° 333 ...
H 8°° 123 ...
und die Größe auf 2000 begrenzen möchte
Alles = 2490
H bis C = 2022
H bis D = 1788
Also müßte hier A-C gelöscht werden, damit die Größe wieder unter die 2000 kommt
also von unten her alles drin lassen, bis die Summe der Size-Felder die Grenze erreicht und ab da den Rest löschen.
[add]
mir fällt grad ein, ich könnte, falls es so nicht geht,
mit einem Durchschnitt rechnen
Sum(Size) / Count(*) = Durchschnittliche größe der Einträge
Sum(Size) - Grenze = was zuviel ist
(Sum(Size) - Grenze) / (Sum(Size) / Count(*)) wäre dann doch die Anzahl der zu löschenden Einträge
also nach aufsteigend nach Datum sortieren und die ersten X Datensätze löschen
ich glaub ich versuch's erstmal so, auch wenn so die größe mal überschritten werden kann, falls sich keine Lösung findet