MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona UUID() in MariaDB

In MariaDB, UUID() è una funzione incorporata che restituisce un UUID (Universal Unique Identifier).

L'UUID è generato secondo "DCE 1.1:Remote Procedure Call" (Appendice A) Specifiche CAE (Common Applications Environment) pubblicate da The Open Group nell'ottobre 1997 (documento numero C706).

Sintassi

La sintassi è questa:

UUID()

Quindi, nessun argomento è richiesto (o accettato).

Esempio

Ecco un esempio da dimostrare:

SELECT UUID();

Risultato:

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

Se lo chiamo un'altra volta, ottengo un valore diverso:

SELECT UUID();

Risultato:

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

Informazioni sull'UUID

Un UUID (Universal Unique Identifier) ​​è un numero progettato per essere globalmente unico nello spazio e nel tempo. Due chiamate a UUID() dovrebbero generare due valori diversi, anche se queste chiamate vengono eseguite su due computer separati che non sono collegati tra loro.

Un UUID è un numero a 128 bit rappresentato da una stringa utf8 di cinque numeri esadecimali in aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee formato:

  • I primi tre numeri sono generati da un timestamp.
  • Il quarto numero conserva l'unicità temporale nel caso in cui il valore del timestamp perda monotonia (ad esempio, a causa dell'ora legale).
  • Il quinto numero è un numero di nodo IEEE 802 che fornisce l'unicità spaziale. Un numero casuale viene sostituito se quest'ultimo non è disponibile. In questi casi, l'unicità spaziale non può essere garantita. Detto questo, una collisione dovrebbe essere un evento a probabilità estremamente bassa.

Nota che le istruzioni usano UUID() non sono sicure per la replica basata su istruzioni.

Rispetto a SYS_GUID() Funzione

Il risultato restituito da UUID() è simile a quello restituito da SYS_GUID() funzione, tranne che SYS_GUID() non include il simbolo del trattino (- ) nel risultato (mentre, UUID() fa).

Ecco un confronto tra i due:

SELECT 
    UUID(),
    SYS_GUID();

Risultato:

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

Il SYS_GUID() la funzione è stata introdotta in MariaDB 10.6.1 per migliorare la compatibilità Oracle.

C'è anche un UUID_SHORT() funzione che restituisce un UUID breve come intero senza segno a 64 bit.

Passaggio di argomenti

Come accennato, UUID() non accetta argomenti. Ecco cosa succede quando passo un argomento:

SELECT UUID(3);

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UUID'