UUID
returnerar en universell unik identifierare
(förhoppningsvis också unik om den importeras till en annan DB också).
För att citera från MySQL doc (min betoning):
Å andra sidan en helt enkelt INT
primär id-nyckel (t.ex. AUTO_INCREMENT ) returnerar ett unikt heltal för den specifika DB- och DB-tabellen, men som inte är universellt unik (så om den importeras till en annan DB är det troligt att det kommer att finnas primärnyckelkonflikter).
När det gäller prestanda borde det inte finnas någon märkbar skillnad med auto-increment
över UUID
. De flesta inlägg (inklusive några av författarna till denna webbplats) anges som sådana. Naturligtvis UUID
kan ta lite mer tid (och utrymme), men detta är inte en prestandaflaskhals för de flesta (om inte alla) fall. Att ha en kolumn som Primary Key
bör göra båda valen lika med prestanda. Se referenser nedan:
- Till
UUID
eller inte tillUUID
? - Myter,
GUID
kontraAutoincrement
- Prestanda:
UUID
kontraauto-increment
i cakephp-mysql UUID
prestanda i MySQL?- Primära nycklar:
ID
s kontraGUID
s (kodningsskräck)
(UUID
kontra auto-increment
prestandaresultat, anpassade från Myths, GUID
kontra Autoincrement
)
UUID
fördelar / nackdelar (anpassad från Primära nycklar:ID
s kontra GUID
s
)
Obs
Jag skulle noggrant läsa de nämnda referenserna och bestämma mig för om jag skulle använda UUID
eller inte beroende på mitt användningsfall. Som sagt, i många fall UUID
s vore verkligen att föredra. Till exempel kan man generera UUID
s utan att använda/åtkomst till databasen alls, eller ens använda UUID
s som har förberäknats och/eller lagrats någon annanstans. Dessutom kan du enkelt generalisera/uppdatera ditt databasschema och/eller klustringsschema utan att behöva oroa dig för ID
s bryta och orsaka konflikter.
När det gäller möjliga kollisioner, till exempel med v4 UUIDS (slumpmässigt), sannolikheten att hitta en dubblett inom 103 biljoner version-4 UUID är en på en miljard.