Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zeilenversionierung für MySql

MySQL hat keinen eingebauten Rowversioning-Mechanismus. Während die Verwendung eines Zeitstempeltyps in Ordnung erscheinen mag, werden Sie bei Abfragen, die mehrere Zeilen gleichzeitig aktualisieren und länger dauern als die Auflösung des Zeitstempels, daran scheitern, da der zugewiesene Wert auf dem Beginn der Änderung und nicht auf dem Ende von basiert die Änderung.

Wenn Ihre Aktualisierungsabfrage also 100 Zeilen betrifft, haben alle Zeilen denselben Zeitstempel (z. B. einen Wert von 2015-10-28 09:47:10.123456). Es ist jedoch möglich, dass die Zeilen erst am 28.10.2015 09:47:10.654321 fertig geschrieben werden.

Wenn Sie separat nach allen geänderten Zeilen suchen, die auf einem anderen Zeitstempel basieren (z. B. 2015-10-28 09:47:10.500000), erhalten Sie nicht die gewünschten Ergebnisse. Und abhängig von Ihrem Code können Sie die 100 geänderten Zeilen übersehen.

Aufgrund der Tatsache, dass Änderungen an Zeilen jetzt möglicherweise einen Zeitstempel in der Vergangenheit haben, können Sie nicht einfach 2 Zeitstempel vergleichen, um alle geänderten Zeilen zu erhalten.