¿Cuál es el número de identificación más grande que el autoincremento puede producir en mysql?
Frecuentes
Visto 43,118 veces
67
Tengo una base de datos que se llena rápidamente con datos, hablamos de 10-20k filas por día.
¿Cuál es el límite de una identificación con una opción de incremento automático? Si la identificación se crea como INTEGER, ¿puedo hacer un valor máximo de 2,147,483,647 para valores sin firmar?
Pero, ¿qué pasa cuando el autoincremento supera esto? ¿Todo se derrumba? ¿Cuál sería la solución entonces?
Estoy seguro de que muchas personas tienen grandes bases de datos y me gustaría escucharlas.
Gracias por su atención.
2 Respuestas
72
Si le preocupa que se salga de los límites demasiado rápido, configuraría el PK como UN GRANDE SIN FIRMAR. Eso le da un valor máximo de 18446744073709551615, que debería ser suficiente.
contestado el 22 de mayo de 12 a las 18:05
Eso extiende la vida útil de su aplicación a alrededor de 2 billones de años. Me pregunto si eso será suficiente para que Denonth se sienta seguro... - marca byers
@MarkByers jeje sí, no estoy seguro :) - usuario123_456
La respuesta aceptada no responde a todas las preguntas anteriores. La respuesta por evilReiko hace. Esta respuesta también hace algunas suposiciones muy sólidas sobre su aplicación y sus casos de uso, que pueden ser inseguros. - Todd
42
| Min. (inclusive) | Max. (inclusive)
-----------------------------------------------------------------------------
INT Signed (+|-) | -2,147,483,648 | 2,147,483,647
-----------------------------------------------------------------------------
INT Unsigned (+) | 0 | 4,294,967,295
-----------------------------------------------------------------------------
BIGINT Signed (+|-) | -9,223,372,036,854,775,807 | 9,223,372,036,854,775,806
-----------------------------------------------------------------------------
BIGINT Unsigned (+) | 0 | 18,446,744,073,709,551,615
Si tiene una tabla MySQL con ID de columna (INT sin firmar) con auto_incremento, y la tabla tiene 4,294,967,295 registros, luego intenta insertar 1 registro más, la ID del nuevo registro se cambiará automáticamente y se establecerá en el máximo que es "4,294,967,295 ", por lo que recibe un mensaje de error de MySQL Duplicate entry '4294967295' for key 'PRIMARY'
, tendrá ID duplicados si la columna se establece como clave principal.
2 posibles soluciones:
- Enfoque fácil: Amplíe los límites configurando el ID en BIGINT sin firmar, como que amstrong dicho. ¡Aunque esto no quiere decir que sea irrompible! y el rendimiento puede verse afectado cuando la tabla se vuelve muy grande.
- Enfoque más difícil: Usar particiones, que es un enfoque un poco más complicado, pero brinda un mejor rendimiento y realmente no hay límite de base de datos (su único límite es el tamaño de su disco duro físico). ¡Twitter (y grandes sitios web similares) utilizan este enfoque para sus millones de tweets (registros) por día!
Respondido el 02 de diciembre de 20 a las 07:12
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas mysql database integer auto-increment or haz tu propia pregunta.
2,147,483,647 @ 20,000 por día = 294 años. Yo no me preocuparía demasiado por eso. - Mark Byers
hmm, nunca lo veo de esa manera ... Quería estar seguro y proteger mis datos, pero si lo miro como lo hiciste, entonces es divertido: user123_456
UNSIGNED INT tiene un máximo de 4,294,967,295. - Marcus Adams