Saltar al contenido

Las diferencias entre INT y UUID en MySQL

Posterior a consultar con especialistas en el tema, programadores de diversas áreas y maestros hemos dado con la respuesta a la interrogande y la dejamos plasmada en esta publicación.

Solución:

UUID devuelve un identificador único universal (esperemos que también sea único si también se importa a otra base de datos).

Para citar de MySQL doc (énfasis mío):

Un UUID está diseñado como un número que es único en el mundo en el espacio y el tiempo. Se espera que dos llamadas a UUID() generen dos valores diferentes, incluso si estas llamadas se realizan en dos computadoras separadas
que no están conectados entre sí.

Por otro lado, simplemente INT identificación principal key (p.ej AUTOINCREMENTO) devolverá un entero único para la base de datos específica y la tabla de base de datos, pero que es no universalmente único (Entonces, si se importa a otra base de datos, es probable que haya key conflictos).

En términos de rendimiento, no debería haber ninguna diferencia notable usando auto-increment sobre UUID. La mayoría de las publicaciones (incluidas algunas de los autores de este sitio) se declaran como tales. por supuesto UUID puede tomar un poco más de tiempo (y espacio), pero esto no es un cuello de botella de rendimiento en la mayoría de los casos (si no en todos). Tener una columna como Primary Key debe hacer que ambas opciones sean iguales al rendimiento. Ver referencias a continuación:

  1. Para UUID o no UUID?
  2. mitos, GUID contra Autoincrement
  3. Rendimiento: UUID contra auto-increment en cakephp-mysql
  4. UUID rendimiento en MySQL?
  5. Claves primarias: IDs contra GUIDs (codificación de terror)

(UUID contra auto-increment resultados de desempeño, adaptados de Myths, GUID contra Autoincrement)

ingrese la descripción de la imagen aquí

UUID pros contras (adaptado de Claves primarias: IDs contra GUIDs)

GUID ventajas

  • Único en cada tabla, cada base de datos, cada servidor
  • Permite combinar fácilmente registros de diferentes bases de datos
  • Permite una fácil distribución de bases de datos a través de múltiples servidores
  • Puedes generar IDs en cualquier lugar, en lugar de tener que ir de ida y vuelta a la base de datos
  • La mayoría de los escenarios de replicación requieren GUID columnas de todos modos

GUID Contras

  • Es 4 veces más grande que el valor de índice tradicional de 4 bytes; esto puede tener serias implicaciones de rendimiento y almacenamiento si no tiene cuidado
  • Engorroso de depurar (where userid='BAE7DF4-DDF-3RG-5TY3E3RF456AS10')
  • lo generado GUIDs debe ser parcialmente secuencial para un mejor rendimiento (por ejemplo, newsequentialid() en SQL 2005) y para habilitar el uso de índices agrupados.

Nota

Leería atentamente las referencias mencionadas y decidiría si usar UUID o no dependiendo de mi caso de uso. Dicho esto, en muchos casos UUIDs sería de hecho preferible. Por ejemplo, uno puede generar UUIDs sin usar/acceder a la base de datos en absoluto, o incluso usar UUIDs que han sido previamente calculados y/o almacenados en otro lugar. Además, puede generalizar/actualizar fácilmente su esquema de base de datos y/o esquema de agrupación sin tener que preocuparse por IDs rompiendo y provocando conflictos.

un UUID key no puede ser pk hasta que no persista en la base de datos, por lo que se producirá un viaje de ida y vuelta hasta entonces, no puede asumir su pk sin una transacción exitosa. La mayoría de los UUID se basan en el tiempo, en mac, en el nombre o en algún uuid aleatorio. Dado que nos estamos moviendo fuertemente hacia implementaciones basadas en contenedores y tienen un patrón para iniciar la secuencia, las direcciones MAC que dependen de las direcciones mac no funcionarán. El tiempo basado no va a garantizar, ya que se supone que los sistemas siempre están sincronizados con la hora exacta, lo cual no es true a veces como los relojes no seguirán las reglas. GUID no puede garantizar que la colisión nunca ocurrirá, solo que en un período de tiempo corto dado no ocurrirá, pero dado el tiempo suficiente y los sistemas que se ejecutan en paralelo y la proliferación de sistemas que garantizan fallarán eventualmente.

http://www.ietf.org/rfc/rfc4122.txt

Sección de Reseñas y Valoraciones

Si conservas alguna vacilación y capacidad de innovar nuestro escrito te recordamos realizar un exégesis y con gusto lo interpretaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *