MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie UUID() in MariaDB funktioniert

In MariaDB, UUID() ist eine integrierte Funktion, die einen Universal Unique Identifier (UUID) zurückgibt.

Die UUID wird gemäß „DCE 1.1:Remote Procedure Call“ (Anhang A) CAE-Spezifikationen (Common Applications Environment) generiert, die von The Open Group im Oktober 1997 veröffentlicht wurden (Dokumentnummer C706).

Syntax

Die Syntax lautet wie folgt:

UUID() 

Daher sind keine Argumente erforderlich (oder akzeptiert).

Beispiel

Hier ist ein Beispiel zur Veranschaulichung:

SELECT UUID(); 

Ergebnis:

+--------------------------------------+| UUID() |+----------------------------------------------+| e5aa36ee-cd8a-11eb-be04-88e9fe739f3d |+--------------------------------------+

Wenn ich es ein anderes Mal aufrufe, bekomme ich einen anderen Wert:

SELECT UUID(); 

Ergebnis:

+--------------------------------------+| UUID() |+----------------------------------------------+| f11b4702-cd8a-11eb-be04-88e9fe739f3d |+-------------------------------------+

Über die UUID

Eine UUID (Universal Unique Identifier) ​​ist eine Zahl, die räumlich und zeitlich weltweit eindeutig sein soll. Zwei Aufrufe von UUID() werden zwei unterschiedliche Werte erwartet, selbst wenn diese Aufrufe auf zwei separaten Computern durchgeführt werden, die nicht miteinander verbunden sind.

Eine UUID ist eine 128-Bit-Zahl, die durch eine utf8-Zeichenfolge aus fünf Hexadezimalzahlen in aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee dargestellt wird Format:

  • Die ersten drei Zahlen werden aus einem Zeitstempel generiert.
  • Die vierte Zahl bewahrt die zeitliche Eindeutigkeit für den Fall, dass der Zeitstempelwert an Monotonie verliert (z. B. aufgrund der Sommerzeit).
  • Die fünfte Zahl ist eine IEEE 802-Knotennummer, die für räumliche Eindeutigkeit sorgt. Eine Zufallszahl wird ersetzt, wenn letztere nicht verfügbar ist. In solchen Fällen kann die räumliche Eindeutigkeit nicht garantiert werden. Allerdings sollte eine Kollision ein Ereignis mit äußerst geringer Wahrscheinlichkeit sein.

Beachten Sie, dass Anweisungen mit UUID() Funktion sind für die anweisungsbasierte Replikation nicht sicher.

Im Vergleich zu SYS_GUID() Funktion

Das von UUID() zurückgegebene Ergebnis ähnelt dem von SYS_GUID() zurückgegebenen Funktion, außer dass SYS_GUID() enthält kein Bindestrichsymbol (- ) im Ergebnis (wobei UUID() tut).

Hier ist ein Vergleich der beiden:

SELECT 
    UUID(),
    SYS_GUID(); 

Ergebnis:

+-------------------------------------+------- ----------------------------+| UUID() | SYS_GUID() |+-------------------------------------+------ ----------------------------+| 9e795ffc-cd71-11eb-8f75-0800270503a7 | 9E796001CD7111EB8F750800270503A7 |+--------------------------------------+-------- --------------------------+

Die SYS_GUID() Funktion wurde in MariaDB 10.6.1 eingeführt, um die Oracle-Kompatibilität zu verbessern.

Es gibt auch einen UUID_SHORT() Funktion, die eine kurze UUID als 64-Bit-Ganzzahl ohne Vorzeichen zurückgibt.

Argumente übergeben

Wie bereits erwähnt, UUID() akzeptiert keine Argumente. Folgendes passiert, wenn ich ein Argument übergebe:

SELECT UUID(3); 

Ergebnis:

FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion „UUID“