Estamos considerando usar valores UUID como claves principales para nuestra base de datos MySQL. Los datos que se insertan se generan a partir de docenas, cientos o incluso miles de computadoras remotas y se insertan a una velocidad de 100 a 40 000 inserciones por segundo, y nunca realizaremos ninguna actualización.
La base de datos en sí generalmente alcanzará alrededor de 50 millones de registros antes de que comencemos a seleccionar datos, por lo que no es una base de datos masiva, pero tampoco pequeña. También estamos planeando ejecutar InnoDB, aunque estamos abiertos a cambiar eso si hay un motor mejor para lo que estamos haciendo.
Estábamos listos para usar el UUID Tipo 4 de Java, pero en las pruebas hemos visto un comportamiento extraño. Por un lado, estamos almacenando como varchar (36) y ahora me doy cuenta de que estaríamos mejor usando binary (16), aunque no estoy seguro de cuánto mejor.
La pregunta más importante es: ¿en qué medida estos datos aleatorios arruinan el índice cuando tenemos 50 millones de registros? ¿Estaríamos mejor si usáramos, por ejemplo, un UUID de tipo 1 en el que los bits más a la izquierda tuvieran una marca de tiempo? ¿O tal vez deberíamos deshacernos de los UUID por completo y considerar las claves primarias auto_increment?
Estoy buscando ideas / consejos generales sobre el rendimiento de diferentes tipos de UUID cuando se almacenan como un índice / clave principal en MySQL. ¡Gracias!