tener - limitar numero de registros en consulta mysql
Número máximo de registros en una tabla de base de datos MySQL (9)
De acuerdo con la sección de escalabilidad y límites en http://dev.mysql.com/doc/refman/5.6/en/features.html , MySQL admite bases de datos grandes. Usan el servidor MySQL con bases de datos que contienen 50 millones de registros. Algunos usuarios usan el servidor MySQL con 200,000 tablas y alrededor de 5,000,000,000 de filas.
¿Cuál es el límite superior de registros para la tabla de la base de datos MySQL? Me estoy preguntando sobre el campo de autoincrement. ¿Qué pasaría si agrego millones de registros? ¿Cómo manejar este tipo de situaciones? ¡Gracias!
El mayor valor de un entero tiene poco que ver con la cantidad máxima de filas que puede almacenar en una tabla.
Es cierto que si utiliza un int o bigint como clave principal, solo puede tener tantas filas como la cantidad de valores únicos en el tipo de datos de su clave principal, pero no tiene que convertir su clave principal en un entero. , podrías hacerlo un CHAR (100). También puede declarar la clave primaria en más de una columna.
Existen otras limitaciones 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 pueda almacenar solo 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 la cantidad de filas por tabla en MySQL.
Re su comentario: necesito 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 puede construir MySQL con la opción --with-big-tables
para que sea compatible con hasta 64 filas por mesa.
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. Cuántas filas encajan en esto depende del tamaño de cada fila.
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. Ese sería el número mínimo de registros que utilizan el límite máximo de filas. Sin embargo, se pueden agregar más registros si el tamaño de la fila es menor.
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 de tamaño máximo de fila de 65.535 bytes, incluso si el motor de almacenamiento admite 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 datos almacenados localmente dentro de una página de base de datos, es un poco menos de media página para configuraciones de 4KB, 8KB, 16KB y 32KB 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 tablas InnoDB".
Si una fila que contiene columnas de longitud variable excede el tamaño de fila máximo de InnoDB, InnoDB selecciona columnas de longitud variable para el almacenamiento externo fuera de la página hasta que la fila se ajuste al límite de tamaño de la 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, "InnoDB Row Storage and Row Formats".
Los diferentes formatos de almacenamiento usan 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 acerca de los formatos de filas 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 la tabla MyISAM".
http://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html
Los tipos mysql int pueden hacer bastantes filas: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
el mayor valor sin firmar es 4,294,967,295
El valor más grande sin signo es el 18,446,744,073,709,551,615
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 la memoria en su base de datos. Siempre cree una secuencia de comandos que pueda eliminar las filas que están fuera de uso o que mantendrán un total de filas dentro de una figura en particular, digamos mil.
Solo depende de la memoria libre y del tamaño máximo de archivo del sistema. No hay límite. Pero eso no significa que no deba tomar medidas de precaución al abordar el uso de la memoria en su base de datos. Siempre cree una secuencia de comandos que pueda eliminar las filas que están fuera de uso o que mantendrán un total de filas dentro de una figura en particular, digamos mil.
Sugiero que nunca borres datos. No diga si las tablas son más largas que 1000 truncan el final de la tabla. Tiene que haber una lógica comercial real en su plan, por ejemplo, cuánto tiempo ha estado inactivo este usuario. Por ejemplo, si es más de 1 año, colóquelos en una tabla diferente. Tendría esto suceder semanal o mensualmente en un guión de mantenimiento en medio de un tiempo lento.
Cuando se topa con muchas filas en su tabla, debe comenzar a fragmentar las tablas o particiones y poner los datos antiguos en tablas antiguas por año, como users_2011_jan, users_2011_feb o use 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 haga referencia a las tablas más grandes con particiones cuando necesite más información, como cuando el usuario está viendo su perfil. Todo esto debe considerarse con mucho cuidado, por lo que en el futuro no es demasiado caro volver a factorizar. También podría incluir únicamente a los usuarios que acceden a su sitio todo el tiempo en una tabla y a los usuarios que nunca ingresan en un conjunto archivado de tablas.
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 de tamaño máximo de fila de 65.535 bytes, incluso si el motor de almacenamiento admite 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 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 de página InnoDB predeterminado de 16 KB, que se define mediante la opción de configuración innodb_page_size. " Límites en tablas InnoDB ".
- Si una fila que contiene columnas de longitud variable excede el tamaño de fila máximo de InnoDB, InnoDB selecciona columnas de longitud variable para el almacenamiento externo fuera de la página hasta que la fila se ajuste al límite de tamaño de la 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 " InnoDB Row Storage and Row Formats ".
- Los diferentes formatos de almacenamiento usan diferentes cantidades de encabezado de página y datos de avance, lo que afecta la cantidad de almacenamiento disponible para las filas.