Mysql
 sql >> Base de données >  >> RDS >> Mysql

Les différences entre INT et UUID dans MySQL

UUID renvoie un identifiant unique universel (espérons-le également unique s'il est également importé dans une autre base de données).

Pour citer MySQL doc (c'est moi qui souligne):

Par contre un simple INT clé d'identification primaire (par exemple, AUTO_INCREMENT ) renverra un entier unique pour la base de données spécifique et la table de base de données, mais qui n'est pas universellement unique (donc si importé dans une autre base de données, il y a des chances qu'il y ait des conflits de clé primaire).

En termes de performances, il ne devrait pas y avoir de différence notable en utilisant l'auto-increment sur UUID . La plupart des messages (dont certains par les auteurs de ce site), le déclarent comme tel. Bien sûr UUID peut prendre un peu plus de temps (et d'espace), mais ce n'est pas un goulot d'étranglement de performance pour la plupart (sinon tous) les cas. Avoir une colonne comme Primary Key devrait faire les deux choix égaux par rapport à la performance. Voir les références ci-dessous :

  1. À UUID ou non en UUID ?
  2. Mythes, GUID vs Autoincrement
  3. Performances :UUID vs auto-increment dans cakephp-mysql
  4. UUID performances dans MySQL ?
  5. Clés primaires :ID s par rapport à GUID s (codage d'horreur)

(UUID vs auto-increment résultats de performance, adaptés de Mythes, GUID vs Autoincrement )

UUID avantages / inconvénients (adapté de Clés primaires :ID s par rapport à GUID s )

Remarque

Je lirais attentivement les références mentionnées et déciderais d'utiliser UUID ou non selon mon cas d'utilisation. Cela dit, dans de nombreux cas, UUID s serait en effet préférable. Par exemple on peut générer UUID s sans utiliser/accéder à la base de données, ou même utiliser UUID s qui ont été pré-calculés et/ou stockés ailleurs. De plus, vous pouvez facilement généraliser/mettre à jour votre schéma de base de données et/ou votre schéma de clustering sans avoir à vous soucier de l'ID s casser et provoquer des conflits.

En termes de collisions possibles, par exemple en utilisant v4 UUIDS (aléatoire), la probabilité de trouver un doublon dans 103 billions d'UUID version 4, c'est un sur un milliard.