zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Mysql: Tabelle Ordnen, nach Integer Werten (timestamp) oder Zeitformaten?

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 13.03.2007, 01:15
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 24.09.2003
Beiträge: 243
braindead befindet sich auf einem aufstrebenden Ast
Standard 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
so ungefähr. Meine Frage ist nun was geht schneller (die Datenbank muss die Zeilen ja Ordnen):
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?
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 13.03.2007, 23:09
Neuer Benutzer
neuer user
 
Registriert seit: 01.09.2006
Beiträge: 6
maruerru befindet sich auf einem aufstrebenden Ast
Standard

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
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 14.03.2007, 12:39
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 24.09.2003
Beiträge: 243
braindead befindet sich auf einem aufstrebenden Ast
Standard

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)
Mit Zitat antworten
  #4 (permalink)  
Alt 14.03.2007, 13:22
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.024
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Bevor ich fürs aufräumen irgendeinen extra Wert in die Datenbank schreibe, würde ich mir einfach im Aufräumskript die zuletzt bearbeitete ID merken -> irgendwo zwischenspeichern.
Mit Zitat antworten
  #5 (permalink)  
Alt 14.03.2007, 13:50
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 24.09.2003
Beiträge: 243
braindead befindet sich auf einem aufstrebenden Ast
Standard

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.
Mit Zitat antworten
  #6 (permalink)  
Alt 14.03.2007, 15:26
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.024
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Da hast du natürlich recht. Dann würde ich zum Timestamp greifen, da du diesen Wert ja scheinbar eh nur für die Aufräumaktion brauchst und ein Integer am leichtesten sortieren kannst. Neuen Einträgen musst du dann aber beim erstellen gleich einen Timestamp mitgeben, damit sich diese nahtlos in deine Aufräumkette einreihen.
(Man könnte den Wert auch leer lass und bei einem leeren Eintrag nochmal nach ID sortieren)
Mit Zitat antworten
  #7 (permalink)  
Alt 14.03.2007, 18:45
Benutzerbild von netspy
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 13.08.2004
Ort: Leipzig
Beiträge: 1.956
netspy sorgt für eine eindrucksvolle Atmosphärenetspy sorgt für eine eindrucksvolle Atmosphäre
Standard

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
__________________
AppDev Blog · AppDev Forum
Mit Zitat antworten
  #8 (permalink)  
Alt 14.03.2007, 18:51
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.024
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Mit Timestamp ist hier ein Unix-Timestamp gemeint und den kann er in ein Feld vom Typ int packen.
Mit Zitat antworten
  #9 (permalink)  
Alt 14.03.2007, 20:21
Benutzerbild von netspy
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 13.08.2004
Ort: Leipzig
Beiträge: 1.956
netspy sorgt für eine eindrucksvolle Atmosphärenetspy sorgt für eine eindrucksvolle Atmosphäre
Standard

Schadet aber trotzdem nicht, das noch mal zu erwähnen, da das nicht jeder weiß und es später zu schwer auffindbaren Fehlern führen kann.

Mario
__________________
AppDev Blog · AppDev Forum
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ä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


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:11 Uhr.