UUID
returnerer en universelt unikt id
(forhåbentlig også unik, hvis den også importeres til en anden DB).
For at citere fra MySQL doc (min fremhævelse):
På den anden side en simpel INT
primær id-nøgle (f.eks. AUTO_INCREMENT ) returnerer et unikt heltal for den specifikke DB- og DB-tabel, men som ikke er universelt unik (så hvis det importeres til en anden DB, er der chancer for, at der vil være primære nøglekonflikter).
Med hensyn til ydeevne burde der ikke være nogen mærkbar forskel ved at bruge auto-increment
over UUID
. De fleste indlæg (inklusive nogle af forfatterne af dette websted), står som sådan. Selvfølgelig UUID
kan tage lidt mere tid (og plads), men dette er ikke en præstationsflaskehals for de fleste (hvis ikke alle) tilfælde. At have en kolonne som Primary Key
bør gøre begge valg lig med hensyn til ydeevne. Se referencer nedenfor:
- Til
UUID
eller ej tilUUID
? - Myter,
GUID
vsAutoincrement
- Ydeevne:
UUID
vsauto-increment
i cakephp-mysql UUID
ydeevne i MySQL?- Primære nøgler:
ID
s kontraGUID
s (kodningsrædsel)
(UUID
vs auto-increment
præstationsresultater, tilpasset fra Myths, GUID
vs Autoincrement
)
UUID
fordele / ulemper (tilpasset fra Primære nøgler:ID
s kontra GUID
s
)
Bemærk
Jeg ville læse de nævnte referencer omhyggeligt og beslutte, om jeg ville bruge UUID
eller ikke afhængigt af min brugssituation. Når det er sagt, i mange tilfælde UUID
s ville faktisk være at foretrække. For eksempel kan man generere UUID
s uden at bruge/få adgang til databasen overhovedet, eller endda bruge UUID
s, der er blevet forudberegnet og/eller gemt et andet sted. Derudover kan du nemt generalisere/opdatere dit databaseskema og/eller klyngeskema uden at skulle bekymre dig om ID
s bryde og forårsage konflikter.
Med hensyn til mulige kollisioner, for eksempel ved brug af v4 UUIDS (tilfældig), sandsynligheden for at finde en duplikat inden for 103 billioner version-4 UUID'er er én ud af en milliard.