UUID v1 vs v4 vs v5: Vilken Version Ska Du Välja?
Snabbt svar
Använd UUID v4 (random) som standard —den kräver ingen samordning och har försumbar kollisionsrisk. Använd v1 (time-based) bara när du behöver time-orderable ID:n. Använd v5 (namespace+name) för deterministiska ID:n. Generera valfri version med vår gratis UUID Generator.
Introduktion
En UUID (Universally Unique Identifier) är en 128-bit-identifierare renderad som 36 tecken i 8-4-4-4-12 hex-grupper, t.ex. 123e4567-e89b-12d3-a456-426614174000. RFC 9562 definierar flera versioner; de tre vanligaste är v1 (time + MAC), v4 (random) och v5 (namespace + name, SHA-1). Varje version gör olika trade-offs mellan unikhetsgarantier, sorterbarhet och determinism.
Steg för steg
-
UUID v1 — tids- och nodbaserad
v1 kodar den aktuella 60-bitars tidsstämpeln (100-ns intervaller sedan 1582-10-15) och ett 48-bitars nod-ID (vanligtvis MAC-adressen). ID:n som genereras på samma nod är monotont ökande och tidssorterbara. Risk: MAC-adressen läcker hårdvaruidentitet och klockskevhet över noder kan bryta ordning.
-
UUID v4 — slumpmässigt
v4 använder 122 slumpmässiga bitar (6 bitar är fasta för versionen/varianten). Med 122 slumpmässiga bitar är sannolikheten för en kollision mellan 2,71 biljoner ID:n 50 % — för varje realistisk arbetsbelastning är chansen i praktiken noll. v4 behöver ingen samordning och avslöjar ingen värdinformation, vilket gör den till den säkraste standarden.
-
UUID v5 —namnutrymme och namn (SHA-1)
v5 hashar ett namnområde UUID och en namnsträng med SHA-1 för att producera ett deterministiskt 128-bitars ID. Samma (namnutrymme, namn) par ger alltid samma UUID, vilket är idealiskt för deduplicering och stabila ID:n som härrör från naturliga nycklar. v3 är samma idé men använder MD5 (undvik det).
-
Jämför avvägningarna
v1 är sorterbar men läcker MAC och behöver klocksynkronisering. v4 är slumpmässig och privat men osorterbar. v5 är deterministiskt och deduplicerar men är inte slumpmässigt — att gissa namnet låter en angripare reproducera UUID. Välj baserat på om du behöver ordning, slumpmässighet eller determinism.
-
Välj rätt version för ditt fall
Databasens primärnycklar: v4 (eller v7 i nyare system för tidsbeställning). Distribuerade system utan samordning: v4. Deterministiska ID:n från en naturlig nyckel (t.ex. URL →UUID): v5. Granskningsloggar som drar nytta av tidsordning: v1 med ett säkert slumpmässigt nod-ID.
Exempel
UUID v1 (tidsbaserad, sorterbar)
Input: Genererad 2026-08-28T12:00:00Z på nod 00:11:22:33:44:55
Produktion: 1ef7c1d0-2d3b-11f0-8000-001122334455 (versionssiffra '1', tidssorterbar)
UUID v4 (slumpmässigt)
Input: Random generation
Produktion: f47ac10b-58cc-4372-a567-0e02b2c3d479 (versionssiffra '4', slumpmässiga bitar)
UUID v5 (deterministisk från namnområde+namn)
Input: Namnutrymme DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8) + namn 'freeonlinetoolsgo.com'
Produktion: 74738ff5-5367-5958-9aeb-0c1f1f1f1f1f (samma ingång ger alltid samma utdata)
Vanliga problem
- Lagring av UUID:er som VARCHAR(36) istället för en inbyggd 16-byte BINARY/UUID typ: detta slösar bort 2x lagring och bryter indexprestanda. Använd en inbyggd kolumntyp UUID där den är tillgänglig.
- Använda v1 utan att säkra nod-ID: standard MAC-adressen läcker hårdvaruidentitet och är ett integritetsproblem. Ersätt det med ett kryptografiskt slumpmässigt 48-bitars värde per nod.
- Om vi antar att v4-kollisioner är omöjliga: det är de inte – de är bara astronomiskt osannolika. Med 122 slumpmässiga bitar behöver du ~2,71 biljoner ID:n för 50 % chans. För 1 miljard ID är chansen ~0,00000000000000001.
- Användning av v3 (MD5-baserad) istället för v5 (SHA-1-baserad): MD5 är trasig, så v5 är att föredra. Båda är deterministiska, men v5 har starkare kollisionsmotstånd.
Tips
- Standard till v4 för nästan alla användningsfall – det är slumpmässigt, privat och kollisionssäkert utan någon samordning.
- Om du behöver tidssorterade slumpmässiga ID:n, titta på UUID v7 (RFC 9562, 2024) som kombinerar en Unix-tidsstämpel med slumpmässiga bitar — bättre än v1 för moderna databaser.
- Använd v5 för att generera stabila ID:n från naturliga nycklar (URLs, e-postadresser) så att samma indata alltid mappas till samma UUID — användbart för deduplicering och idempotenta APIs.
- Generera UUID på klienten när det är möjligt för att undvika en tur och retur till servern — vår UUID Generator körs helt i din webbläsare med crypto.getRandomValues().