|
|||
Mysql: Tabelle Ordnen, nach Integer Werten (timestamp) oder Zeitformaten?
Hi,
ich will eine Tabelle meiner Mysql Datanbank aufräumen, das Problem ist nicht das Aufräumen selbst (das passiert per Script) sondern die Laufzeit meiner php Scripte, die ist nämlich beschränkt. Das ist aber kein Problem denn ich kann auch einfach immer nur einen Teil der Tabelle aufräumen lassen (ich lasse das dann per Cronjob starten) dafür habe ich mir überlegt das die Tabelle eine zusätzliche Spalte bekommt in welcher ich entweder irgenteine Form von Datum oder Zeit Wert eintrage (Date, Time oder Datetime Typ) oder ich verwende einen INT Wert und trage für jede Abgearbeite Zeile dort die aktuelle Zeit im Timestamp format ein also dieses UNIX Format welches die Zeit in Sekunden seit dem beginn des UNIX Zeitalters angibt. Ich lasse das Script dann nur die X Zeilen bearbeiten welche das älteste Datum haben. Mit dieser Select Anfrage: Code:
SELECT * FROM tabelle ODER BY zeitwert ASC LIMIT 100 1. ein Tabelle nach Integerwerten (welche dann Timestamp Werte sind) zu ordnen oder 2. Die Tabelle direkt nach Datums oder Zeit Formaten zu ordnen, wenn ja welches eignet sich am besten? oder gibt es 3. noch eine Bessere Methode die schon abgearbeiteten Zeilen erst dann wieder an die Reihe kommen zu lassen nachdem alle anderen Zeilen dran waren? |
Sponsored Links |
|
|||
Hallo braindead,
ich bin's wieder. Bei der obigen Abfrage ist das eigentlich egal. Wenn du einen Primary-Index mit auto-increment hast, dann benutze doch den. Die zeitliche Reihenfolge steckt ja im Primary-Index mit drinnen. Größere Wert bedeutet später. Der Vorteil von Integer ist, daß der benötigten Speicherplatz kleiner ist als bei Datumsangaben. Du kannst die SELECT-Abfrage auch in eine Schleife hängen und den Script-timeout mittels "set_time_limit(Wert in Sekunden)" verlängern. Habe es so für ein Import-Skript gemacht, daß manuell angestoßen wird und dann durchaus eine Stunde läuft. Funktioniert allerdings nicht im Safemode. Was willst du eigentlich aufräumen? Gruß maruerru |
Sponsored Links |
|
|||
Es soll wie gesagt kein einmaliges Aufräumen sein, sondern wie für ein Aufräumen so üblich, soll es immer wieder passieren. Um es etwas konktreter zu machen, ich habe mehrere Tabellen in der Datenbank und bestimmte Werte, die häufig verwendet oder benötigt werden und nicht unbedingt in Echtzeit zur verfügung stehen müssen, aber selber Kondensate aus ganzen Datensätzen darstellen. Deshalb will ich einfach schon direkt in die Tabelle den zugehörigen Objekten diese Werte zuordnen, in schon fertig berechneter Form. Und weil sie die anderen Tabellen aus dehnen sich diese Werte berechnen lassen ständig ändern, muss eben die Tabelle, sobald sie einmal von vorne bis hinten "aufgeräumt" ist wieder von vorne beginnen. Deshalb eignet sich auch der Primary Key oder die Spalten ID auch nicht.
Geändert von braindead (14.03.2007 um 12:51 Uhr) |
|
|||
Das Problem ist aber das die Objekt Tabelle auch immer wieder neue Einträge bekommt, und die neusten Einträge sind dann auch gleich was die Aufräumwerte angeht, auf dem neusten Stand d.h. das Skript würde, wenn es nach der ID geht, die neusten Einträge noch von den alten die eben nicht so aktuell sind machen, und im Schlimmsen Fall kommen dann zwischen den Aufräumschritten soviele neue Einträge dazu das das Skript nur immer die neusten Einträge bearbeitet, weil es ja die mit der höhsten/nächsten ID sind.
|
|
||||
Ein TIMESTAMP ist eher ungünstig, da der immer automatisch aktualiert wird, wenn man den Datensatz ändert - also nicht nur beim Aufräumen. Wenn also während dem Aufräumen die Datensätze anderweitig geändert werden, ist der TIMESTAMP auch aktuell und das Aufräumscript würde den Datensatz nicht mehr berücksichtigen.
Mario |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
MySQL Tabelle "reseten" | esperance | Serveradministration und serverseitige Scripte | 15 | 15.04.2009 22:32 |
MYSQL: 2 Timestamp = Problem | tichy | Serveradministration und serverseitige Scripte | 11 | 10.12.2008 20:09 |
Mysql Select über zwei Tabellen, von einer Tabelle pauschal alles selektieren? | braindead | Serveradministration und serverseitige Scripte | 2 | 06.01.2008 21:41 |
Mysql Tabelle in UTF-8 Umwandeln | braindead | Serveradministration und serverseitige Scripte | 8 | 28.06.2007 12:36 |
Tabelle mit Werten aus 2 MySQL DBs | mooonshadow | Serveradministration und serverseitige Scripte | 1 | 03.01.2007 12:56 |