2010-03-05 8 views
6

Aunque el uso diario en mi programación, pero nunca se dio cuenta de esta pregunta:¿qué ocurre si el tipo de datos int en mysql alcanza el límite mientras se insertan los registros?

ya que el tipo de datos int(unsigned) puede contener valores de 0 to 4294967295, lo que realmente sucede Si declaro que estas casillas INT ser auto incremento y una mañana, se solo llega al 4294967295? La respuesta obvia es que debería arrojar un error que no puede insertarse más, pero los datos nunca dejan de llegar y tenemos que almacenar los registros que aún se mantienen. ¿Qué hacer en este caso?

También declara que int (20) será lo suficientemente grande como este límite predeterminado?

¿Alguna sugerencia?

Gracias.

+2

20 no cambia el tipo de datos, sólo se utiliza para el relleno. Use un BIGINT para enteros más grandes. –

Respuesta

3

Si obtiene 4 mil millones de filas, el hecho de que el campo se desborde es probablemente el menor de sus problemas.

Puede declarar que es BIGINT, que tiene 8 bytes. Lo que significa que contará hasta 18446744073709551615.

Si se desborda volverá a 0 y seguirá insertando, devolviendo un error si existe una fila con ese número.

+1

Me interesa conocer la estrategia para las grandes bases de datos donde tienen miles de millones de registros. Supongo que GUID o UUID sería una elección, entonces? – JPro

+1

Bigint autoincrementado es el camino a seguir si solo quiere asegurarse. Completar 18 quintillones de filas llevará tiempo, incluso con una computadora haciendo todo el trabajo constantemente. Sin mencionar el espacio que va a consumir. No creo que haya habido una aplicación que haya tenido tantos registros. Tal vez una base de datos de ADN mal estructurada, pero dudo seriamente que sean tan estúpidos. –

0

Uso BIGINT - intervalo es de 0 - 18446744073709551615

Cuestiones relacionadas