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 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? Thx!

Author: Christopher Rapcewicz, 2010-04-26

8 answers

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

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

 53
Author: KM.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-26 19:35:11

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 utilizas una int o bigint como clave principal, solo puedes tener tantas filas como el número de valores únicos en el tipo de datos de tu clave principal, pero no tienes que convertir tu clave principal en un entero, podrías convertirla 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 soporta 232 filas por tabla, pero puede compilar MySQL con la opción --with-big-tables para hacerlo soporte hasta 264 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. El número de filas que cabe en esto depende del tamaño de cada fila.

 200
Author: Bill Karwin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-29 17:01:40

Sugiero, nunca elimine datos. No diga 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 cuánto tiempo ha estado inactivo este usuario. Por ejemplo, si es más de 1 año y luego ponerlos en una tabla diferente. Esto tendría que ocurrir semanalmente o mensualmente en un script de mantenimiento en medio de un tiempo lento.

Cuando se encuentre con muchas filas en su tabla, debe comenzar a fragmentar las tablas o particionar y ponga datos antiguos en tablas antiguas por año, como users_2011_jan, users_2011_feb o use números para el mes. A continuación, cambie su 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 solo se refieren a las tablas con particiones más grandes cuando se necesita 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 caro volver a factorizar. Usted también podría poner solo los usuarios que llegan a su sitio todo el tiempo en una tabla y los usuarios que nunca vienen en un conjunto de tablas archivadas.

 11
Author: PHPGuru,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-11 14:11:59

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 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 más pequeño .

 6
Author: Xylo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-14 19:21:07

Según la sección de Escalabilidad y Límites en http://dev.mysql.com/doc/refman/5.6/en/features.html , Soporte MySQL para grandes bases de datos. Utilizan el servidor MySQL con bases de datos que contienen 50 millones de registros. Algunos usuarios usan MySQL Server con 200,000 tablas y alrededor de 5,000,000,000 filas.

 2
Author: dataq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-14 13:13:57

Límites de tamaño de fila

The maximum row size for a given table is determined by several factors:
  • La representación interna de una tabla MySQL tiene un tamaño máximo de fila límite de 65.535 bytes, incluso si el motor de almacenamiento es capaz de apoyando filas más grandes. Las columnas BLOB y de TEXTO solo contribuyen de 9 a 12 bytes hacia el límite de tamaño de fila porque sus contenidos se almacenan separadamente del resto de la fila.

  • El tamaño máximo de fila para una tabla InnoDB, que se aplica a los datos almacenado localmente dentro de una base de datos página, 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 de página InnoDB predeterminado de 16 KB, que se define mediante la opción de configuración innodb_page_size. " Limits on InnoDB Tables".

  • Si una fila que contiene columnas de longitud variable excede el tamaño máximo de fila InnoDB, InnoDB selecciona columnas de longitud variable para almacenamiento externo fuera de página hasta que la fila se ajuste al límite de tamaño de fila InnoDB. La cantidad de datos almacenados localmente para columnas de longitud variable que son almacenado fuera de página difiere según el formato de fila. Para obtener más información, consulte " Almacenamiento de filas InnoDB y formatos de filas".
  • Los diferentes formatos de almacenamiento usan diferentes cantidades de datos de encabezado de página y tráiler, lo que afecta la cantidad de almacenamiento disponible para las filas.
 1
Author: Saurabh Chandra Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-22 11:35:58

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 soportar filas más grandes. Las columnas BLOB y de TEXTO solo contribuyen de 9 a 12 bytes hacia el límite de tamaño de fila porque su contenido se almacena por separado del el 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 ligeramente inferior a la mitad de una página para la configuración de 4KB, 8KB, 16KB y 32KB innodb_page_size. Por ejemplo, el tamaño máximo de la fila es ligeramente inferior a 8 KB para el tamaño predeterminado de página InnoDB de 16 KB. Para páginas de 64 KB, el tamaño máximo de fila es ligeramente inferior a 16 KB. Véase la sección 15.8.8, "Límites de las tablas InnoDB".

Si una fila que contiene columnas de longitud variable excede InnoDB tamaño máximo de fila, InnoDB selecciona columnas de longitud variable para el almacenamiento externo fuera de página hasta que la fila se ajuste al límite de tamaño de fila InnoDB. La cantidad de datos almacenados localmente para las 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, "Almacenamiento de filas InnoDB y formatos de filas".

Los diferentes formatos de almacenamiento usan diferentes cantidades de datos de encabezado de página y tráiler, lo que afecta la cantidad de almacenamiento disponible para las filas.

Para para obtener información sobre los formatos de fila InnoDB, consulte la Sección 15.11, "Almacenamiento de filas InnoDB y Formatos de fila", y la Sección 15.8.3,"Estructura física de filas de tablas 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

 1
Author: Diponkor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-16 08:25:26

No hay límite. Solo depende de su memoria libre y el 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 mantenga el número total de filas dentro de una figura en particular, digamos mil.

 -2
Author: 9jamkt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-21 06:51:31