¿Cuál es el número de identificación más grande que el autoincremento puede producir en mysql?

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.

preguntado el 22 de mayo de 12 a las 18:05

2,147,483,647 @ 20,000 por día = 294 años. Yo no me preocuparía demasiado por eso. -

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:

UNSIGNED INT tiene un máximo de 4,294,967,295. -

2 Respuestas

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

                    | 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

Referencia de MySQL.

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:

  1. 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.
  2. 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 or haz tu propia pregunta.