UUID
vrátí univerzální jedinečný identifikátor
(doufejme, že také jedinečný, pokud je importován také do jiné DB).
Citace z dokumentu MySQL (důraz):
Na druhou stranu jednoduše INT
primární klíč ID (např. AUTO_INCREMENT ) vrátí jedinečné celé číslo pro konkrétní DB a DB tabulku, která však není univerzálně jedinečná (takže při importu do jiné DB je pravděpodobné, že dojde ke konfliktům primárního klíče).
Pokud jde o výkon, při použití auto-increment
by neměl být žádný znatelný rozdíl přes UUID
. Většina příspěvků (včetně některých od autorů tohoto webu) se tak uvádí. Samozřejmě UUID
může zabrat trochu více času (a prostoru), ale ve většině (ne-li ve všech) případech to není překážka výkonu. Sloupec jako Primary Key
by měly být obě možnosti rovnocenné výkonu. Viz odkazy níže:
- Komu
UUID
nebo ne naUUID
? - Mýty,
GUID
vsAutoincrement
- Výkon:
UUID
vsauto-increment
v cakephp-mysql UUID
výkon v MySQL?- Primární klíče:
ID
s versusGUID
s (kódování hororu)
(UUID
vs auto-increment
výsledky výkonu, upravené podle mýtů, GUID
vs Autoincrement
)
UUID
pro / proti (převzato z Primární klíče:ID
s versus GUID
s
)
Poznámka
Pečlivě bych si přečetl zmíněné reference a rozhodl se, zda použít UUID
nebo ne v závislosti na mém případu použití. To znamená, že v mnoha případech UUID
s by bylo skutečně výhodnější. Například lze vygenerovat UUID
s bez použití/přístupu k databázi vůbec, nebo dokonce použití UUID
s, které byly předem vypočteny a/nebo uloženy někde jinde. Navíc můžete snadno zobecnit/aktualizovat schéma databáze a/nebo schéma klastrování, aniž byste se museli starat o ID
lámání a vyvolávání konfliktů.
Pokud jde o možné kolize, například pomocí v4 UUIDS (náhodné), pravděpodobnost nalezení duplikátu v rámci 103 bilionů UUID verze 4 je jedna z miliardy.