Muchas tablas de Mnesia muy grandes en producción

Estamos usando Mnesia como una base de datos primaria para un sistema muy grande. Las tablas fragmentadas de Mnesia se han comportado muy bien durante el período de prueba. El sistema tiene aproximadamente 15 tablas, cada una replicada en 2 sitios (nodos), y cada tabla está altamente fragmentada. Durante la fase de prueba, (que se centró en la disponibilidad, la eficiencia y las pruebas de carga), aceptamos el Mnesia con sus muchas ventajas de estructuras complejas, ya que todas nuestras aplicaciones que se ejecutan sobre el servicio son aplicaciones Erlang / OTP. Estamos ejecutando Yaws 1.91 como el servidor web principal.

Para configurar eficientemente tablas fragmentadas, utilizamos una serie de referencias que han utilizado mnesia en sistemas grandes:
Estos son:Mnesia Un año después Blog, Parte 2 del Blog, Lo seguí incluso aquí, Sobre Hashing. Estas publicaciones de blog nos han ayudado a ajustar aquí y allá para un mejor rendimiento.

Ahora, el problema. Mnesia tiene límites de tamaño de mesa, sí, estamos de acuerdo. Sin embargo, los límites en el número de fragmentos no se han mencionado en ninguna parte. Por razones de rendimiento y para atender grandes datos, ¿cuántos fragmentos mantendrían "bien" a mnesia?.

En algunas de nuestras tablas, tenemos 64 fragmentos. conn_disc_only_copies establecido en el número de nodos en el clúster para que cada nodo tenga una copia por fragmento. Esto nos ha ayudado a resolver problemas de falla de escritura de mnesia si un nodo dado está fuera de alcance en un instante. También en el blog anterior, sugiere quethe number of fragments should be a power of 2, esta declaración (dice) fue investigada por la forma en que mnesia hace el hash de registros. Sin embargo, necesitamos más explicaciones sobre esto, y de qué potencia de dos se habla aquí: 2,4,16,32,64,128, ...?

El sistema está diseñado para ejecutarse en HP Proliant G6, que contiene procesadores Intel (2 procesadores, cada uno de 4 núcleos, velocidad de 2,4 GHz cada núcleo, tamaño de caché de 8 MB), tamaño de RAM de 20 GB, espacio en disco de 1,5 terabytes. Ahora, 2 de estas máquinas de alta potencia están a nuestra disposición. La base de datos del sistema debe replicarse en los dos. Cada servidor ejecuta Solaris 10, 64 bits.

¿A qué número de fragmentos puede empeorar el rendimiento de mnesia? ¿Está bien si aumentamos el número de fragmentos de 64 a 128 para una tabla determinada? ¿Qué tal 65536 fragmentos (2 ^ 16)? ¿Cómo podemos escalar nuestra mnesia para utilizar el espacio Terabyte mediante la fragmentación?

Proporcione las respuestas a las preguntas y puede brindar asesoramiento sobre cualquier otro parámetro que pueda mejorar el Sistema.

NOTA: todas las tablas que contienen millones de registros se crean endisc_only_copies type, por lo que no hay problemas de RAM. La RAM será suficiente para las pocas tablas RAM que ejecutamos. Otros DBMS como MySQL Cluster y CouchDB también contendrán datos y están utilizando el mismo hardware con nuestro MMSIA DBMS. MySQL Cluster se replica en los dos servidores (cada uno con dos NDB Nodos, un servidor MySQL), el Nodo de Administración está en un HOST diferente.

Respuestas a la pregunta(1)

Su respuesta a la pregunta