153 votos

Número máximo de registros en una tabla de base de datos MySQL

Cuál es el límite superior de registros para la tabla de la base de datos MySQL. Me pregunto sobre el campo de autoincremento. ¿Qué pasaría si añado millones de registros? ¿Cómo manejar este tipo de situaciones? Gracias.

203voto

Bill Karwin Puntos 204877

El mayor valor de un entero no tiene mucho que ver con el número máximo de filas que se pueden almacenar en una tabla.

Es cierto que si usas un int o bigint como clave primaria, sólo puedes tener tantas filas como el número de valores únicos en el tipo de datos de tu clave primaria, pero no tienes que hacer que tu clave primaria sea un entero, podrías hacerla un CHAR(100). También puedes declarar la clave primaria sobre más de una columna.

Hay otras restricciones en el tamaño de la tabla además del número de filas. Por ejemplo, puedes utilizar un sistema operativo que tenga una limitación de tamaño de archivo. O puedes tener un disco duro de 300 GB que sólo puede almacenar 300 millones de filas si cada fila tiene un tamaño de 1 KB.

Por lo que he leído, no hay límite arquitectónico para el número de filas por tabla en MySQL.


Con respecto a su comentario: Tengo que corregir mi información con este enlace:

http://dev.mysql.com/doc/refman/5.1/en/source-configuration-options.html

El motor de almacenamiento MyISAM admite 2 32 filas por tabla, pero se puede construir MySQL con el --with-big-tables para que admita hasta 2 64 filas por tabla.

http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html

El motor de almacenamiento InnoDB no parece tener un límite en el número de filas, pero tiene un límite en el tamaño de la tabla de 64 terrabytes. El número de filas que cabe en esto depende del tamaño de cada fila.

53voto

KM. Puntos 51800

Los tipos int de mysql pueden hacer bastantes filas: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

sin signo int el valor más grande es 4,294,967,295
sin signo bigint el valor más grande es 18,446,744,073,709,551,615

11voto

PHPGuru Puntos 93

Sugiero que nunca se borren los datos. No digas que si las tablas son más largas que 1000 truncar el final de la tabla. Tiene que haber una lógica de negocio real en su plan como el tiempo que este usuario ha estado inactivo. Por ejemplo, si es más de 1 año entonces póngalo en una tabla diferente. Esto se haría semanal o mensualmente en un script de mantenimiento en medio de un tiempo lento.

Cuando te encuentres con demasiadas filas en tu tabla, entonces deberías empezar a fragmentar las tablas o particionar y poner los datos antiguos en tablas antiguas por año como users_2011_jan, users_2011_feb o usar números para el mes. Entonces cambia tu programación para trabajar con este modelo. Tal vez hacer una nueva tabla con menos información para resumir los datos en menos columnas y luego sólo se refieren a las tablas particionadas más grandes cuando se necesita más información, como cuando el usuario está viendo su perfil. Todo esto debe ser considerado muy cuidadosamente para que en el futuro no sea demasiado costoso de refactorizar. También podría poner sólo los usuarios que vienen a su sitio todo el tiempo en una tabla y los usuarios que nunca vienen en un conjunto de tablas archivadas.

6voto

Xylo Puntos 34

En InnoDB, con un límite de tamaño de tabla de 64 terabytes y un límite de tamaño de fila de MySQL de 65.535 puede haber 1.073.741.824 filas. Ese sería el número mínimo de registros utilizando el límite máximo de tamaño de fila. Sin embargo, se pueden añadir más registros si el tamaño de las filas es menor.

-2voto

9jamkt Puntos 27

No hay límite. Sólo depende de tu memoria libre y del tamaño máximo de los archivos del sistema. Pero eso no significa que no debas tomar medidas de precaución al abordar el uso de la memoria en tu base de datos. Cree siempre un script que pueda eliminar las filas que están fuera de uso o que mantenga el número total de filas dentro de una cifra determinada, digamos mil.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X