In this section, we provide a listing of known limitations in MySQL Cluster releases in the 4.1.x series when compared to features available when using the MyISAM and InnoDB storage engines. Currently there are no plans to address these in coming releases of 4.1; however, we will attempt to supply fixes for these issues in MySQL 5.0 and subsequent releases. If you check the Cluster category in the MySQL bugs database at http://bugs.mysql.com, you can find known bugs which (if marked 4.1) we intend to correct in upcoming releases of MySQL 4.1.
Noncompliance in syntax (resulting in errors when running existing applications):
Not all charsets and collations supported; see Section C.10.6, « MySQL Cluster-4.1.6, 10 octobre 2004 » for a list of those that are supported.
There are no prefix indexes; only entire fields can be indexed.
Text indexes are not supported.
Geometry datatypes (WKT and WKB) are not supported.
Non compliance in limits/behavior (may result in errors when running existing applications):
There is no partial rollback of transactions. A duplicate key or similar error will result in a rollback of the entire transaction.
A number of hard limits exist which are configurable, but available main memory in the cluster sets limits. See the complete list of configuration parameters in Section 16.4.4, « Fichier de configuration ». Most configuration parameters can be upgraded online. These hard limits include:
Database memory size and index memory size
(DataMemory
and
IndexMemory
, repectively).
The maximum number of transactions that can be
performed is set using the configuration parameter
MaxNoOfConcurrentOperations
. Note
that bulk loading, TRUNCATE TABLE
,
and ALTER TABLE
are handled as
special cases by running multiple transactions, and so
are not subject to this limitation.
Different limits related to tables and indexes. For
example, the maximum number of ordered indexes per
table is determined by
MaxNoOfOrderedIndexes
.
Database names, table names and attribute names cannot be as long in NDB tables as with other table handlers. Attibute names are truncated to 31 characters, and if not unique after truncation give rise to errors. Database names and table names can total maximum of 122 characters. (That is, the maximum length for an NDB Cluster table name is 122 characters less the number of characters in the name of the database of which that table is a part.)
In MySQL 4.1 and 5.0, all Cluster table rows are of fixed
length. This means (for example) that if a table has one
or more VARCHAR
fields containing only
relatively small values, more memory and disk space will
be required when using the NDB storage engine than would
be for the same table and data using the MyISAM engine. We
are working to rectify this issue in MySQL 5.1.
The maximum number of metadata objects is limited to 1600, including database tables, system tables, indexes and BLOBs.
The maximum number of attributes per table is limited to 128.
The maximum permitted size of any one row is 8k, not including data stored in BLOB columns.
The maximum number of attributes per key is 32.
Unsupported features (do not cause errors, but are not supported or enforced):
The foreign key construct is ignored, just as it is in MyISAM tables.
Savepoints and rollbacks to savepoints are ignored as in MyISAM.
Performance and limitation-related issues:
The query cache is disabled, since it is not invalidated if an update occurs on a different MySQL server.
There are query performance issues due to sequential access to the NDB storage engine; it is also relatively more expensive to do many range scans than it is with either MyISAM or InnoDB.
The Records in range
statistic is not
supported, resulting in non-optimal query plans in some
cases. Employ USE INDEX
or
FORCE INDEX
as a workaround.
Unique hash indexes created with USING
HASH
cannot be used for accessing a table if
NULL
is given as part of the key.
Missing features:
The only supported isolation level is
READ_COMMITTED
. (InnoDB supports
READ_COMMITTED
,
REPEATABLE_READ
, and
SERIALIZABLE
.) See
MySQL
Cluster Backup Troubleshooting for informaiton on
how this can effect backup/restore of Cluster databases.
No durable commits on disk. Commits are replicated, but there is no guarantee that logs are flushed to disk on commit.
Problems relating to multiple MySQL servers (not relating to MyISAM or InnoDB):
ALTER TABLE
is not fully locking when
running multiple MySQL servers (no distributed table
lock).
MySQL replication will not work correctly off if updates are done on multiple MySQL servers. However, if the database partitioning scheme done at the application level, and no transactions take place across these partitions, then replication can be made to work.
Autodiscovery of databases is not supported for multiple
MySQL servers accessing the same MySQL Cluster. However,
autodiscovery of tables is supported in such cases. What
this means is that after a database named
db_name
is created or imported
using one MySQL server, you should issue a CREATE
DATABASE
statement on each additional MySQL server that access the
same MySQL Cluster. (As of MySQL 5.0.2 you may also use
db_name
;CREATE SCHEMA
.) Once this
has been done for a given MySQL server, that server should
be able to detect the database tables without error.
db_name
;
Issues exclusive to MySQL Cluster (not related to MyISAM or InnoDB):
All machines used in the cluster must have the same architecture; that is, all machines hosting nodes must be either big-endian or little-endian, and you cannot use a mixture of both. For example, you cannot have a management node running on a PPC which directs a storage node that is running on an x86 machine. This restriction does not apply to machines simply running mysql or other clients that may be accessing the cluster's SQL nodes.
It is not possible to make online schema changes such as
those accomplished using ALTER TABLE
or
CREATE INDEX
. (However, you can import
or create a table that uses a different storage engine,
then convert it to NDB using ALTER TABLE
.)
tbl_name
ENGINE=NDBCLUSTER;
Online adding or dropping nodes is not possible (the cluster must be restarted in such cases).
When using multiple management servers one must give nodes explicit IDs in connectstrings since automatic allocation of node IDs does not work across multiple management servers.
When using multiple management servers one must take extreme care to have the same configurations for all management servers. No special checks for this are performed by the cluster.
The maximum number of storage nodes is 48.
The total maximum number of nodes in a MySQL Cluster is 63. This number includes all MySQL Servers (SQL nodes), storage nodes, and management servers.
This listing is intended to be complete with respect to the conditions set forth at the beginning of this section. You can report any discrepancies that you encounter to the MySQL bugs database at http://bugs.mysql.com/. If we do not plan to fix the problem in MySQL 4.1, we will add it to the list above.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.