sql >> Databasteknik >  >> RDS >> Mysql

Skillnaderna mellan INT och UUID i MySQL

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:

  1. Till UUID eller inte till UUID ?
  2. Myter, GUID kontra Autoincrement
  3. Prestanda:UUID kontra auto-increment i cakephp-mysql
  4. UUID prestanda i MySQL?
  5. Primära nycklar:ID s kontra GUID 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.



  1. Infoga flera tabbavgränsade textfiler i MySQL med Python?

  2. Hur använder man pg_stat_activity?

  3. Hur man rundar tidsstämpel i MySQL

  4. Komplicerad SQL-fråga - hitta objekt som matchar flera olika främmande nycklar