Alte Datensätze automatisch löschen

Alte Datensätze automatisch löschen

am 28.03.2005 13:42:16 von sr-news

Guten Tag,

ich möchte das Volumen einer MySQL-Tabelle in gewissen Grenzen halten,
und automatisch ältere Datensätze automatisch löschen.

Es soll sich dabei so gestalten, dass maximal "n" Datensätze drin
stehen. Alle älteren fliegen 'raus.

Kann mir jemand helfen?

Schöne Grüße und einen angenehmen freien Tag,
André

Re: Alte Datensätze automatisch löschen

am 28.03.2005 15:09:02 von Axel Schwenke

André wrote:
>
> ich möchte das Volumen einer MySQL-Tabelle in gewissen Grenzen halten,
> und automatisch ältere Datensätze automatisch löschen.

Eventuell ist eine Datenbank ja gar nicht das richtige Speichermedium
für deine Anwendung?

> Es soll sich dabei so gestalten, dass maximal "n" Datensätze drin
> stehen. Alle älteren fliegen 'raus.
>
> Kann mir jemand helfen?

Das freundliche Manual:

Die Aufgabe wird wesentlich einfacher (und effizienter) lösbar, wenn
die Aufgabenstellung geändert wird zu "lösche alle Datensätze, die
älter sind als X". Hinreichend neue MySQL-Versionen beherrschen zwar
DELETE ... ORDER BY ... LIMIT ... aber das ist meist wenig effizient.

In jedem Fall brauchen deine Datensätze aber eine Eigenschaft, anhand
derer ihr Alter bestimmbar wird.


XL

Re: Alte Datensätze automatisch löschen

am 18.04.2005 21:54:38 von Alexander Fischer

Damit das funktioniert, muss die Tabelle zumindest 'nen auto_increment
Schlüssel haben.

So aus dem Kopf heraus würde ich das etwa so machen:

CREATE TABLE newtable SELECT * FROM oldtable ORDER BY auto_increment
DESC LIMIT 20

DELETE FROM TABLE oldtable WHERE 1

INSERT INTO oldtable SELECT * FROM newtable ORDER BY auto_increment DESC

Das kann man dann in PHP einfügen etc.

Grüße,

Alexander

"Axel Schwenke" schrieb im Newsbeitrag
news:elv82d.d05.ln@idefix.xl.local...
> André wrote:
>>
>> ich möchte das Volumen einer MySQL-Tabelle in gewissen Grenzen halten,
>> und automatisch ältere Datensätze automatisch löschen.
>
> Eventuell ist eine Datenbank ja gar nicht das richtige Speichermedium
> für deine Anwendung?
>
>> Es soll sich dabei so gestalten, dass maximal "n" Datensätze drin
>> stehen. Alle älteren fliegen 'raus.
>>
>> Kann mir jemand helfen?
>
> Das freundliche Manual:
>
> Die Aufgabe wird wesentlich einfacher (und effizienter) lösbar, wenn
> die Aufgabenstellung geändert wird zu "lösche alle Datensätze, die
> älter sind als X". Hinreichend neue MySQL-Versionen beherrschen zwar
> DELETE ... ORDER BY ... LIMIT ... aber das ist meist wenig effizient.
>
> In jedem Fall brauchen deine Datensätze aber eine Eigenschaft, anhand
> derer ihr Alter bestimmbar wird.
>
>
> XL

Re: Alte Datensätze automatisch löschen

am 18.04.2005 21:59:00 von Alexander Fischer

Und newtable noch droppen natürlich...