List:Commits« Previous MessageNext Message »
From:jon Date:May 18 2007 2:49pm
Subject:svn commit - mysqldoc@docsrva: r6530 - trunk/refman-5.0
View as plain text  
Author: jstephens
Date: 2007-05-18 16:49:47 +0200 (Fri, 18 May 2007)
New Revision: 6530

Log:

Remaining 5.0 Limitations sections.



Modified:
   trunk/refman-5.0/mysql-cluster-limitations-working.xml


Modified: trunk/refman-5.0/mysql-cluster-limitations-working.xml
===================================================================
--- trunk/refman-5.0/mysql-cluster-limitations-working.xml	2007-05-18 14:41:27 UTC (rev 6529)
+++ trunk/refman-5.0/mysql-cluster-limitations-working.xml	2007-05-18 14:49:47 UTC (rev 6530)
Changed blocks: 3, Lines Added: 667, Lines Deleted: 712; 53204 bytes

@@ -7,757 +7,678 @@
 ]>
 <section id="mysql-cluster-limitations">
 
-    <title>Known Limitations of MySQL Cluster</title>
-
+  <title>Known Limitations of MySQL Cluster</title>
+  
+  <indexterm>
+    <primary>MySQL Cluster limitations</primary>
+  </indexterm>
+  
+  <indexterm>
+    <primary>limitations of MySQL Cluster</primary>
+  </indexterm>
+  
+  <para>
+    In the sections that follow, we discuss known limitations in MySQL
+    &current-series; Cluster and &mccge-series; releases as compared
+    with the features available when using the <literal>MyISAM</literal>
+    and <literal>InnoDB</literal> storage engines. Currently, there are
+    no plans to address these in coming releases of MySQL
+    &current-series; or &mccge-series;; however, we will attempt to
+    supply fixes for these issues in subsequent release series. If you
+    check the <quote>Cluster</quote> category in the MySQL bugs database
+    at <ulink url="http://bugs.mysql.com"/>, you can find known bugs
+    which (if marked <quote>&current-series;</quote>) we intend to
+    correct in upcoming releases of MySQL &current-series;. Some of
+    these issues may be addressed in &mccge-series; and the fixes
+    included in a future mainline MySQL Cluster version.
+  </para>
+  
+  <para>
+    This information is intended to be complete with respect to the
+    conditions just set forth. You can report any discrepancies that you
+    encounter to the MySQL bugs database using the instructions given in
+    <xref linkend="bug-reports"/>. If we do not plan to fix the problem
+    in MySQL &current-series;, we will add it to the list.
+  </para>
+  
+  <para>
+    See <xref linkend="mysql-cluster-limitations-resolved"/> for a list
+    of issues in MySQL Cluster in MySQL &previous-series; that have been
+    resolved in the current version.
+  </para>
+  
+    
+  
+  <section id="mysql-cluster-limitations-syntax">
+    
+    <title>Non-Compliance In SQL Syntax</title>
+    
     <indexterm>
       <primary>MySQL Cluster limitations</primary>
+      <secondary>syntax</secondary>
     </indexterm>
-
-    <indexterm>
-      <primary>limitations of MySQL Cluster</primary>
-<!-- <see>MySQL Cluster limitations</see> -->
-    </indexterm>
-
+    
     <para>
-      In this section, we provide a list of known limitations in MySQL
-      Cluster releases in the 5.0.x series compared to
-      features available when using the <literal>MyISAM</literal> and
-      <literal>InnoDB</literal> storage engines. Currently, there are no
-      plans to address these in coming releases of MySQL
-      5.0; however, we will attempt to supply fixes for
-      these issues in subsequent release series. If you check the
-      <quote>Cluster</quote> category in the MySQL bugs database at
-      <ulink url="http://bugs.mysql.com"/>, you can find known bugs
-      which (if marked <quote>5.0</quote>) we intend to
-      correct in upcoming releases of MySQL 5.0.
-    </para>
-
-    <para>
-      The list here is intended to be complete with respect to the
-      conditions just set forth. You can report any discrepancies that
-      you encounter to the MySQL bugs database using the instructions
-      given in <xref linkend="bug-reports"/>. If we do not plan to fix
-      the problem in MySQL 5.0, we will add it to the list.
-    </para>
-
-    <para>
-      (<emphasis role="bold">Note</emphasis>: See the end of this
-      section for a list of issues in MySQL 4.1 Cluster
-      that have been resolved in the current version.)
-    </para>
-
-    <itemizedlist>
-
-      <listitem>
-        <indexterm>
-          <primary>MySQL Cluster limitations</primary>
-          <secondary>syntax</secondary>
-        </indexterm>
-
-        <para>
-          <emphasis role="bold">Noncompliance in syntax</emphasis>
-          (resulting in errors when running existing applications):
-        </para>
-
-        <itemizedlist>
-
-          <listitem>
+      Some SQL statements relating to certain MySQL features produce
+      errors when used with <literal>NDB</literal> tables, as described
+      in the following list:
+      
+      <itemizedlist>
+        
+        <listitem>
+          <formalpara>
+            
+            <title>Temporary tables</title>
+            
             <para>
-              Temporary tables are not supported.
+              Temporary tables are not supported. Trying either to
+              create a temporary table that uses the
+              <literal>NDB</literal> storage engine or to alter an
+              existing temporary table to use <literal>NDB</literal>
+              fails with the error <errortext>Table storage engine
+                'ndbcluster' does not support the create option
+                'TEMPORARY'</errortext>.
             </para>
-          </listitem>
-
-          <listitem>
+            
+          </formalpara>
+        </listitem>
+        
+        <listitem>
+          <formalpara>
+            
+            <title>Indexes and keys in <literal>NDB</literal> tables</title>
+            
             <para>
-              You cannot create indexes on <literal>NDB</literal> table
-              columns that use any of the <literal>TEXT</literal> or
-              <literal>BLOB</literal> data types.
+              Keys and indexes on MySQL Cluster tables are subject to
+              the following limitations:
+              
+              <itemizedlist>
+                
+                <listitem>
+                  <para>
+                    You cannot create indexes on <literal>NDB</literal>
+                    table columns that use any of the
+                    <literal>TEXT</literal> or <literal>BLOB</literal>
+                    data types.
+                  </para>
+                </listitem>
+                
+                <listitem>
+                  <para>
+                    The <literal>NDB</literal> storage engine does not
+                    support <literal>FULLTEXT</literal> indexes, which
+                    are possible for <literal>MyISAM</literal> tables
+                    only.
+                  </para>
+                  
+                  <para>
+                    However, you can create indexes on
+                    <literal>VARCHAR</literal> columns of
+                    <literal>NDB</literal> tables.
+                  </para>
+                </listitem>
+                
+                <listitem>
+                  <para>
+                    A <literal>BIT</literal> column cannot be a primary
+                    key, unique key, or index, nor can it be part of a
+                    composite primary key, unique key, or index.
+                  </para>
+                </listitem>
+                
+                <listitem>
+                  <formalpara>
+                    
+                    <title>Duplicate keys</title>
+                    
+                    <para>
+                      A duplicate key error returns the error message
+                      <errortext>ERROR 23000: Can't write; duplicate key
+                        in table
+                        '<replaceable>tbl_name</replaceable>'</errortext>.
+                    </para>
+                    
+                  </formalpara>
+                </listitem>
+                
+                <listitem>
+                  <formalpara>
+                    
+                    <title><literal>AUTO_INCREMENT</literal> columns</title>
+                    
+                    <para>
+                      Like other MySQL storage engines, the
+                      <literal>NDB</literal> storage engine can handle a
+                      maximum of one <literal>AUTO_INCREMENT</literal>
+                      column per table. However, in the case of a
+                      Cluster table with no explicit primary key, an
+                      <literal>AUTO_INCREMENT</literal> column is
+                      automatically defined and used as a
+                      <quote>hidden</quote> primary key. For this
+                      reason, you cannot define a table that has an
+                      explicit <literal>AUTO_INCREMENT</literal> column
+                      unless that column is also declared using the
+                      <literal>PRIMARY KEY</literal> option. Attempting
+                      to create a table with an
+                      <literal>AUTO_INCREMENT</literal> column that is
+                      not the table's primary key, and using the
+                      <literal>NDB</literal> storage engine, fails with
+                      an error.
+                    </para>
+                    
+                  </formalpara>
+                </listitem>
+                
+              </itemizedlist>
             </para>
-
-            <para>
-              The <literal>NDB</literal> storage engine also does not
-              support <literal>FULLTEXT</literal> indexes (these are
-              supported by <literal>MyISAM</literal> only).
-            </para>
-
-            <para>
-              However, you can index <literal>VARCHAR</literal> columns
-              of <literal>NDB</literal> tables.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              A <literal>BIT</literal> column cannot be a primary key,
-              unique key, or index, nor can it be part of a composite
-              primary key, unique key, or index.
-            </para>
-          </listitem>
-
-          <listitem>
+            
+          </formalpara>
+        </listitem>
+        
+        <listitem>
+          <formalpara>
+            
+            <title>MySQL Cluster and geometry data types</title>
+            
             <indexterm>
               <primary>MySQL Cluster limitations</primary>
-              <secondary>geometry datatypes</secondary>
+              <secondary>geometry data types</secondary>
             </indexterm>
-
+            
             <para>
               Geometry datatypes (<literal>WKT</literal> and
-              <literal>WKB</literal>) are not supported by the
-              <literal>NDB</literal> storage engine prior to MySQL
-              5.0.16. (Note that spatial indexes are still not supported
-              for Cluster tables in MySQL 5.0.16 and newer.)
+              <literal>WKB</literal>) are supported in
+              <literal>NDB</literal> tables in MySQL &current-series;.
+              However, spatial indexes are not supported.
             </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              In MySQL 5.0.19 and earlier, <literal>INSERT
-              IGNORE</literal>, <literal>UPDATE IGNORE</literal>, and
-              <literal>REPLACE</literal> are supported only for primary
-              keys, but not for unique keys. One possible workaround is
-              to remove the constraint by dropping the unique index,
-              perform any inserts, and then add the unique index again.
-            </para>
-
-            <para>
-              This limitation is removed for <literal>INSERT
-              IGNORE</literal> and <literal>REPLACE</literal> in MySQL
-              5.0.20. (Bug #17431)
-            </para>
-          </listitem>
-
-        </itemizedlist>
-      </listitem>
-
-      <listitem>
-        <indexterm>
-          <primary>MySQL Cluster limitations</primary>
-          <secondary>causing errors</secondary>
-        </indexterm>
-
-        <para>
-          <emphasis role="bold">Non-compliance in limits or
-          behavior</emphasis> (may result in errors when running
-          existing applications):
-        </para>
-
-        <itemizedlist>
-
-          <listitem>
+            
+          </formalpara>
+        </listitem>
+        
+        
+        
+        <listitem>
+          <formalpara>
+            
+            <title>Row-based replication</title>
+            
             <indexterm>
-              <primary>memory use</primary>
-              <secondary>in MySQL Cluster</secondary>
+              <primary>MySQL Cluster limitations</primary>
+              <secondary>replication</secondary>
             </indexterm>
-
-            <indexterm>
-              <primary>MySQL Cluster</primary>
-              <secondary>memory usage and recovery</secondary>
-            </indexterm>
-
-            <indexterm>
-              <primary><literal>DELETE</literal></primary>
-              <secondary>and MySQL Cluster</secondary>
-            </indexterm>
-
-            <indexterm>
-              <primary><literal>DROP TABLE</literal></primary>
-              <secondary>and MySQL Cluster</secondary>
-            </indexterm>
-
-            <indexterm>
-              <primary><literal>TRUNCATE</literal></primary>
-              <secondary>and MySQL Cluster</secondary>
-            </indexterm>
-
+            
             <para>
-              <emphasis role="bold">Memory Usage</emphasis>:
+              When using row-based replication with MySQL Cluster,
+              binary logging cannot be disabled. That is, the
+              <literal>NDB</literal> storage engine ignores the value of
+              <literal>SQL_LOG_BIN</literal>. (Bug #16680)
             </para>
-
+            
+          </formalpara>
+        </listitem>
+        
+        <listitem>
+          <formalpara>
+            
+            <title><literal>auto_increment_increment</literal> and
+              <literal>auto_increment_offset</literal></title>
+            
             <para>
+              The <literal>auto_increment_increment</literal> and
+              <literal>auto_increment_offset</literal> server system
+              variables are not supported for Cluster replication.
+            </para>
+            
+          </formalpara>
+        </listitem>
+        
+      </itemizedlist>
+    </para>
+    
+  </section>
+  
+  <section id="mysql-cluster-limitations-limits">
+    
+    <title>Limits and Differences from Standard MySQL Limits</title>
+    
+    <indexterm>
+      <primary>MySQL Cluster limitations</primary>
+      <secondary>and differences from standard MySQL limits</secondary>
+    </indexterm>
+    
+    <para>
+      In this section, we list limits found in MySQL Cluster that either
+      differ from limits found in, or that are not found in, standard
+      MySQL.
+      
+      <itemizedlist>
+        
+        <listitem>
+          <indexterm>
+            <primary>memory use</primary>
+            <secondary>in MySQL Cluster</secondary>
+          </indexterm>
+          
+          <indexterm>
+            <primary>MySQL Cluster</primary>
+            <secondary>memory usage and recovery</secondary>
+          </indexterm>
+          
+          <indexterm>
+            <primary><literal>DELETE</literal></primary>
+            <secondary>and MySQL Cluster</secondary>
+          </indexterm>
+          
+          <indexterm>
+            <primary><literal>DROP TABLE</literal></primary>
+            <secondary>and MySQL Cluster</secondary>
+          </indexterm>
+          
+          <indexterm>
+            <primary><literal>TRUNCATE</literal></primary>
+            <secondary>and MySQL Cluster</secondary>
+          </indexterm>
+          
+          <formalpara>
+            
+            <title>Memory usage and recovery</title>
+            
+            <para>
               Memory comsumed when data is inserted into an
               <literal>NDB</literal> table is not automatically
               recovered when deleted, as it is with other storage
               engines. Instead, the following rules hold true:
+              
+              <itemizedlist>
+                
+                <listitem>
+                  <para>
+                    A <literal>DELETE</literal> statement on an
+                    <literal>NDB</literal> table makes the memory
+                    formerly used by the deleted rows available for
+                    re-use by inserts on the same table only. This
+                    memory cannot be used by other
+                    <literal>NDB</literal> tables.
+                  </para>
+                </listitem>
+                
+                <listitem>
+                  <para>
+                    A <literal>DROP TABLE</literal> or
+                    <literal>TRUNCATE</literal> operation on an
+                    <literal>NDB</literal> table frees the memory that
+                    was used by this table for re-use by any
+                    <literal>NDB</literal> table, either by the same
+                    table or by another <literal>NDB</literal> table.
+                  </para>
+                  
+                  <note>
+                    <para>
+                      Recall that <literal>TRUNCATE</literal> drops and
+                      re-creates the table. See
+                      <xref linkend="truncate"/>.
+                    </para>
+                  </note>
+                  
+                  <para>
+                    Memory freed by <literal>DELETE</literal> operations
+                    but still allocated to a specific table can also be
+                    made available for general re-use by performing a
+                    rolling restart of the cluster. See
+                    <xref linkend="mysql-cluster-rolling-restart"/>.
+                  </para>
+                </listitem>
+                
+                <listitem>
+                  <formalpara>
+                    
+                    <title>Limits imposed by the cluster's configuration</title>
+                    
+                    <indexterm>
+                      <primary>MySQL Cluster limitations</primary>
+                      <secondary>imposed by configuration</secondary>
+                    </indexterm>
+                    
+                    <para>
+                      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
+                      <xref linkend="mysql-cluster-config-file"/>. Most
+                      configuration parameters can be upgraded online.
+                      These hard limits include:
+                      
+                      <itemizedlist>
+                        
+                        <listitem>
+                          <para>
+                            Database memory size and index memory size
+                            (<literal>DataMemory</literal> and
+                            <literal>IndexMemory</literal>,
+                            respectively).
+                          </para>
+                          
+                          <para>
+                            <literal>DataMemory</literal> is allocated
+                            as 32KB pages. As each
+                            <literal>DataMemory</literal> page is used,
+                            it is assigned to a specific table; once
+                            allocated, this memory cannot be freed
+                            except by dropping the table.
+                          </para>
+                          
+                          <para>
+                            See
+                            <xref linkend="mysql-cluster-ndbd-definition"/>,
+                            for further information about
+                            <literal>DataMemory</literal> and
+                            <literal>IndexMemory</literal>.
+                          </para>
+                        </listitem>
+                        
+                        <listitem>
+                          <para>
+                            The maximum number of operations that can be
+                            performed per transaction is set using the
+                            configuration parameters
+                            <literal>MaxNoOfConcurrentOperations</literal>
+                            and
+                            <literal>MaxNoOfLocalOperations</literal>.
+                          </para><note><para>
+                            Bulk loading, <literal>TRUNCATE
+                              TABLE</literal>, and <literal>ALTER
+                                TABLE</literal> are handled as special cases
+                            by running multiple transactions, and so are
+                            not subject to this limitation.
+                          </para></note>
+                        </listitem>
+                        
+                        <listitem>
+                          <para>
+                            Different limits related to tables and
+                            indexes. For example, the maximum number of
+                            ordered indexes per table is determined by
+                            <literal>MaxNoOfOrderedIndexes</literal>.
+                          </para>
+                        </listitem>
+                        
+                      </itemizedlist>
+                    </para>
+                    
+                  </formalpara>
+                </listitem>
+                
+                <listitem>
+                  <formalpara>
+                    <title>Memory usage</title>
+                  <para>
+                    All Cluster table rows are of fixed length. This means
+                    (for example) that if a table has one or more
+                    <literal>VARCHAR</literal> fields containing only
+                    relatively small values, more memory and disk space is
+                    required when using the <literal>NDB</literal> storage
+                    engine than would be the case for the same table and data
+                    using the <literal>MyISAM</literal> engine. (In other
+                    words, in the case of a <literal>VARCHAR</literal> column,
+                    the column requires the same amount of storage as a
+                    <literal>CHAR</literal> column of the same size.)
+                  </para></formalpara>
+                </listitem>
+                
+                <listitem>
+                  <formalpara>
+                    
+                    <title>Node and data object maximums</title>
+                    
+                    <para>
+                      The following limits apply to numbers of cluster
+                      nodes and metadata objects:
+                      
+                      <itemizedlist>
+                        
+                        <listitem>
+                          <para>
+                            The maximum number of data nodes is 48.
+                          </para>
+                        </listitem>
+                        
+                        <listitem>
+                          <para>
+                            The total maximum number of nodes in a MySQL
+                            Cluster is 63. This number includes all SQL
+                            nodes (MySQL Servers), API nodes
+                            (applications accessing the cluster other
+                            than MySQL servers), data nodes, and
+                            management servers.
+                          </para>
+                        </listitem>
+                        
+                        <listitem>
+                          <para>
+                            The maximum number of metadata objects in
+                            MySQL 5.0 Cluster 20320. This limit is
+                            hard-coded.
+                          </para>
+                        </listitem>
+                        
+                      </itemizedlist>
+                      
+                      
+                    </para>
+                    
+                  </formalpara>
+                </listitem>
+                
+              </itemizedlist>
             </para>
-
-            <itemizedlist>
-
-              <listitem>
+            
+          </formalpara>
+        </listitem>
+        
+      </itemizedlist>
+    </para>
+    
+  </section>
+  <section id="mysql-cluster-limitations-transactions">
+    
+    <title>Limits Relating to Transaction Handling</title>
+    
+    <indexterm>
+      <primary>MySQL Cluster limitations</primary>
+      <secondary>transactions</secondary>
+    </indexterm>
+    
+    <para>
+      A number of limitations exist in MySQL Cluster with regard to the
+      handling of transactions. These include the following:
+      
+      <itemizedlist>
+        
+        <listitem>
+          <formalpara>
+            <title>Transaction isolation level</title>
+            <para>
+              The <literal>NDBCLUSTER</literal> storage engine supports
+              only the <literal>READ COMMITTED</literal> transaction
+              isolation level.
+              
+              <important>
                 <para>
-                  A <literal>DELETE</literal> statement on an
-                  <literal>NDB</literal> table makes the memory formerly
-                  used by the deleted rows available for re-use by
-                  inserts on the same table only. The memory cannot be
-                  used by other <literal>NDB</literal> tables.
+                  If a <literal>SELECT</literal> from a Cluster table
+                  includes a <literal>BLOB</literal> or
+                  <literal>TEXT</literal> column, the <literal>READ
+                    COMMITTED</literal> transaction isolation level is
+                  converted to a read with read lock. This is done to
+                  guarantee consistency, due to the fact that parts of the
+                  values stored in columns of these types are actually read
+                  from a separate table.
                 </para>
-              </listitem>
-
-              <listitem>
-                <para>
-                  A <literal>DROP TABLE</literal> or
-                  <literal>TRUNCATE</literal> operation on an
-                  <literal>NDB</literal> table frees the memory that was
-                  used by this table for re-use by any
-                  <literal>NDB</literal> table &mdash; either by the
-                  same table or by another <literal>NDB</literal> table.
-                </para>
-
-                <para>
-                  (Recall that <literal>TRUNCATE</literal> drops and
-                  re-creates the table. See <xref linkend="truncate"/>.)
-                </para>
-
-                <para>
-                  Memory freed by <literal>DELETE</literal> operations
-                  but still allocated to a specific table can also be
-                  made available for general re-use by performing a
-                  rolling restart of the cluster. See
-                  <xref linkend="mysql-cluster-rolling-restart"/>.
-                </para>
-              </listitem>
-
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
+              </important>
+            </para></formalpara>
+        </listitem>
+        
+        <listitem>
+          <formalpara>
+            <title>Rollbacks</title>
+            
             <para>
-              <emphasis role="bold">Error Reporting</emphasis>:
+              There is no partial rollback of transactions. A duplicate
+              key or similar error rolls back the entire transaction.
             </para>
-
-            <itemizedlist>
-
-              <listitem>
-                <para>
-                  A duplicate key error returns the error message
-                  <errortext>ERROR 23000: Can't write; duplicate key in
-                  table
-                  '<replaceable>tbl_name</replaceable>'</errortext>.
-                </para>
-              </listitem>
-
-              <listitem>
-                <para>
-                  Like other MySQL storage engines, the
-                  <literal>NDB</literal> storage engine can handle a
-                  maximum of one <literal>AUTO_INCREMENT</literal>
-                  column per table. However, in the case of a Cluster
-                  table with no explicit primary key, an
-                  <literal>AUTO_INCREMENT</literal> column is
-                  automatically defined and used as a
-                  <quote>hidden</quote> primary key. For this reason,
-                  you cannot define a table that has an explicit
-                  <literal>AUTO_INCREMENT</literal> column unless that
-                  column is also declared using the <literal>PRIMARY
-                  KEY</literal> option.
-                </para>
-
-                <para>
-                  Attempting to create a table with an
-                  <literal>AUTO_INCREMENT</literal> column that is not
-                  the table's primary key, and using the
-                  <literal>NDB</literal> storage engine, fails with an
-                  error.
-                </para>
-              </listitem>
-
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
+            
+          </formalpara>
+        </listitem>
+        
+        <listitem>
+          <formalpara>
+            <title>Transactions and memory usage</title>
+            
             <indexterm>
               <primary>MySQL Cluster limitations</primary>
-              <secondary>transactions</secondary>
+              <secondary>memory usage and transaction handling</secondary>
             </indexterm>
-
+            
+            <indexterm>
+              <primary>MySQL Cluster</primary>
+              <secondary>transaction handling</secondary>
+            </indexterm>
             <para>
-              <emphasis role="bold">Transaction Handling</emphasis>:
-            </para>
-
-            <itemizedlist>
-
-              <listitem>
-                <para>
-                  <literal>NDB Cluster</literal> supports only the
-                  <literal>READ COMMITTED</literal> transaction
-                  isolation level.
-                </para>
-              </listitem>
-
-              <listitem>
-                <para>
-                  There is no partial rollback of transactions. A
-                  duplicate key or similar error results in a rollback
-                  of the entire transaction.
-                </para>
-              </listitem>
-
-              <listitem>
-                <para>
-                  <emphasis role="bold">Important</emphasis>: If a
-                  <literal>SELECT</literal> from a Cluster table
-                  includes a <literal>BLOB</literal>,
-                  <literal>TEXT</literal>, or <literal>VARCHAR</literal>
-                  column, the <literal>READ COMMITTED</literal>
-                  transaction isolation level is converted to a read
-                  with read lock. This is done to guarantee consistency,
-                  due to the fact that parts of the values stored in
-                  columns of these types are actually read from a
-                  separate table.
-                </para>
-              </listitem>
-
-              <listitem>
-                <para>
-                  As noted elsewhere in this chapter, MySQL Cluster does
-                  not handle large transactions well; it is better to
-                  perform a number of small transactions with a few
-                  operations each than to attempt a single large
-                  transaction containing a great many operations.
-                </para>
-
-                <para>
-                  Among other considerations, large transactions require
-                  very large amounts of memory. Because of this, the
-                  transactional behaviour of a number of MySQL
-                  statements is effected as described in the following
-                  list:
-                </para>
-
-                <itemizedlist>
-
-                  <listitem>
+              As noted elsewhere in this chapter, MySQL Cluster does not
+              handle large transactions well; it is better to perform a
+              number of small transactions with a few operations each than
+              to attempt a single large transaction containing a great
+              many operations.  Among other considerations, large
+              transactions require very large amounts of memory. Because
+              of this, the transactional behaviour of a number of MySQL
+              statements is effected as described in the following list:
+              
+              <itemizedlist>
+                
+                <listitem>
+                  <para>
+                    <literal>TRUNCATE</literal> is not transactional when
+                    used on <literal>NDB</literal> tables. If a
+                    <literal>TRUNCATE</literal> fails to empty the table,
+                    then it must be re-run until it is successful.
+                  </para>
+                </listitem>
+                
+                <listitem>
+                  <para>
+                    <literal>DELETE FROM</literal> (even with no
+                    <literal>WHERE</literal> clause)
+                    <emphasis>is</emphasis> transactional. For tables
+                    containing a great many rows, you may find that
+                    performance is improved by using several
+                    <literal>DELETE FROM ... LIMIT ...</literal>
+                    statements to <quote>chunk</quote> the delete
+                    operation. If your objective is to empty the table,
+                    then you may wish to use <literal>TRUNCATE</literal>
+                    instead.
+                  </para>
+                </listitem>
+                
+                <listitem>
+                  <formalpara>
+                    
+                    <title><literal>LOAD DATA</literal> statements</title>
+                    
                     <para>
-                      <literal>TRUNCATE</literal> is not transactional
-                      when used on <literal>NDB</literal> tables. If a
-                      <literal>TRUNCATE</literal> fails to empty the
-                      table, then it must be re-run until it is
-                      successful.
-                    </para>
-                  </listitem>
-
-                  <listitem>
-                    <para>
-                      <literal>DELETE FROM</literal> (even with no
-                      <literal>WHERE</literal> clause)
-                      <emphasis>is</emphasis> transactional. For tables
-                      containing a great many rows, you may find that
-                      performance is improved by using several
-                      <literal>DELETE FROM ... LIMIT ...</literal>
-                      statements to <quote>chunk</quote> the delete
-                      operation. If the objective is to empty the table,
-                      then you may wish to use
-                      <literal>TRUNCATE</literal> instead.
-                    </para>
-                  </listitem>
-
-                  <listitem>
-                    <para>
                       <literal>LOAD DATA INFILE</literal> is not
                       transactional when used on <literal>NDB</literal>
-                      tables. <emphasis>During such an operation, the
-                      <literal>NDB</literal> engine can and does commit
-                      at will.</emphasis>
-                    </para>
-
-                    <para>
+                      tables.
+                      
+                      <important>
+                        <para>
+                          When executing a <literal>LOAD DATA
+                            INFILE</literal> statement, the
+                          <literal>NDB</literal> engine can and does
+                          commit at will.
+                        </para>
+                      </important>
+                      
                       <literal>LOAD DATA FROM MASTER</literal> is not
                       supported in MySQL Cluster.
                     </para>
-                  </listitem>
-
-                  <listitem>
+                    
+                  </formalpara>
+                </listitem>
+                
+                <listitem>
+                  <formalpara>
+                    
+                    <title><literal>ALTER TABLE</literal> and transactions</title>
+                    
                     <para>
-                      When copying a table as part of an <literal>ALTER
-                      TABLE</literal>, the creation of the copy is
-                      non-transactional. (In any case, this operation is
-                      rolled back when the copy is deleted.)
+                      When copying an <literal>NDB</literal> table as part
+                      of an <literal>ALTER TABLE</literal>, the creation
+                      of the copy is non-transactional. (In any case, this
+                      operation is rolled back when the copy is deleted.)
                     </para>
-                  </listitem>
-
-                </itemizedlist>
-              </listitem>
-
-              <listitem>
-                <para>
-                  <emphasis role="bold">Node Start, Stop, or
-                  Restart:</emphasis>: Starting, stopping, or restarting
-                  a node may give rise to temporary errors causing some
-                  transactions to fail. These include the following
-                  cases:
-                </para>
-
-                <itemizedlist>
-
-                  <listitem>
-                    <para>
-                      When first starting a node, it is possible that
-                      you may see Error 1204 <errortext>Temporary
-                      failure, distribution changed</errortext> and
-                      similar temporary errors.
-                    </para>
-                  </listitem>
-
-                  <listitem>
-                    <para>
-                      The stopping or failure of any data node can
-                      result in a number of different node failure
-                      errors. (However, there should be no aborted
-                      transactions when performing a planned shutdown of
-                      the cluster.)
-                    </para>
-                  </listitem>
-
-                </itemizedlist>
-
-                <para>
-                  In either of these cases, any errors that are
-                  generated must be handled within the application. This
-                  should be done by retrying the transaction.
-                </para>
-              </listitem>
-
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
-            <indexterm>
-              <primary>MySQL Cluster limitations</primary>
-              <secondary>imposed by configuration</secondary>
-            </indexterm>
-
-            <para>
-              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
-              <xref linkend="mysql-cluster-config-file"/>. Most
-              configuration parameters can be upgraded online. These
-              hard limits include:
+                    
+                  </formalpara>
+                </listitem>
+                
+              </itemizedlist>
             </para>
-
-            <itemizedlist>
-
-              <listitem>
-                <para>
-                  Database memory size and index memory size
-                  (<literal>DataMemory</literal> and
-                  <literal>IndexMemory</literal>, respectively).
-                </para>
-
-                <para>
-                  <literal>DataMemory</literal> is allocated as 32KB
-                  pages. As each <literal>DataMemory</literal> page is
-                  used, it is assigned to a specific table; once
-                  allocated, this memory cannot be freed except by
-                  dropping the table.
-                </para>
-
-                <para>
-                  See <xref linkend="mysql-cluster-ndbd-definition"/>,
-                  for further information about
-                  <literal>DataMemory</literal> and
-                  <literal>IndexMemory</literal>.
-                </para>
-              </listitem>
-
-              <listitem>
-                <para>
-                  The maximum number of operations that can be performed
-                  per transaction is set using the configuration
-                  parameters
-                  <literal>MaxNoOfConcurrentOperations</literal> and
-                  <literal>MaxNoOfLocalOperations</literal>. Note that
-                  bulk loading, <literal>TRUNCATE TABLE</literal>, and
-                  <literal>ALTER TABLE</literal> are handled as special
-                  cases by running multiple transactions, and so are not
-                  subject to this limitation.
-                </para>
-              </listitem>
-
-              <listitem>
-                <para>
-                  Different limits related to tables and indexes. For
-                  example, the maximum number of ordered indexes per
-                  table is determined by
-                  <literal>MaxNoOfOrderedIndexes</literal>.
-                </para>
-              </listitem>
-
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
-            <indexterm>
-              <primary>MySQL Cluster limitations</primary>
-              <secondary>database objects</secondary>
-            </indexterm>
-
-            <para>
-              Database names, table names and attribute names cannot be
-              as long in <literal>NDB</literal> tables as with other
-              table handlers. Attribute names are truncated to 31
-              characters, and if not unique after truncation give rise
-              to errors. Database names and table names can total a
-              maximum of 122 characters. (That is, the maximum length
-              for an <literal>NDB Cluster</literal> table name is 122
-              characters less the number of characters in the name of
-              the database of which that table is a part.)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              All Cluster table rows are of fixed length. This means
-              (for example) that if a table has one or more
-              <literal>VARCHAR</literal> fields containing only
-              relatively small values, more memory and disk space is
-              required when using the <literal>NDB</literal> storage
-              engine than would be the case for the same table and data
-              using the <literal>MyISAM</literal> engine. (In other
-              words, in the case of a <literal>VARCHAR</literal> column,
-              the column requires the same amount of storage as a
-              <literal>CHAR</literal> column of the same size.)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              The maximum number of tables in a Cluster database is
-              limited to 1792.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              The maximum number of ordered indexes per cluster,
-              including <literal>AUTO_INCREMENT</literal> columns and
-              hidden primary keys, is 2048.
-            </para>
-
-            <para>
-              This limitation was lifted in MySQL 5.0.23.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              The maximum number of attributes per table is limited to
-              128.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              The maximum permitted size of any one row is 8KB. Note
-              that each <literal>BLOB</literal> or
-              <literal>TEXT</literal> column contributes a maximum of
-              256 bytes towards this total.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              The maximum number of attributes per key is 32.
-            </para>
-          </listitem>
-
-        </itemizedlist>
-      </listitem>
-
-      <listitem>
-        <indexterm>
-          <primary>MySQL Cluster limitations</primary>
-          <secondary>unsupported features</secondary>
-        </indexterm>
-
-        <para>
-          <emphasis role="bold">Unsupported features</emphasis> (do not
-          cause errors, but are not supported or enforced):
-        </para>
-
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              The foreign key construct is ignored, just as it is in
-              <literal>MyISAM</literal> tables.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Savepoints and rollbacks to savepoints are ignored as in
-              <literal>MyISAM</literal>.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              <literal>OPTIMIZE</literal> operations are not supported.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              <literal>LOAD TABLE ... FROM MASTER</literal> is not
-              supported.
-            </para>
-          </listitem>
-
-        </itemizedlist>
-      </listitem>
-
-      <listitem>
-        <indexterm>
-          <primary>MySQL Cluster limitations</primary>
-          <secondary>performance</secondary>
-        </indexterm>
-
-        <para>
-          <emphasis role="bold">Performance and limitation-related
-          issues</emphasis>:
-        </para>
-
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              There are query performance issues due to sequential
-              access to the <literal>NDB</literal> storage engine; it is
-              also relatively more expensive to do many range scans than
-              it is with either <literal>MyISAM</literal> or
-              <literal>InnoDB</literal>.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              The <literal>Records in range</literal> statistic is not
-              supported. This may result in non-optimal query plans in
-              some cases. If necessary, you can employ <literal>USE
-              INDEX</literal> or <literal>FORCE INDEX</literal> to alter
-              the execution plan. See <xref linkend="index-hints"/>.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Unique hash indexes created with <literal>USING
-              HASH</literal> cannot be used for accessing a table if
-              <literal>NULL</literal> is given as part of the key.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              <literal>SQL_LOG_BIN</literal> has no effect on data
-              operations; however, it is supported for schema
-              operations.
-            </para>
-
-            <para>
-              MySQL Cluster cannot produce a binlog for tables having
-              <literal>BLOB</literal> columns but no primary key.
-            </para>
-
-            <para>
-              Only the following schema operations are logged in a
-              cluster binlog which is <emphasis>not</emphasis> on the
-              <command>mysqld</command> executing the statement:
-            </para>
-
-            <itemizedlist>
-
-              <listitem>
-                <para>
-                  <literal>CREATE TABLE</literal>
-                </para>
-              </listitem>
-
-              <listitem>
-                <para>
-                  <literal>ALTER TABLE</literal>
-                </para>
-              </listitem>
-
-              <listitem>
-                <para>
-                  <literal>DROP TABLE</literal>
-                </para>
-              </listitem>
-
-              <listitem>
-                <para>
-                  <literal>CREATE DATABASE</literal> / <literal>CREATE
-                  SCHEMA</literal>
-                </para>
-              </listitem>
-
-              <listitem>
-                <para>
-                  <literal>DROP DATABASE</literal> / <literal>DROP
-                  SCHEMA</literal>
-                </para>
-              </listitem>
-
-            </itemizedlist>
-          </listitem>
-
-        </itemizedlist>
-      </listitem>
-
-      <listitem>
-        <indexterm>
-          <primary>MySQL Cluster limitations</primary>
-          <secondary>unsupported features</secondary>
-        </indexterm>
-
-        <para>
-          <emphasis role="bold">Missing features</emphasis>:
-        </para>
-
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              The only supported isolation level is <literal>READ
-              COMMITTED</literal>. (InnoDB supports <literal>READ
-              COMMITTED</literal>, <literal>READ UNCOMMITTED</literal>,
-              <literal>REPEATABLE READ</literal>, and
-              <literal>SERIALIZABLE</literal>.) See
-              <xref linkend="mysql-cluster-backup-troubleshooting"/>,
-              for information on how this can affect backup and restore
-              of Cluster databases.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              No durable commits on disk. Commits are replicated, but
-              there is no guarantee that logs are flushed to disk on
-              commit.
-            </para>
-          </listitem>
-
-        </itemizedlist>
-      </listitem>
-
-
-    </itemizedlist>
-  
-  <section id="mysql-cluster-limitations-syntax">
-    <title></title>
+            </formalpara>
+        </listitem>
+        
+      </itemizedlist>
+    </para>
+    
+    
   </section>
   
-  <section id="mysql-cluster-limitations-limits">
-    <title></title>
-  </section>
-  
-  <section id="mysql-cluster-limitations-transactions">
-    <title></title>
-  </section>
-  
   <section id="mysql-cluster-limitations-error-handling">
-    <title></title>
+    
+    <title>Error Handling</title>
+    
+    <indexterm>
+      <primary>MySQL Cluster limitations</primary>
+      <secondary>error handling and reporting</secondary>
+    </indexterm>
+    
+    <para>
+      Starting, stopping, or restarting a node may give rise to
+      temporary errors causing some transactions to fail. These include
+      the following cases:
+      
+      <itemizedlist>
+        
+        <listitem>
+          <formalpara>
+            <title>Temporary errors</title>
+            <para>
+              When first starting a node, it is possible that you may see
+              Error 1204 <errortext>Temporary failure, distribution
+                changed</errortext> and similar temporary errors.
+            </para></formalpara>
+        </listitem>
+        
+        <listitem>
+          <formalpara>
+            <title>Errors due to node failure</title>
+            <para>
+              The stopping or failure of any data node can result in a
+              number of different node failure errors. (However, there
+              should be no aborted transactions when performing a planned
+              shutdown of the cluster.)
+            </para></formalpara>
+        </listitem>
+        
+      </itemizedlist>
+    </para>
+    
+    <para>
+      In either of these cases, any errors that are generated must be
+      handled within the application. This should be done by retrying
+      the transaction.
+    </para>
+    
+    <para>
+      See also <xref linkend="mysql-cluster-limitations-limits"/>.
+    </para>
   </section>
   <section id="mysql-cluster-limitations-database-objects">
     

@@ -794,10 +715,13 @@
         <listitem>
           <formalpara>
             <title>Number of tables</title>
-            <para>
-              The maximum number of <literal>NDB</literal> tables is
-              limited to 20320.
-            </para></formalpara>
+            
+            
+              <para>
+                The maximum number of tables in a Cluster database in
+                MySQL 5.0 is limited to 1792.
+              </para>
+            </formalpara>
         </listitem>
         
         <listitem><formalpara>

@@ -1401,8 +1325,39 @@
         </para></formalpara>
       </listitem>
       
+      
+      
+      <listitem>
+        <formalpara>
+          
+          <title><literal>IGNORE</literal> and <literal>REPLACE</literal> functionality</title>
+          
+          <indexterm>
+            <primary>MySQL Cluster limitations</primary>
+            <secondary>INSERT IGNORE, UPDATE IGNORE, and REPLACE statements</secondary>
+          </indexterm>
+          
+          <para>
+            In MySQL 5.0.19 and earlier, <literal>INSERT
+            IGNORE</literal>, <literal>UPDATE IGNORE</literal>, and            
+            <literal>REPLACE</literal> were supported only for primary
+            keys, but not for unique keys. It was possible to work
+            around this issue by removing the constraint, then
+            dropping the unique index, performing any inserts, and
+            then adding the unique index again.
+          </para>
+          
+        </formalpara>
+        
+        <para>
+          This limitation was removed for <literal>INSERT
+            IGNORE</literal> and <literal>REPLACE</literal> in MySQL
+          5.0.20. (See Bug #17431.)
+        </para>
+      </listitem>
+      
     </itemizedlist>
   </section>
   
   
-  </section>
+</section>


Thread
svn commit - mysqldoc@docsrva: r6530 - trunk/refman-5.0jon18 May