16.8. Limitaciones conocidas de MySQL Cluster

MySQL 5.0

16.8. Limitaciones conocidas de MySQL Cluster

En esta sección, proporcionamos un listado de las limitaciones conocidas en versiones de MySQL Cluster en las series 4.1.x comparadas con características disponibles al usar los motores MyISAM e InnoDB. Actualmente, no hay planes para arreglarlas en próximas versiones 4.1; sin embargo, intentaremos proporcionar soluciones para éstas en MySQL 5.0 y versiones posteriores. Si chequea la categoría de Cluster en la base de datos de bug de MySQL en http://bugs.mysql.com, encontrará bugs conocidos que (si están marcados como 4.1) intentaremos arreglar en próximas versiones de MySQL 4.1.

  • No cumplimiento de la sintaxis (resultando en errores al ejecutar aplicaciones existentes):

    • No se soportan todos los conjuntos de carácteres y colaciones.

    • No hay índices prefijo; sólo los campos completos pueden indexarse.

    • Los índices de texto no están soportados.

    • Tipos de datos geométricos (WKT y WKB) no soportados.

  • No cumplimiento con límites/comportamiento (puede resultar en errores al ejecutar aplicaciones existentes):

    • No hay rollback parcial de transacciones. Una clave duplicada o error similar resultará en un rollback de la transacción completa.

    • Existen un número de límites de hard que son configurables, pero la memoria disponible en el cluster delimite al límite. Consulte la lista completa de parámetros de configuración en Sección 16.4.4, “Fichero de configuración”. La mayoría de parámetros de configuración pueden actualizarse en línea. Estos límites de hard incluyen:

      • Tamaño de memoria de base de datos y de memoria índice ( y , respectivamente).

      • El máximo número de transacciones que pueden ejecutarse se delimita mediante el parámetro . Tenga en cuenta que la cantidad de carga , , y se tratan como casos especiales mediante ejecución de transacciones múltiples, y por lo tanto no están sujetas a esta limitación.

      • Los distintos límites relacionados con tablas e índices. Por ejemplo, el número máximo de índices ordenados por tabla lo determina .

    • Los nombres de bases de datos, tablas y atributos no pueden ser tan largos en NDB como con otros motores. Los nombres de atributos se truncan a 31 carácteres, y si no son únicos tras truncarse da lugar a error. Los nombres de base de datos y de tabla pueden tener en total un máximo de 122 carácteres. (Esto es, la longitud máxima para un nombre de tabla en un cluster NDB es 122 carácteres menos el número de carácteres en el nombre de la base de datos de la tabla.)

    • En MySQL 4.1 y 5.0, todos los registros de tabla de Cluster son de longitud fija. Esto significa (por ejemplo) que si una tabla tiene uno o más campos conteniendo sólo valores pequeños, serán necesarios más memoria y espacio de disco al usar el motor NDB que el que sería para la misma tabla y datos usando el motor MyISAM. Estamos trabajando para rectificar este punto en MySQL 5.1.

    • El máximo número de objetos de metadatos está limitado a 1600, incluyendo tablas de base de datos, tablas de sistema, índices y BLOBs. Estamos trabajando para incrementar esto a aproximadamente 20k en MySQL 5.0.

    • El máximo número de atributos por tabla está limitado a 128.

    • El tamaño máximo permitido de registro es 8k, sin incluir datos almacenados en columnas BLOB. Esperamos incrementar esto a aproximadamente 32k en MySQL 5.1.

    • El máximo número de atributos por clave es 32.

  • Características no soportadas (no causan errores, pero no están soportadas o forzadas):

    • El constructor de clave primaria se ignora, como en tablas MyISAM .

    • Los puntos de chequeo y rollbacks se ignoran como en MyISAM.

  • Rendimiento y temas relacionados con limitaciones :

    • La caché de consulta está desactivada, ya que no está invalidad si ocurre una actualización en distintos servidores MySQL.

    • Hay temas de rendimiento de consulta debido a acceso secuencial al motor NDB; también es relativamente más costoso hacer varios escaneos de rango que con MyISAM o InnoDB.

    • La estadística no está soportada, resultando en planes de consulta no óptimos en algunos casos. Use o como solución.

    • Índices hash únicos creados con no pueden usarse para acceder a una tabla si se da como parte de la clave.

  • Caracterísitcas no incluídas:

    • El único nivel de isolación soportado es . (InnoDB soporta , , y .) Consulte Sección 16.6.4.5, “Resolver problemas con copias de seguridad” para información sobre cómo puede afectar a las copias de seguridad y restauración de bases de datos Cluster.

    • Commits no durables en disco. Los commits se replican, pero no hay garantía que los logs se vuelquen a disco en un commit.

  • Problemas relacionados con múltiples MySQL servers (no relacionados con MyISAM o InnoDB):

    • no es completamente bloqueante cuando se ejecutan múltiples MySQL servers (no hay bloqueo de tabla distribuído).

    • La replicación MySQL no funcionará correctamente si las acutalizaciones se hacen en múltiples MySQL servers. Sin embargo, si el esquema de particionado de la base de datos es en nivel de aplicación, y no hay transacciones entre estas particiones, la replicación puede funcionar.

    • El autodescubrimiento de bases de datos no se soporta para múltiples MySQL servers accediendo al mismo MySQL Cluster. Sin embargo, el autodescubrimiento de tablas se soporta en estos casos. Lo que significa que si tras una base de datos llamada se crea o importa usando un MySQL server, debe ejecutar un ; en cada MySQL server adicional que accede al mismo MySQL Cluster. (Desde MySQL 5.0.2 puede usar ;.) Una vez hecho esto para un MySQL server dado, el servidor debería ser capaz de detectar las tablas de la base de datos sin error.

  • Temas exclusivos de MySQL Cluster (no relacionados con MyISAM o InnoDB):

    • Todas las máquinsa usadas en el cluster deben tener la misma arquitectura; esto es, todas las máquinas con nodos deben ser o big-endian o little-endian, y no puede usar una mezcla. Por ejemplo, no puede tener un nodo de administración ejecutándose en un PPC con un nodo datos en una máquina x86 . Esta restricción no se aplica a máquinas que ejecuten sólo mysql u otros clientes que puedan estar accediendo a los nodos SQL del cluster.

    • No es posible hacer cambios del esquema en línea tales como los realizados usando o , ya que NDB Cluster no soporta autodescubrimiento de tales cambios. (Sin embargo, puede importar o crear una tabla que use distintos motores, convertirlos a NDB usando ENGINE=NDBCLUSTER;. En tales casos, necesitará ejecutar un comando para forzar al cluster a recoger los cambios.)

    • Añadir o eliminar nodos en línea no es posible (el cluster debe reiniciarse en tales casos).

    • Cuando se usan múltiples servidores de administración debe dar a los nodos explícitamente los IDs en los connectstrings ya que la reserva automática de IDs de nodo no funciona entre múltiples servidores de administración.

    • Usando varios servidores de administración debe tener cuidado de tener la misma configuración para todos los servidores de administración. El cluster no hace chequeos para ello.

    • El número máximo de nodos de datos es 48.

    • El número máximo de nodos en MySQL Cluster es 63. Este número incluye todos los MySQL Servers (nodos SQL), nodos de datos, y servidores de administración.

Este listado trata de ser completo respecto al conjunto de condiciones del principio de esta sección. Puede reportar cualquier discrepancia que encuentre a la base de datos de bugs de MySQL en http://bugs.mysql.com/. Si no planeamos arreglar el problema n MySQL 4.1, lo añadiremos a la lista anterior.