Warum wird in CDC (Change Data Capture) lsn anstelle des Zeitstempels verwendet?

7

Ich lerne, CDC in SQL Server 2008 zu verwenden. Ich habe gelesen, dass LSN immer inkrementiert ist und auf dem Zeitstempel basiert. Warum ist LSN erforderlich, wenn es aus dem Zeitstempel berechnet wird, der als inkrementelle Sequenz-ID für vorgenommene Änderungen verwendet werden kann? Ich bin sicher, dass es auch einen anderen Zweck von lsn geben wird.

jaczjill
quelle
1
Schauen Sie sich meine Antwort hier an, um sie weiter zu lesen.
Jon Seigel

Antworten:

11

Ein Datums- / Zeitwert wird im Allgemeinen nicht als eindeutig genug angesehen. Unabhängig davon, wie genau Sie es definieren, können zwei Aktionen für denselben Datums- / Uhrzeitwert ausgeführt werden.

Vor SQL Server 2008 war der genaueste Wert gerundete 3,33 Millisekunden, mit datetimedenen eine Ewigkeit wirklich ist. datetime2wird in 100 Nanosekunden aufgelöst, was ebenfalls nicht genau genug ist.

Aus einer anderen Sicht ist Zeit eine reelle Zahl . Unabhängig davon, wie genau Sie eine Zeit speichern, wird Ihre Auflösung immer etwas gerundet (in diesem Fall 3,33 ms oder 100 ns).

Die Verwendung von LSN ( dhnumeric (25,0) ) ergibt einen streng monoton ansteigenden eindeutigen Ganzzahlwert. Es ist eine natürliche Zahl

gbn
quelle
2
Die meisten RDBMS tun dasselbe - Oracle verwendet beispielsweise eine Systemänderungsnummer (SCN).
Philᵀᴹ