2008-09-07 48 views
27

¿Cuál es el tamaño máximo para una tabla MySQL? ¿Son 2 millones a 50GB? 5 millones a 80 GB?Tamaño máximo de la tabla para una base de datos MySQL

En el extremo superior de la escala de tamaño, ¿debo pensar en comprimir los datos? ¿O tal vez dividir la mesa si creció demasiado?

+0

Bueno, realmente no te gustaría dividir una tabla si crece, solo quieres dividirla. –

+1

posible duplicado de [¿Qué tan grande puede obtener una base de datos MySQL antes de que el rendimiento comience a degradarse] (http://stackoverflow.com/questions/1276/how-big-can-a-mysql-database-get-before-performance-starts -to-degradar) – random

Respuesta

0

Sobre su primera pregunta, el tamaño máximo eficaz para la base de datoses generalmente determinada por el sistema operativo, específicamente el tamaño de archivo del servidor MySQL podrá crear, no por el servidor MySQL mismo. Esos límites juegan un papel importante en tabla límites de tamaño. Y MyISAM funciona de forma diferente a InnoDB. Entonces cualquier tabla dependerá de esos límites.

Si usa InnoDB tendrá más opciones para manipular tamaños de tabla, cambiar el tamaño del tablespace es una opción en este caso, por lo que si planea redimensionarlo, este es el camino a seguir. Eche un vistazo a la página de error The table is full.

No estoy seguro de la cantidad de registros reales de cada tabla dada toda la información necesaria (sistema operativo, tipo de tabla, columnas, tipo de datos y tamaño de cada uno, etc ...) Y no estoy seguro de si esta información es fácil calcular, pero he visto una tabla simple con alrededor de 1bi registros en un par de casos y MySQL no se rindió.

+1

¿por qué OS limitar el tamaño de su tabla? MySQL solo puede soportar tablas en un solo archivo? ¿No hay un concepto de espacio de tabla que permita mapear más de un archivo en una sola tabla? –

35

Alguna vez trabajé con una base de datos MySQL muy grande (Terabyte +). La mesa más grande que tuvimos fue, literalmente, más de mil millones de filas.

Funcionó. MySQL procesó los datos correctamente la mayor parte del tiempo. Aunque fue extremadamente difícil de manejar.

Solo hacer una copia de seguridad y almacenar los datos fue un desafío. Tomaría días restaurar la tabla si lo necesitáramos.

Tuvimos numerosas tablas en el rango de 10-100 millones de filas. Cualquier unión significativa a las tablas consumía mucho tiempo y tomaría para siempre. Así que escribimos procedimientos almacenados para 'recorrer' las tablas y procesar las uniones en rangos de 'id'. De esta forma, procesamos los datos de 10 a 100 000 filas a la vez (se unen contra los números de identificación de 1 a 100 000 y 100,001 a 200 000, etc.). Esto fue significativamente más rápido que unirse contra toda la tabla.

Usar índices en tablas muy grandes que no se basan en la clave primaria también es mucho más difícil. Mysql almacena índices en dos partes: almacena índices (que no sean el índice principal) como índices de los valores de las claves primarias. Por lo tanto, las búsquedas indexadas se realizan en dos partes: First MySQL va a un índice y extrae los valores clave principales que necesita encontrar, luego realiza una segunda búsqueda en el índice de clave principal para encontrar dónde están esos valores.

La red de esto es que para tablas muy grandes (1-200 millones más filas) la indexación contra tablas es más restrictiva. Necesita menos índices, más simples. Y hacer incluso simples declaraciones selectivas que no están directamente en un índice puede que nunca vuelvan. Donde las cláusulas deben presionar índices u olvidarse de ello.

Pero dicho todo eso, las cosas realmente funcionaron. Pudimos usar MySQL con estas tablas muy grandes y hacer cálculos y obtener respuestas correctas.

+1

¿Tiene alguna pista de dónde podría obtener tablas tan grandes para probar? Estamos escribiendo un sistema de gestión de bases de datos y nos gustaría probar el rendimiento de nuestro sistema junto con MySQL. – StanE

-1

ver este apoyo http://www.clb4u.com/2013/10/scalability-and-limits-of-mysql.html

para grandes bases de datos. Utilizamos el servidor MySQL con bases de datos que contienen 50 millones de registros. También sabemos de los usuarios que usan MySQL Server con 200,000 tablas y alrededor de 5,000,000,000 de filas.

+3

Por favor, no hagas solo respuestas de enlace. Incluye las partes esenciales de la respuesta aquí también. – Harry

+3

El enlace está roto. – dbcb

Cuestiones relacionadas