sql >> Database teknologi >  >> RDS >> Mysql

Forskellene mellem INT og UUID i MySQL

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:

  1. Til UUID eller ej til UUID ?
  2. Myter, GUID vs Autoincrement
  3. Ydeevne:UUID vs auto-increment i cakephp-mysql
  4. UUID ydeevne i MySQL?
  5. Primære nøgler:ID s kontra GUID 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.



  1. Leder du efter en enkel fuldtekstsøgning? Prøv MySQL InnoDB + CakePHP med Word Stemming

  2. Hvordan får jeg asynkron/hændelsesdrevet LISTEN/NOTIFY-understøttelse i Java ved hjælp af en Postgres-database?

  3. Mysql - Sådan afsluttes/forlader du lagret procedure

  4. Sådan konverteres tal til ord - ORACLE