2010-06-21 21 views
7

Mi servidor MySql tiene actualmente 235 bases de datos. Debería preocuparme? Todos tienen la misma estructura con tablas MyISAM.¿Cuántas bases de datos puede manejar MySQL?

El hardware es una máquina virtual con 2 GB de RAM ejecutándose en un procesador Quad-Core AMD Opteron 2.2GHz.

Recientemente cPanel me envió un correo electrónico diciendo que MySql ha fallado y se ha reiniciado.

Se espera que se creen nuevas bases de datos y me pregunto si debería agregar más memoria o si simplemente debería agregar otra máquina virtual.

+1

Si bien nunca he oído hablar de un límite, podría inspeccionar su estructura. ¿Es realmente necesario? –

Respuesta

0

No creo que haya un límite estricto, lo único que realmente lo limita será su hardware y el tráfico que obtendrán estas bases de datos.

Usted parece tener muy poca memoria, lo que probablemente significa que usted no tiene un número masivo de conexiones ...

Usted debe comenzar por perfiles de uso para cada base de datos (o un conjunto de bases de datos, dependiendo de la forma en que se utilizan por supuesto).

Mi sugerencia - MySQL (o cualquier servidor de base de datos para el caso) podría usar más memoria. Nunca puedes tener suficiente.

0

Lo estás haciendo mal.

Comente con algunas especificaciones sobre sus bases de datos, y probablemente podamos informarle sobre dónde salió mal su diseño.

+1

Gracias a todos por sus comentarios. El sistema es similar a Google Analytics. Las visitas al sitio web de los usuarios se registran en una tabla "maestra". Una aplicación nativa está monitoreando la tabla maestra y procesa las visitas registradas y las escribe en la base de datos de los usuarios. Cada usuario tiene su propia base de datos. Esto ha sido decidido por sharding. Se están ejecutando varios informes y estadísticas para cada usuario. Y es más rápido si solo se ejecuta en una base de datos específica (menos datos) Sé que esta no es la mejor configuración. Pero tenemos que lidiar con eso por un tiempo. –

6

Las "bases de datos" en mysql son realmente catálogos, no tiene ningún efecto en sus límites si coloca todas las tablas en una o en las suyas.

El problema principal es la memoria caché de tabla. Sin ajustarlo, tendrá la caché de tabla predeterminada (= 64 típicamente), lo que significa que cerrará una tabla cada vez que abra una. Esto es increíblemente malo.

Excepto en MyISAM, es aún peor, porque cerrar una tabla arroja sus bloques clave de la memoria caché de claves, lo que significa que las búsquedas o escaneos posteriores leerán bloques reales del disco, lo cual es horrible y lento y realmente necesita ser evitado

Mi consejo es:

  • Si es posible, aumentar inmediatamente la caché de la tabla a> el número total de mesas
  • Monitorear las variables de estado Opened_tables mundial en su seguimiento; si aumenta rápidamente, esto es malo.
  • Realice pruebas de rendimiento y robustez en su mismo hardware en un entorno que no sea de producción (si todavía no lo está haciendo).
+1

También agregaría, verifique el límite del descriptor del archivo, aunque no esté directamente conectado al no. de bases de datos, puede quedarse sin descriptores de archivos con muchas tablas MyISAM. – nos

+0

El script de inicio normal aumentará el número (en Linux) según sea necesario; sin duda es posible tener 10.000 sin ningún problema. También otros motores pueden no usar un descriptor de archivo por tabla. – MarkR

1

(volviendo a publicar mi comentario para una mejor visibilidad) Gracias a todos por sus comentarios. El sistema es algo similar con Google Analytics. Las visitas al sitio web de los usuarios se registran en una tabla "maestra". Una aplicación nativa está monitoreando la tabla maestra y procesa las visitas registradas y las escribe en la base de datos de los usuarios. Cada usuario tiene su propia base de datos. Esto ha sido decidido por sharding. Se están ejecutando varios informes y estadísticas para cada usuario. Y es más rápido si solo se ejecuta en una base de datos específica (menos datos) Sé que esta no es la mejor configuración. Pero tenemos que lidiar con eso por un tiempo.

+0

Esta información parece relevante para la pregunta original. Si desea que tenga una mayor visibilidad que un comentario, ¿por qué no edita la pregunta original para incluir esta información? – Trevor

Cuestiones relacionadas