2010-10-15 33 views
6

Estoy en proceso de crear una aplicación de base de datos PHP/MySql que podría tener un uso intensivo en ciertas tablas.MySql - Tabla grande única o varias tablas pequeñas

tres tablas tienen el potencial de tener una gran cantidad de cambios ejecutados - he aquí algo de información sobre estas tablas

  1. cada usuario tendrá un máximo de 200 registros por tabla
  2. cada fila puede ser tan grande como 250k
  3. potencial base de usuarios puede ser 5.000 usuarios

El amplio pregunta que tengo es ¿cuál es el máximo # tablas por base de datos MySql (en un servidor Linux). También estoy interesado en los pros y los contras de tomar el enfoque de asignar una tabla por usuario en lugar de una única tabla que comparten todos los usuarios.

+0

Según su comentario sobre el tamaño máximo de fila, supongo que tiene la intención de almacenar una gran cantidad de datos en un solo campo. ¿Qué proporción de tus actualizaciones estará en esa gran cantidad de datos frente a los otros campos? –

Respuesta

6

El número de tablas está limitado solo por el número de inodos o el espacio físico en el disco.

Sin saber más acerca de lo que estás haciendo, es difícil dar una gran opinión. En general, diría que una tabla de fila de 1.000.000 no es tan importante para MySQL, siempre y cuando tenga los índices adecuados. En mi humilde opinión, es una mejor solución que tener una mesa para cada usuario (el sistema puede hacerlo, pero creo que termina siendo una pesadilla de mantenimiento).

¿Por qué necesita 250k por mesa? ¿Qué almacena que es tan grande en cada fila? Explore dividir esos datos en otras tablas.

En general, un buen diseño de la base de datos coloca categorías de datos en tablas en lugar de utilizar tablas como filas.

+0

5,000 x 200 = 1,000,000. Sin embargo, todavía estoy de acuerdo en que las filas de 1M no son particularmente grandes para una base de datos. –

+0

@ar - gracias. Las matemáticas fallan allí. Lo arreglé :) – Cfreak

+0

bien dicho - creo que me quedaré con 1 tabla grande en su lugar (por ahora de todos modos) en función de sus comentarios. Gracias - – OneNerd

0

MySQL no impone límites máximos de la tabla. La verdadera limitación va a ser su sistema operativo. MySQL almacena cada tabla como un archivo separado, por lo que tener 5.000 tablas en lugar de 2 o 3 no es tan bueno.

Definitivamente no recomendaría crear una tabla para cada usuario, por una miríada de razones: desea que sus datos EN tablas.

Ponga un índice en su tabla de identificación de usuario y todo irá bien.

+1

MyISAM almacena cada tabla como un archivo separado, pero InnoDB no lo hace. –

1

Una tabla es definitivamente preferible desde el punto de vista del diseño y la programación. Considero que el enfoque de fragmentación multi-tabla es un truco que solo debería considerar por razones de rendimiento después de desarrollar y probar el diseño "correcto".

Las ACTUALIZACIONES te dolerán si 1) tu tabla está muy indexada o 2) implican mucha reescritura de fila/movimiento (algo que desconozco en MySQL).

1

El número máximo de tablas por base de datos está limitado en función de su sistema de archivos. Ese número corresponde a la cantidad de archivos permitidos en un directorio.

Crear tantas tablas parece una pesadilla de mantenimiento. Si alguna vez necesita cambiar algo sobre sus tablas, debe hacerlo para cada usuario. Eso podría pasar horas o días. Mantener todos sus datos de usuario en la misma tabla con un buen índice en la identificación del usuario lo llevará mucho más lejos.

Cuestiones relacionadas