¿Cuál es el límite superior de registros para la tabla de base de datos MySQL? Me pregunto sobre el campo de autoincremento. ¿Qué pasaría si agrego millones de registros? ¿Cómo manejar este tipo de situaciones? ¡Gracias!
¿Cuál es el límite superior de registros para la tabla de base de datos MySQL? Me pregunto sobre el campo de autoincremento. ¿Qué pasaría si agrego millones de registros? ¿Cómo manejar este tipo de situaciones? ¡Gracias!
Respuestas:
Los tipos mysql int pueden hacer bastantes filas: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
el int
valor más grande sin 4,294,967,295
signo es el valor más grande sin signo bigint
es18,446,744,073,709,551,615
El mayor valor de un entero tiene poco que ver con el número máximo de filas que puede almacenar en una tabla.
Es cierto que si usa un int o bigint como clave principal, solo puede tener tantas filas como el número de valores únicos en el tipo de datos de su clave primaria, pero no tiene que hacer que su clave primaria sea un número entero , podrías convertirlo en un CHAR (100). También puede declarar la clave principal en más de una columna.
Hay otras restricciones en el tamaño de la tabla además del número de filas. Por ejemplo, podría usar un sistema operativo que tenga una limitación de tamaño de archivo. O podría tener un disco duro de 300 GB que puede almacenar solo 300 millones de filas si cada fila tiene un tamaño de 1 KB.
Los límites del tamaño de la base de datos son realmente altos:
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 puede construir MySQL con la --with-big-tables
opción de hacer 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 terabytes. La cantidad de filas que se ajustan a esto depende del tamaño de cada fila.
Sugiero, nunca borre datos. No diga si las tablas son más largas que 1000 truncar el final de la tabla. Es necesario que haya una lógica comercial real en su plan, como cuánto tiempo ha estado inactivo este usuario. Por ejemplo, si es más de 1 año, póngalos en una tabla diferente. Esto sucedería semanalmente o mensualmente en un script de mantenimiento en medio de un tiempo lento.
Cuando se encuentre con muchas filas en su tabla, entonces debería comenzar a dividir las tablas o particionar y colocar datos antiguos en tablas antiguas por año, como users_2011_jan, users_2011_feb o usar números para el mes. Luego cambie su programación para trabajar con este modelo. Tal vez haga una nueva tabla con menos información para resumir los datos en menos columnas y luego solo consulte las tablas particionadas más grandes cuando necesite más información, como cuando el usuario está viendo su perfil. Todo esto debe considerarse con mucho cuidado para que en el futuro no sea demasiado costoso re-factorizar. También puede poner solo los usuarios que vienen a su sitio todo el tiempo en una tabla y los usuarios que nunca vienen en un conjunto archivado de tablas.
En InnoDB, con un límite en el tamaño de la 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. Esa sería una cantidad mínima de registros que utilizan el límite máximo de tamaño de fila. Sin embargo, se pueden agregar más registros si el tamaño de la fila es menor.
De acuerdo con la sección Escalabilidad y límites en http://dev.mysql.com/doc/refman/5.6/en/features.html , soporte MySQL para grandes bases de datos. Usan MySQL Server con bases de datos que contienen 50 millones de registros. Algunos usuarios usan MySQL Server con 200,000 tablas y aproximadamente 5,000,000,000 de filas.
The maximum row size for a given table is determined by several factors:
La representación interna de una tabla MySQL tiene un límite máximo de tamaño de fila de 65.535 bytes, incluso si el motor de almacenamiento es capaz de admitir filas más grandes. Las columnas BLOB y TEXT solo contribuyen de 9 a 12 bytes hacia el límite de tamaño de fila porque sus contenidos se almacenan por separado del resto de la fila.
El tamaño máximo de fila para una tabla InnoDB, que se aplica a los datos almacenados localmente dentro de una página de base de datos, es un poco menos de media página. Por ejemplo, el tamaño máximo de fila es ligeramente inferior a 8 KB para el tamaño predeterminado de página InnoDB de 16 KB, que se define mediante la opción de configuración innodb_page_size. " Límites en las tablas de InnoDB ".
Enlace http://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html
Límites de tamaño de fila
El tamaño máximo de fila para una tabla dada está determinado por varios factores:
La representación interna de una tabla MySQL tiene un límite máximo de tamaño de fila de 65.535 bytes, incluso si el motor de almacenamiento es capaz de admitir filas más grandes. Las columnas BLOB y TEXT solo contribuyen de 9 a 12 bytes hacia el límite de tamaño de fila porque sus contenidos se almacenan por separado del resto de la fila.
El tamaño máximo de fila para una tabla InnoDB, que se aplica a los datos almacenados localmente dentro de una página de base de datos, es un poco menos de media página para configuraciones de 4 KB, 8 KB, 16 KB y 32 KB innodb_page_size. Por ejemplo, el tamaño máximo de fila es ligeramente inferior a 8 KB para el tamaño de página InnoDB predeterminado de 16 KB. Para páginas de 64 KB, el tamaño máximo de fila es ligeramente inferior a 16 KB. Consulte la Sección 15.8.8, “Límites en las tablas de InnoDB”.
Si una fila que contiene columnas de longitud variable excede el tamaño máximo de fila de InnoDB, InnoDB selecciona columnas de longitud variable para almacenamiento externo fuera de la página hasta que la fila se ajuste al límite de tamaño de fila de InnoDB. La cantidad de datos almacenados localmente para columnas de longitud variable que se almacenan fuera de la página difiere según el formato de fila. Para obtener más información, consulte la Sección 15.11, "InnoDB Row Storage and Row Formats".
Los diferentes formatos de almacenamiento utilizan diferentes cantidades de encabezado de página y datos de avance, lo que afecta la cantidad de almacenamiento disponible para las filas.
Para obtener información sobre los formatos de fila de InnoDB, consulte la Sección 15.11, “Almacenamiento de filas y formatos de fila de InnoDB”, y la Sección 15.8.3, “Estructura de filas físicas de las tablas de InnoDB”.
Para obtener información sobre los formatos de almacenamiento MyISAM, consulte la Sección 16.2.3, “Formatos de almacenamiento de tablas MyISAM”.
http://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html
No hay límite. Solo depende de la memoria libre y del tamaño máximo de archivo del sistema. Pero eso no significa que no deba tomar medidas de precaución al abordar el uso de memoria en su base de datos. Siempre cree un script que pueda eliminar filas que están fuera de uso o que mantendrán el total de filas dentro de una figura en particular, digamos mil.