phpbar.de logo

Mailinglisten-Archive

[php] unverstaendliche Daten

[php] unverstaendliche Daten

Martin Adler martin.adler at continum.net
Don Aug 17 11:46:04 CEST 2006


Lutz Zetzsche wrote:
> Am Donnerstag, 17. August 2006 11:22 schrieb Martin Adler:
>> Hallo,
>>
>> Norbert Pfeiffer wrote:
>>> Hallo,
>>>
>>> lasse mir eine Tabelle mit "ORDER BY dZeit DESC" ausgeben:
>>> +--------+---------------------+
>>>
>>> | nErrID | dZeit               |
>>>
>>> +--------+---------------------+
>>>
>>> |   2820 | 2006-08-17 10:10:01 |
>>> |   2824 | 2006-08-17 10:00:01 |
>>> |   2819 | 2006-08-17 10:00:01 |
>>> |   2818 | 2006-08-17 09:50:02 |
>>> |   2823 | 2006-08-17 09:50:01 |
>>> |   2817 | 2006-08-17 09:40:01 |
>>> |   2822 | 2006-08-17 09:40:01 |
>>> |   2821 | 2006-08-17 09:30:54 |
>>> |   2816 | 2006-08-17 09:30:01 |
>>> |   2815 | 2006-08-17 09:20:01 |
>>> |   2814 | 2006-08-17 09:10:01 |
>>> |   2813 | 2006-08-17 09:00:01 |
>>> |   2812 | 2006-08-17 08:50:01 |
>>> |   2811 | 2006-08-17 08:40:01 |
>>> |   2810 | 2006-08-17 08:30:01 |
>>>
>>> +--------+---------------------+
>>> Was mich stutzig macht ist: nErrID ist ein auto_increment-Feld.
>>> In die Tabelle wird nur geschrieben, nichts veraendert. Der
>>> Zeiteintrag erfolgt mit NOW(), d.h. es wird der Zeitpunkt des
>>> Eintragens verwendet.
>>> Ergo sollten die ID's in ihrer Reihenfolge doch dem Zeitstempel
>>> folgen, oder sehe ich da etwas falsch ... ?
>> das Script wir wohl alle 10 minuten von enem CronJob aufgerufen.
>> Für mich hat es den Anschein, als ob man kurz nach 10:10:01 (nErrID
>> 21) die Uhr um 40 Minuten zurückgesetzt hat.
>>
>> Wird die Systemzeit mit einem Timeserver gesynct oder hat ein Admin
>> die Zeit umgestellt?.
> 
> Das könnte sein... Ich hatte auch die ORDER BY-Klausel am Anfang 
> übersehen. Lass die doch mal weg, Norbert. Guck mal, wie die 
> Reihenfolge dann aussieht. Wenn ich das richtig in Erinnerung habe, 
> müßten die Datensätze dann so kommen, wie sie MySQL weg geschrieben 
> hat.

Prinzipiell ja, jedoch kann es bei längerer Laufzeit mit vielen 
Änderungen (deletes und inserts) dazu kommen das Daten eben nicht in der 
Reihenfolge zurückgeliefert werden in der diese eigentlich 
hineingeschrieben wurden.
Dies hat wohl mathematische Gründe wie die Daten von der Engine 
gespeichert werden.

Daher solle man bei Daten deren Reihenfolge wichtig ist sich nicht 
darauf verlassen dass sie in der Reihenfolge ihres inserts zurückgegeben 
werden sonder sollte stets ein ORDER BY verwendet werden.

g,
Martin


php::bar PHP Wiki   -   Listenarchive