List:Internals« Previous MessageNext Message »
From:jon Date:July 29 2005 2:38am
Subject:bk commit - mysqldoc@docsrva tree (jon:1.3128)
View as plain text  
Below is the list of changes that have just been committed into a local
mysqldoc repository of jon. When jon does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://www.mysql.com/doc/I/n/Installing_source_tree.html

ChangeSet
  1.3128 05/07/29 12:37:59 jon@stripped +5 -0
  RefMan-5.0 edits:
    - Completed edits to Optimisation 
      chapter.
    - Cluster chapter edits.
    - Changed titles.ent to remove version 
      references in a couple Cluster chapter 
      section titles/IDs. 
    - Updated Status file.

  refman-5.0/using-mysql-programs.xml
    1.4 05/07/29 12:37:57 jon@stripped +7 -6
    Minor edit.

  refman-5.0/titles.ent
    1.40 05/07/29 12:37:56 jon@stripped +2 -2
    Changed a couple of Cluster chapter
    section titles and IDs to eliminate
    version dependencies.

  refman-5.0/ndbcluster.xml
    1.22 05/07/29 12:37:56 jon@stripped +482 -352
    More RefMan-5.0 edits.

  refman-5.0/mysql-optimization.xml
    1.7 05/07/29 12:37:56 jon@stripped +388 -368
    Remaining RefMan-5.0 edits.

  refman-5.0/Status
    1.13 05/07/29 12:37:56 jon@stripped +17 -11
    Updating...
    
    Also noted files likely to move 
    to refman-common tree.

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	jon
# Host:	gigan.
# Root:	/home/jon/bk/mysqldoc

--- 1.6/refman-5.0/mysql-optimization.xml	2005-07-24 01:09:55 +10:00
+++ 1.7/refman-5.0/mysql-optimization.xml	2005-07-29 12:37:56 +10:00
@@ -6593,9 +6593,9 @@
 
         <para>
           The statements in <filename>mysqld_init.sql</filename> are
-          executed each time the server starts. It should contain one
-          SQL statement per line. The following example assigns several
-          tables each to <literal>hot_cache</literal> and
+          executed each time the server starts. The file should contain 
+          one SQL statement per line. The following example assigns 
+          several tables each to <literal>hot_cache</literal> and
           <literal>cold_cache</literal>:
         </para>
 
@@ -6609,9 +6609,12 @@
       <section id="midpoint-insertion">
 
         <title id='title-midpoint-insertion'>&title-midpoint-insertion;</title>
-
+<!--  
+      [JS] This continues to be the case for key management in 5.0, 
+      right?  
+-->
         <para>
-          By default, the key cache management system of MySQL 4.1 uses
+          By default, the key cache management system in MySQL 5.0 uses
           the LRU strategy for choosing key cache blocks to be evicted,
           but it also supports a more sophisticated method called the
           "midpoint insertion strategy."
@@ -6634,12 +6637,18 @@
           it is placed at the end of the warm sub-chain. After a certain
           number of hits (accesses of the block), it is promoted to the
           hot sub-chain. At present, the number of hits required to
-          promote a block (3) is the same for all index blocks. In the
-          future, we will allow the hit count to depend on the B-tree
-          level of the node corresponding to an index block: Fewer hits
-          are required for promotion of an index block if it contains a
-          non-leaf node from the upper levels of the index B-tree than
-          if it contains a leaf node.
+          promote a block (3) is the same for all index blocks. 
+<!--  
+      [JS]  Commenting out promise until it's determined when we plan to 
+      implement this. 
+-->
+<!--
+          In the future, we will allow the hit count to depend on the 
+          B-tree level of the node corresponding to an index block: 
+          Fewer hits are required for promotion of an index block if it 
+          contains a non-leaf node from the upper levels of the index 
+          B-tree than if it contains a leaf node.
+-->
         </para>
 
         <para>
@@ -6746,11 +6755,10 @@
         <title id='title-key-cache-block-size'>&title-key-cache-block-size;</title>
 
         <para>
-          MySQL 4.1 introduces a new
-          <literal>key_cache_block_size</literal> variable on a per-key
-          cache basis. This variable specifies the size of the block
-          buffers for a key cache. It is intended to allow tuning of the
-          performance of I/O operations for index files.
+          In MySQL 5.0, it is possible to specify the size of the block
+          buffers for an individual key cache using the 
+          <literal>key_cache_block_size</literal> variable. This permits 
+          tuning of the performance of I/O operations for index files.
         </para>
 
         <para>
@@ -6769,9 +6777,13 @@
           <filename>.MYI</filename> index file is created, depending on
           the size of the keys in the indexes present in the table
           definition. In most cases, it is set equal to the I/O buffer
-          size. In the future, this will be changed and then the
+          size. 
+<!--  [js] Commenting out promise pending review. -->
+<!--
+          In the future, this will be changed and then the
           <literal>key_cache_block_size</literal> variable is fully
           employed.
+-->
         </para>
 
       </section>
@@ -6833,7 +6845,7 @@
 
       <para>
         When you execute a <command>mysqladmin status</command> command,
-        you'll see something like this:
+        you see something like this:
       </para>
 
 <programlisting>
@@ -6851,16 +6863,15 @@
         queries for a given table simultaneously. To minimize the
         problem with multiple client threads having different states on
         the same table, the table is opened independently by each
-        concurrent thread. This takes some memory but normally increases
-        performance. With <literal>MyISAM</literal> tables, one extra
-        file descriptor is required for the data file for each client
-        that has the table open. (By contrast, the index file descriptor
-        is shared between all threads.) The <literal>ISAM</literal>
-        storage engine shares this behavior.
+        concurrent thread. This uses additional memory but normally 
+        increases performance. With <literal>MyISAM</literal> tables, 
+        one extra file descriptor is required for the data file for each 
+        client that has the table open. (By contrast, the index file 
+        descriptor is shared between all threads.)
       </para>
 
       <para>
-        You can read more about this topic in the next section. See
+        You can read more about this topic in the next section, 
         <xref linkend="table-cache"/>.
       </para>
 
@@ -6918,9 +6929,10 @@
         concurrent running connections, you should have a table cache
         size of at least <literal>200 *
         <replaceable>N</replaceable></literal>, where
-        <replaceable>N</replaceable> is the maximum number of tables in
-        a join. You also need to reserve some extra file descriptors for
-        temporary tables and files.
+        <replaceable>N</replaceable> is the maximum number of tables per 
+        join in any of the queries which you execute. You also need to 
+        reserve some extra file descriptors for temporary tables and 
+        files.
       </para>
 
       <para>
@@ -6932,7 +6944,7 @@
         queries, and be very unreliable. You also have to take into
         account that the <literal>MyISAM</literal> storage engine needs
         two file descriptors for each unique open table. You can
-        increase the number of file descriptors available for MySQL with
+        increase the number of file descriptors available to MySQL using
         the <literal>--open-files-limit</literal> startup option to
         <command>mysqld_safe</command>. See
         <xref linkend="not-enough-file-handles"/>.
@@ -6943,7 +6955,8 @@
         <literal>table_cache</literal> entries. The default value is 64;
         this can be changed with the <literal>--table_cache</literal>
         option to <command>mysqld</command>. Note that MySQL may
-        temporarily open even more tables to be able to execute queries.
+        temporarily open more tables than this in order to execute 
+        queries.
       </para>
 
       <para>
@@ -6963,8 +6976,8 @@
         <listitem>
           <para>
             When the cache contains more than
-            <literal>table_cache</literal> entries and a thread is no
-            longer using a table.
+            <literal>table_cache</literal> entries and a table in the 
+            cache is no longer being used by any threads.
           </para>
         </listitem>
 
@@ -6988,8 +7001,8 @@
 
         <listitem>
           <para>
-            Tables that are not currently in use are released, in least
-            recently used order.
+            Tables that are not currently in use are released, beginning 
+            with the table least recently used.
           </para>
         </listitem>
 
@@ -7010,6 +7023,7 @@
       </para>
 
 <!--  TODO: does following paragraph apply to MyISAM/ISAM only? - PD -->
+<!--  [js] This repeats what's said in the previous section.  -->
 
       <para>
         A table is opened for each concurrent access. This means the
@@ -7019,7 +7033,7 @@
         open requires an entry in the table cache. The first open of any
         table takes two file descriptors: one for the data file and one
         for the index file. Each additional use of the table takes only
-        one file descriptor, for the data file. The index file
+        one file descriptor for the data file. The index file
         descriptor is shared among all threads.
       </para>
 
@@ -7027,12 +7041,12 @@
         If you are opening a table with the <literal>HANDLER
         <replaceable>tbl_name</replaceable> OPEN</literal> statement, a
         dedicated table object is allocated for the thread. This table
-        object is not shared by other threads and is not closed until
-        the thread calls <literal>HANDLER
-        <replaceable>tbl_name</replaceable> CLOSE</literal> or the
-        thread terminates. When this happens, the table is put back in
-        the table cache (if the cache isn't full). See
-        <xref linkend="handler"/>.
+        object is <emphasis role="bold">not</emphasis> shared with other 
+        threads and is not closed until the thread calls 
+        <literal>HANDLER <replaceable>tbl_name</replaceable> 
+        CLOSE</literal> or until the thread terminates. When this 
+        happens, the table is returned to the table cache (if the cache 
+        isn't full). See <xref linkend="handler"/>.
       </para>
 
       <para>
@@ -7051,9 +7065,9 @@
 </programlisting>
 
       <para>
-        If the value is quite big, even when you haven't issued a lot of
+        If the value is large, even when you have not issued a lot of
         <literal>FLUSH TABLES</literal> statements, you should increase
-        your table cache size. See
+        the table cache size. See 
         <xref linkend="server-system-variables"/> and
         <xref linkend="server-status-variables"/>.
       </para>
@@ -7068,15 +7082,15 @@
         <primary>tables</primary>
         <secondary>too many</secondary>
       </indexterm>
-
+<!--  [js]  Large compared to what? -->
       <para>
-        If you have many <literal>MyISAM</literal> or
-        <literal>ISAM</literal> tables in a database directory, open,
-        close, and create operations are slow. If you execute
-        <literal>SELECT</literal> statements on many different tables,
-        there is a little overhead when the table cache is full, because
-        for every table that has to be opened, another must be closed.
-        You can reduce this overhead by making the table cache larger.
+        If you have many <literal>MyISAM</literal> tables in the same 
+        database directory, open, close, and create operations are slow. 
+        If you execute <literal>SELECT</literal> statements on many 
+        different tables, there is a little overhead when the table 
+        cache is full, because for every table that has to be opened, 
+        another must be closed. You can reduce this overhead by making 
+        the table cache larger.
       </para>
 
     </section>
@@ -7116,12 +7130,12 @@
       <para>
         The default operating system to use is very important! To get
         the best use of multiple-CPU machines, you should use Solaris
-        (because its threads implementation works really well) or Linux
-        (because the 2.4 kernel has really good SMP support). Note that
-        older Linux kernels have a 2GB filesize limit by default. If you
-        have such a kernel and a desperate need for files larger than
-        2GB, you should get the Large File Support (LFS) patch for the
-        ext2 filesystem. Other filesystems such as ReiserFS and XFS do
+        (because its threads implementation works well) or Linux 
+        (because the 2.4 and later kernels have good SMP support). Note 
+        that older Linux kernels have a 2GB filesize limit by default. 
+        If you have such a kernel and a need for files larger than 2GB, 
+        you should get the Large File Support (LFS) patch for the ext2 
+        filesystem. Other filesystems such as ReiserFS and XFS do
         not have this 2GB limitation.
       </para>
 
@@ -7152,11 +7166,7 @@
           <para>
             Use the <literal>--skip-external-locking</literal> MySQL
             option to avoid external locking. This option is on by
-            default as of MySQL 4.0. Before that, it is on by default
-            when compiling with MIT-pthreads, because
-            <literal>flock()</literal> isn't fully supported by
-            MIT-pthreads on all platforms. It's also on by default for
-            Linux because Linux file locking is not yet safe.
+            default in MySQL 5.0.
           </para>
 
           <para>
@@ -7170,12 +7180,15 @@
           </para>
 
           <para>
-            The only case when you can't use
+            The only case where you cannot use
             <literal>--skip-external-locking</literal> is if you run
             multiple MySQL <emphasis>servers</emphasis> (not clients) on
             the same data, or if you run <command>myisamchk</command> to
             check (not repair) a table without telling the server to
-            flush and lock the tables first.
+            flush and lock the tables first. Note that using multiple 
+            MySQL servers to access the same data concurrently is 
+            generally <emphasis role="bold">not</emphasis> recommended, 
+            except when using MySQL Cluster.
           </para>
 
           <para>
@@ -7214,8 +7227,7 @@
 
       <para>
         You can determine the default buffer sizes used by the
-        <command>mysqld</command> server with this command (prior to
-        MySQL 4.1, omit <literal>--verbose</literal>):
+        <command>mysqld</command> server using this command:
       </para>
 
 <programlisting>
@@ -7236,45 +7248,117 @@
         options and configurable system variables. The output includes
         the default variable values and looks something like this:
       </para>
+      
+<!--  [js] Updated using output from 5.0.9-beta.  -->
 
 <programlisting>
-back_log                 current value: 5
-bdb_cache_size           current value: 1048540
-binlog_cache_size        current value: 32768
-connect_timeout          current value: 5
-delayed_insert_limit     current value: 100
-delayed_insert_timeout   current value: 300
-delayed_queue_size       current value: 1000
-flush_time               current value: 0
-interactive_timeout      current value: 28800
-join_buffer_size         current value: 131072
-key_buffer_size          current value: 1048540
-long_query_time          current value: 10
-lower_case_table_names   current value: 0
-max_allowed_packet       current value: 1048576
-max_binlog_cache_size    current value: 4294967295
-max_connect_errors       current value: 10
-max_connections          current value: 100
-max_delayed_threads      current value: 20
-max_heap_table_size      current value: 16777216
-max_join_size            current value: 4294967295
-max_sort_length          current value: 1024
-max_tmp_tables           current value: 32
-max_write_lock_count     current value: 4294967295
-myisam_sort_buffer_size  current value: 8388608
-net_buffer_length        current value: 16384
-net_read_timeout         current value: 30
-net_retry_count          current value: 10
-net_write_timeout        current value: 60
-read_buffer_size         current value: 131072
-read_rnd_buffer_size     current value: 262144
-slow_launch_time         current value: 2
-sort_buffer              current value: 2097116
-table_cache              current value: 64
-thread_concurrency       current value: 10
-thread_stack             current value: 131072
-tmp_table_size           current value: 1048576
-wait_timeout             current value: 28800
+back_log                          50
+binlog_cache_size                 32768
+bulk_insert_buffer_size           8388608
+connect_timeout                   5
+date_format                       (No default value)
+datetime_format                   (No default value)
+default_week_format               0
+delayed_insert_limit              100
+delayed_insert_timeout            300
+delayed_queue_size                1000
+expire_logs_days                  0
+flush_time                        1800
+ft_max_word_len                   84
+ft_min_word_len                   4
+ft_query_expansion_limit          20
+ft_stopword_file                  (No default value)
+group_concat_max_len              1024
+innodb_additional_mem_pool_size   1048576
+innodb_autoextend_increment       8
+innodb_buffer_pool_awe_mem_mb     0
+innodb_buffer_pool_size           8388608
+innodb_concurrency_tickets        500
+innodb_file_io_threads            4
+innodb_force_recovery             0
+innodb_lock_wait_timeout          50
+innodb_log_buffer_size            1048576
+innodb_log_file_size              5242880
+innodb_log_files_in_group         2
+innodb_mirrored_log_groups        1
+innodb_open_files                 300
+innodb_sync_spin_loops            20
+innodb_thread_concurrency         8
+innodb_thread_sleep_delay         10000
+interactive_timeout               28800
+join_buffer_size                  131072
+key_buffer_size                   8388600
+key_cache_age_threshold           300
+key_cache_block_size              1024
+key_cache_division_limit          100
+long_query_time                   10
+lower_case_table_names            1
+max_allowed_packet                1048576
+max_binlog_cache_size             4294967295
+max_binlog_size                   1073741824
+max_connect_errors                10
+max_connections                   100
+max_delayed_threads               20
+max_error_count                   64
+max_heap_table_size               16777216
+max_join_size                     4294967295
+max_length_for_sort_data          1024
+max_relay_log_size                0
+max_seeks_for_key                 4294967295
+max_sort_length                   1024
+max_tmp_tables                    32
+max_user_connections              0
+max_write_lock_count              4294967295
+multi_range_count                 256
+myisam_block_size                 1024
+myisam_data_pointer_size          6
+myisam_max_extra_sort_file_size   2147483648
+myisam_max_sort_file_size         2147483647
+myisam_repair_threads             1
+myisam_sort_buffer_size           8388608
+net_buffer_length                 16384
+net_read_timeout                  30
+net_retry_count                   10
+net_write_timeout                 60
+open_files_limit                  0
+optimizer_prune_level             1
+optimizer_search_depth            62
+preload_buffer_size               32768
+query_alloc_block_size            8192
+query_cache_limit                 1048576
+query_cache_min_res_unit          4096
+query_cache_size                  0
+query_cache_type                  1
+query_cache_wlock_invalidate      FALSE
+query_prealloc_size               8192
+range_alloc_block_size            2048
+read_buffer_size                  131072
+read_only                         FALSE
+read_rnd_buffer_size              262144
+div_precision_increment           4
+record_buffer                     131072
+relay_log_purge                   TRUE
+relay_log_space_limit             0
+slave_compressed_protocol         FALSE
+slave_net_timeout                 3600
+slave_transaction_retries         10
+slow_launch_time                  2
+sort_buffer_size                  2097144
+sync-binlog                       0
+sync-frm                          TRUE
+sync-replication                  0
+sync-replication-slave-id         0
+sync-replication-timeout          10
+table_cache                       64
+thread_cache_size                 0
+thread_concurrency                10
+thread_stack                      196608
+time_format                       (No default value)
+tmp_table_size                    33554432
+transaction_alloc_block_size      8192
+transaction_prealloc_size         4096
+updatable_views_with_limit        1
+wait_timeout                      28800
 </programlisting>
 
       <para>
@@ -7326,99 +7410,77 @@
         any other variables.
       </para>
 
+<!--  
+      TODO: Update/augment these examples to cover more realistic 
+      amounts of memory. In 2005/06, new desktop PCs have 256MB or 
+      512MB, nobody's running a production box with 128MB, and 256MB 
+      should probably be considered a "minimal/testing" configuration.  
+      [js]
+-->
+      
       <para>
         The following examples indicate some typical variable values for
-        different runtime configurations. The examples use the
-        <command>mysqld_safe</command> script and use
-        <literal>--<replaceable>var_name</replaceable>=<replaceable>value</replaceable></literal>
-        syntax to set the variable <replaceable>var_name</replaceable>
-        to the value <replaceable>value</replaceable>. This syntax is
-        available as of MySQL 4.0. For older versions of MySQL, take the
-        following differences into account:
+        different runtime configurations.
       </para>
 
       <itemizedlist>
-
-        <listitem>
-          <para>
-            Use <command>safe_mysqld</command> rather than
-            <command>mysqld_safe</command>.
-          </para>
-        </listitem>
-
-        <listitem>
+      
+        <listitem>      
           <para>
-            Set variables using
-            <literal>--set-variable=<replaceable>var_name</replaceable>=<replaceable>value</replaceable></literal>
-            or <literal>-O
-            <replaceable>var_name</replaceable>=<replaceable>value</replaceable></literal>
-            syntax.
+            If you have at least 256MB of memory and many tables and 
+            want maximum performance with a moderate number of clients, 
+            you should use something like this:
           </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            For variable names that end in <literal>_size</literal>, you
-            may need to specify them without <literal>_size</literal>.
-            For example, the old name for
-            <literal>sort_buffer_size</literal> is
-            <literal>sort_buffer</literal>. The old name for
-            <literal>read_buffer_size</literal> is
-            <literal>record_buffer</literal>. To see which variables
-            your version of the server recognizes, use <command>mysqld
-            --help</command>.
-          </para>
-        </listitem>
-
-      </itemizedlist>
-
-      <para>
-        If you have at least 256MB of memory and many tables and want
-        maximum performance with a moderate number of clients, you
-        should use something like this:
-      </para>
 
 <programlisting>
 shell&gt; mysqld_safe --key_buffer_size=64M --table_cache=256 \
            --sort_buffer_size=4M --read_buffer_size=1M &amp;
 </programlisting>
-
-      <para>
-        If you have only 128MB of memory and only a few tables, but you
-        still do a lot of sorting, you can use something like this:
-      </para>
+        </listitem>
+        
+        <listitem>
+          <para>
+            If you have only 128MB of memory and only a few tables, but 
+            you still do a lot of sorting, you can use something like 
+            this:
+          </para>
 
 <programlisting>
 shell&gt; mysqld_safe --key_buffer_size=16M --sort_buffer_size=1M
 </programlisting>
 
-      <para>
-        If there are very many simultaneous connections, swapping
-        problems may occur unless <command>mysqld</command> has been
-        configured to use very little memory for each connection.
-        <command>mysqld</command> performs better if you have enough
-        memory for all connections.
-      </para>
-
-      <para>
-        With little memory and lots of connections, use something like
-        this:
-      </para>
+          <para>
+            If there are very many simultaneous connections, swapping
+            problems may occur unless <command>mysqld</command> has been
+            configured to use very little memory for each connection.
+            <command>mysqld</command> performs better if you have enough
+            memory for all connections.
+          </para>
+        </listitem>
+        
+        <listitem>      
+          <para>
+            With little memory and lots of connections, use something 
+            like this:
+          </para>
 
 <programlisting>
 shell&gt; mysqld_safe --key_buffer_size=512K --sort_buffer_size=100K \
            --read_buffer_size=100K &amp;
 </programlisting>
 
-      <para>
-        Or even this:
-      </para>
+          <para>
+            Or even this:
+          </para>
 
 <programlisting>
 shell&gt; mysqld_safe --key_buffer_size=512K --sort_buffer_size=16K \
            --table_cache=32 --read_buffer_size=8K \
            --net_buffer_length=1K &amp;
 </programlisting>
+        </listitem>
+      
+      </itemizedlist>
 
       <para>
         If you are doing <literal>GROUP BY</literal> or <literal>ORDER
@@ -7447,8 +7509,8 @@
       </para>
 
       <para>
-        To see the effects of a parameter change, do something like this
-        (prior to MySQL 4.1, omit <literal>--verbose</literal>):
+        To see the effects of a parameter change, do something like 
+        this:
       </para>
 
 <programlisting>
@@ -7482,21 +7544,21 @@
       <para>
         The task of the query optimizer is to find an optimal plan for
         executing an SQL query. Because the difference in performance
-        between ``good'' and ``bad'' plans can be orders of magnitude
-        (that is, seconds versus hours or even days), most query
-        optimizers, including that of MySQL, perform more or less
-        exhaustive search for an optimal plan among all possible query
-        evaluation plans. For join queries, the number of possible plans
-        investigated by the MySQL optimizer grows exponentially with the
-        number of tables referenced in a query. For small numbers of
-        tables (typically less than 7-10) this is not a problem.
-        However, when bigger queries are submitted, the time spent in
-        query optimization may easily become the major bottleneck in the
-        server performance.
+        between <quote>good</quote> and <quote>bad</quote> plans can be 
+        orders of magnitude (that is, seconds versus hours or even 
+        days), most query optimizers, including that of MySQL, perform a 
+        more or less exhaustive search for an optimal plan among all 
+        possible query evaluation plans. For join queries, the number of 
+        possible plans investigated by the MySQL optimizer grows 
+        exponentially with the number of tables referenced in a query. 
+        For small numbers of tables (typically less than 7-10) this is 
+        not a problem. However, when bigger queries are submitted, the 
+        time spent in query optimization may easily become the major 
+        bottleneck in the server's performance.
       </para>
 
       <para>
-        MySQL 5.0.1 introduces a new more flexible method for query
+        MySQL 5.0.1 introduces a more flexible method for query
         optimization that allows the user to control how exhaustive the
         optimizer is in its search for an optimal query evaluation plan.
         The general idea is that the fewer plans that are investigated
@@ -7517,12 +7579,12 @@
             The <literal>optimizer_prune_level</literal> variable tells
             the optimizer to skip certain plans based on estimates of
             the number of rows accessed for each table. Our experience
-            shows that this kind of ``educated guess'' rarely misses
-            optimal plans, while it may dramatically reduce query
+            shows that this kind of <quote>educated guess</quote> rarely 
+            misses optimal plans, and may dramatically reduce query
             compilation times. That is why this option is on
             (<literal>optimizer_prune_level</literal>=1) by default.
-            However, if you believe that the optimizer missed better
-            query plans, then this option can be switched off
+            However, if you believe that the optimizer missed a better
+            query plan, then this option can be switched off 
             (<literal>optimizer_prune_level</literal>=0) with the risk
             that query compilation may take much longer. Notice that
             even with the use of this heuristic, the optimizer still
@@ -7533,12 +7595,12 @@
         <listitem>
           <para>
             The <literal>optimizer_search_depth</literal> variable tells
-            how far in the ``future'' of each incomplete plan the
-            optimizer should look in order to evaluate whether it should
-            be expanded further. Smaller values of
+            how far into the <quote>future</quote> of each incomplete 
+            plan the optimizer should look in order to evaluate whether 
+            it should be expanded further. Smaller values of
             <literal>optimizer_search_depth</literal> may result in
             orders of magnitude smaller query compilation times. For
-            example, queries with 12-13 or more tables may easily
+            example, queries with 12, 13, or more tables may easily
             require hours and even days to compile if
             <literal>optimizer_search_depth</literal> is close to the
             number of tables in the query. At the same time, if compiled
@@ -7586,35 +7648,36 @@
       </para>
 
       <para>
-        You get the fastest executables when you link with
+        You obtain the fastest executables when you link with
         <literal>-static</literal>.
       </para>
 
       <para>
-        On Linux, you get the fastest code when compiling with
+        On Linux, it is best to compile the server with
         <literal>pgcc</literal> and <literal>-O3</literal>. You need
         about 200MB memory to compile <filename>sql_yacc.cc</filename>
-        with these options, because <command>gcc/pgcc</command> needs a
-        lot of memory to make all functions inline. You should also set
-        <literal>CXX=gcc</literal> when configuring MySQL to avoid
-        inclusion of the <literal>libstdc++</literal> library, which is
-        not needed. Note that with some versions of
-        <literal>pgcc</literal>, the resulting code runs only on true
-        Pentium processors, even if you use the compiler option
-        indicating that you want the resulting code to work on all
-        x586-type processors (such as AMD).
+        with these options, because <command>gcc</command> or 
+        <command>pgcc</command> needs a great deal of memory to make all 
+        functions inline. You should also set <literal>CXX=gcc</literal> 
+        when configuring MySQL to avoid inclusion of the 
+        <literal>libstdc++</literal> library, which is not needed. Note 
+        that with some versions of <literal>pgcc</literal>, the 
+        resulting binary runs only on true Pentium processors, even if 
+        you use the compiler option indicating that you want the 
+        resulting code to work on all x586-type processors (such as 
+        AMD).
       </para>
 
       <para>
-        By just using a better compiler and better compiler options, you
-        can get a 10-30% speed increase in your application. This is
+        By using a better compiler and compilation options, you can 
+        obtain a 10-30% speed increase in applications. This is
         particularly important if you compile the MySQL server yourself.
       </para>
 
       <para>
-        We have tested both the Cygnus CodeFusion and Fujitsu compilers,
-        but when we tested them, neither was sufficiently bug-free to
-        allow MySQL to be compiled with optimizations enabled.
+        When we tested both the Cygnus CodeFusion and Fujitsu compilers,
+        neither was sufficiently bug-free to allow MySQL to be compiled 
+        with optimizations enabled.
       </para>
 
       <para>
@@ -7625,6 +7688,11 @@
         <literal>--with-charset</literal> option to
         <command>configure</command>.
       </para>
+      
+<!--  
+      TODO: How current is this info? Are we still providing binaries 
+            for Solaris 2.5? [js]
+-->
 
       <para>
         Here is a list of some measurements that we have made:
@@ -7672,7 +7740,7 @@
           <para>
             For TCP/IP connections from a client to a server, connecting
             to a remote server on another host is 8-11% slower than
-            connecting to the local server on the same host, even for
+            connecting to a server on the same host, even for
             connections over 100Mb/s Ethernet.
           </para>
         </listitem>
@@ -7681,7 +7749,7 @@
           <para>
             When running our benchmark tests using secure connections
             (all data encrypted with internal SSL support) performance
-            was 55% slower than for unencrypted connections.
+            was 55% slower than with unencrypted connections.
           </para>
         </listitem>
 
@@ -7689,13 +7757,13 @@
           <para>
             If you compile with <literal>--with-debug=full</literal>,
             most queries are 20% slower. Some queries may take
-            substantially longer; for example, the MySQL benchmarks ran
+            substantially longer; for example, the MySQL benchmarks run
             35% slower. If you use <literal>--with-debug</literal>
-            (without <literal>=full</literal>), the slowdown is only
-            15%. For a version of <command>mysqld</command> that has
-            been compiled with <literal>--with-debug=full</literal>, you
-            can disable memory checking at runtime by starting it with
-            the <literal>--skip-safemalloc</literal> option. The
+            (without <literal>=full</literal>), the speed decrease is 
+            only 15%. For a version of <command>mysqld</command> that 
+            has been compiled with <literal>--with-debug=full</literal>, 
+            you can disable memory checking at runtime by starting it 
+            with the <literal>--skip-safemalloc</literal> option. The
             execution speed should then be close to that obtained when
             configuring with <literal>--with-debug</literal>.
           </para>
@@ -7718,8 +7786,8 @@
         <listitem>
           <para>
             Compiling with <command>gcc</command> 2.95.2 for UltraSPARC
-            with the <literal>-mcpu=v8 -Wa,-xarch=v8plusa</literal>
-            options gives 4% more performance.
+            with the options <literal>-mcpu=v8 
+            -Wa,-xarch=v8plusa</literal> gives 4% better performance.
           </para>
         </listitem>
 
@@ -7741,15 +7809,17 @@
         </listitem>
 
       </itemizedlist>
+      
+<!--  TODO: Is this still true? [js]  -->
 
       <para>
         Binary MySQL distributions for Linux that are provided by MySQL
         AB used to be compiled with <literal>pgcc</literal>. We had to
         go back to regular <command>gcc</command> due to a bug in
-        <literal>pgcc</literal> that would generate code that does not
-        run on AMD. We will continue using <command>gcc</command> until
-        that bug is resolved. In the meantime, if you have a non-AMD
-        machine, you can get a faster binary by compiling with
+        <literal>pgcc</literal> that would generate binaries that do not 
+        run on AMD. We will continue using <command>gcc</command> until 
+        that bug is resolved. In the meantime, if you have a non-AMD 
+        machine, you can build a faster binary by compiling with
         <literal>pgcc</literal>. The standard MySQL Linux binary is
         linked statically to make it faster and more portable.
       </para>
@@ -7827,68 +7897,58 @@
         </listitem>
 
         <listitem>
-          <para>
-            Only compressed <literal>ISAM</literal> and
-            <literal>MyISAM</literal> tables are memory mapped. This is
-            because the 32-bit memory space of 4GB is not large enough
-            for most big tables. When systems with a 64-bit address
-            space become more common, we may add general support for
-            memory mapping.
+          
+<!--  TODO: Where are we at with this?  [js]  -->
+          
+          <para>
+            Only compressed <literal>MyISAM</literal> tables are memory 
+            mapped. This is because the 32-bit memory space of 4GB is 
+            not large enough for most big tables. When systems with a 
+            64-bit address space become more common, we may add general 
+            support for memory mapping.
           </para>
         </listitem>
 
         <listitem>
           <para>
             Each request that performs a sequential scan of a table
-            allocates a read buffer (variable
+            allocates a <firstterm>read buffer</firstterm> (variable
             <literal>read_buffer_size</literal>).
           </para>
         </listitem>
 
         <listitem>
           <para>
-            When reading rows in ``random'' order (for example, after a
-            sort), a random-read buffer may be allocated to avoid disk
-            seeks. (variable <literal>read_rnd_buffer_size</literal>).
+            When reading rows in an arbitrary sequence (for example, 
+            following a sort), a <firstterm>random-read 
+            buffer</firstterm> (variable 
+            <literal>read_rnd_buffer_size</literal>) may be allocated in 
+            order to avoid disk seeks.
           </para>
         </listitem>
 
         <listitem>
           <para>
-            All joins are done in one pass, and most joins can be done
-            without even using a temporary table. Most temporary tables
-            are memory-based (<literal>HEAP</literal>) tables. Temporary
-            tables with a large record length (calculated as the sum of
-            all column lengths) or that contain <literal>BLOB</literal>
-            columns are stored on disk.
+            All joins are executed in a single pass, and most joins can 
+            be done without even using a temporary table. Most temporary 
+            tables are memory-based (<literal>HEAP</literal>) tables. 
+            Temporary tables with a large record length (calculated as 
+            the sum of all column lengths) or that contain 
+            <literal>BLOB</literal> columns are stored on disk.
           </para>
 
           <para>
-            One problem before MySQL 3.23.2 is that if an internal
-            in-memory heap table exceeds the size of
-            <literal>tmp_table_size</literal>, the error <literal>The
-            table <replaceable>tbl_name</replaceable> is full</literal>
-            occurs. From 3.23.2 on, this is handled automatically by
-            changing the in-memory heap table to a disk-based
-            <literal>MyISAM</literal> table as necessary. To work around
-            this problem for older servers, you can increase the
-            temporary table size by setting the
+            If an internal heap table exceeds the size of
+            <literal>tmp_table_size</literal>, MySQL 5.0 handles this 
+            automatically by changing the in-memory heap table to a 
+            disk-based <literal>MyISAM</literal> table as necessary. You 
+            can also increase the temporary table size by setting the
             <literal>tmp_table_size</literal> option to
             <command>mysqld</command>, or by setting the SQL option
             <literal>SQL_BIG_TABLES</literal> in the client program. See
             <xref linkend="set-option"/>.
           </para>
-
-          <para>
-            In MySQL 3.20, the maximum size of the temporary table is
-            <literal>record_buffer*16</literal>; if you are using this
-            version, you have to increase the value of
-            <literal>record_buffer</literal>. You can also start
-            <command>mysqld</command> with the
-            <literal>--big-tables</literal> option to always store
-            temporary tables on disk. However, this affects the speed of
-            many complicated queries.
-          </para>
+          
         </listitem>
 
         <listitem>
@@ -7912,20 +7972,18 @@
 
         <listitem>
           <para>
-            For each <literal>MyISAM</literal> and
-            <literal>ISAM</literal> table that is opened, the index file
-            is opened once and the data file is opened once for each
-            concurrently running thread. For each concurrent thread, a
-            table structure, column structures for each column, and a
-            buffer of size <literal>3 *
+            For each <literal>MyISAM</literal> table that is opened, the 
+            index file is opened once; the data file is opened once 
+            for each concurrently running thread. For each concurrent 
+            thread, a table structure, column structures for each 
+            column, and a buffer of size <literal>3 *
             <replaceable>N</replaceable></literal> are allocated (where
             <replaceable>N</replaceable> is the maximum row length, not
             counting <literal>BLOB</literal> columns). A
             <literal>BLOB</literal> column requires five to eight bytes
             plus the length of the <literal>BLOB</literal> data. The
-            <literal>MyISAM</literal> and <literal>ISAM</literal>
-            storage engines maintain one extra row buffer for internal
-            use.
+            <literal>MyISAM</literal> storage engine maintains one extra 
+            row buffer for internal use.
           </para>
         </listitem>
 
@@ -7970,9 +8028,9 @@
         For example, the Solaris version of <command>ps</command> counts
         the unused memory between stacks as used memory. You can verify
         this by checking available swap with <literal>swap -s</literal>.
-        We have tested <command>mysqld</command> with several
-        memory-leakage detectors (both commercial and open source), so
-        there should be no memory leaks.
+        We test <command>mysqld</command> with several memory-leakage 
+        detectors (both commercial and open source), so there should be 
+        no memory leaks.
       </para>
 
     </section>
@@ -8071,7 +8129,7 @@
 
       <listitem>
         <para>
-          Disk seeks are a big performance bottleneck. This problem
+          Disk seeks are a major performance bottleneck. This problem
           becomes more apparent when the amount of data starts to grow
           so large that effective caching becomes impossible. For large
           databases where you access data more or less randomly, you can
@@ -8179,7 +8237,7 @@
 
         <para>
           Note that performance and reliability when using this command
-          depends on your hardware, so we strongly suggest that you test
+          depend on your hardware, so we strongly suggest that you test
           your system thoroughly after using <literal>hdparm</literal>.
           Please consult the <literal>hdparm</literal> manual page for
           more information. If <literal>hdparm</literal> is not used
@@ -8235,8 +8293,8 @@
       </para>
 
       <para>
-        The recommended way to do this is to just symlink databases to a
-        different disk. Symlink tables only as a last resort.
+        The recommended way to do this is simply to symlink databases to 
+        a different disk. Symlink tables only as a last resort.
       </para>
 
       <section id="symbolic-links-to-databases">
@@ -8249,8 +8307,8 @@
         </indexterm>
 
         <para>
-          On Unix, the way to symlink a database is to first create a
-          directory on some disk where you have free space and then
+          On Unix, the way to symlink a database is first to create a
+          directory on some disk where you have free space and then to
           create a symlink to it from the MySQL data directory.
         </para>
 
@@ -8260,9 +8318,9 @@
 </programlisting>
 
         <para>
-          MySQL doesn't support linking one directory to multiple
+          MySQL does not support linking one directory to multiple
           databases. Replacing a database directory with a symbolic link
-          works fine as long as you don't make a symbolic link between
+          works as long as you do not make a symbolic link between 
           databases. Suppose that you have a database
           <literal>db1</literal> under the MySQL data directory, and
           then make a symlink <literal>db2</literal> that points to
@@ -8279,14 +8337,15 @@
           <literal>db1</literal>, there also appears to be a table
           <literal>tbl_a</literal> in <literal>db2</literal>. If one
           client updates <literal>db1.tbl_a</literal> and another client
-          updates <literal>db2.tbl_a</literal>, there are problems.
+          updates <literal>db2.tbl_a</literal>, problems are likely to 
+          result.
         </para>
 
         <para>
-          If you really need to do this, you can change one of the
-          source files. The file to modify depends on your version of
-          MySQL. For MySQL 4.0 and up, look for the following statement
-          in the <filename>mysys/my_symlink.c</filename> file:
+          However, if you really need to do this, it is possible by 
+          altering the source file 
+          <filename>mysys/my_symlink.c</filename>, in which you should 
+          look for the following statement:
         </para>
 
 <programlisting>
@@ -8295,15 +8354,6 @@
 </programlisting>
 
         <para>
-          Before MySQL 4.0, look for this statement in the
-          <filename>mysys/mf_format.c</filename> file:
-        </para>
-
-<programlisting>
-if (flag &amp; 32 || (!lstat(to,&amp;stat_buff) &amp;&amp; S_ISLNK(stat_buff.st_mode)))
-</programlisting>
-
-        <para>
           Change the statement to this:
         </para>
 
@@ -8312,13 +8362,8 @@
 </programlisting>
 
         <para>
-          On Windows, you can use internal symbolic links to directories
-          by compiling MySQL with <literal>-DUSE_SYMDIR</literal>. This
-          allows you to put different databases on different disks. See
-          <xref linkend="windows-symbolic-links"/>. (It is necessary to
-          define <literal>USE_SYMDIR</literal> explicitly only before
-          MySQL 4.0. As of MySQL 4.0, symbolic link support is enabled
-          by default for all Windows servers.)
+          Note that, in MySQL 5.0, symbolic link support is enabled
+          by default for all Windows servers.
         </para>
 
       </section>
@@ -8333,28 +8378,18 @@
         </indexterm>
 
         <para>
-          Before MySQL 4.0, you should not symlink tables unless you are
-          <emphasis>very</emphasis> careful with them. The problem is
-          that if you run <literal>ALTER TABLE</literal>,
-          <literal>REPAIR TABLE</literal>, or <literal>OPTIMIZE
-          TABLE</literal> on a symlinked table, the symlinks are removed
-          and replaced by the original files. This happens because these
-          statements work by creating a temporary file in the database
-          directory and replacing the original file with the temporary
-          file when the statement operation is complete.
-        </para>
-
-        <para>
-          You should not symlink tables on systems that don't have a
-          fully working <literal>realpath()</literal> call. (At least
-          Linux and Solaris support <literal>realpath()</literal>). You
+          You should not symlink tables on systems that do not have a
+          fully operational <literal>realpath()</literal> call. (Linux 
+          and Solaris support <literal>realpath()</literal>). You
           can check whether your system supports symbolic links by
           issuing a <literal>SHOW VARIABLES LIKE
           'have_symlink'</literal> statement.
         </para>
+        
+<!--  TODO: Following paras still true for 5.0?  [js]  -->
 
         <para>
-          In MySQL 4.0, symlinks are fully supported only for
+          In MySQL 5.0, symlinks are fully supported only for
           <literal>MyISAM</literal> tables. For other table types, you
           may get strange problems if you try to use symbolic links on
           files in the operating system with any of the preceding
@@ -8363,7 +8398,7 @@
 
         <para>
           The handling of symbolic links for <literal>MyISAM</literal>
-          tables in MySQL 4.0 works the following way:
+          tables in MySQL 5.0 works the following way:
         </para>
 
         <itemizedlist>
@@ -8387,12 +8422,13 @@
 
           <listitem>
             <para>
-              The symlinking can be done manually from the command line
-              with <literal>ln -s</literal> if <command>mysqld</command>
-              is not running. With SQL, you can instruct the server to
-              perform the symlinking by using the <literal>DATA
-              DIRECTORY</literal> and <literal>INDEX DIRECTORY</literal>
-              options to <literal>CREATE TABLE</literal>. See
+              Symlinking can be accomplished manually from the command 
+              line using <literal>ln -s</literal> if 
+              <command>mysqld</command> is not running. Aternativly, you 
+              can instruct a running MySQL server to perform the 
+              symlinking by using the <literal>DATA DIRECTORY</literal> 
+              and <literal>INDEX DIRECTORY</literal> options to 
+              <literal>CREATE TABLE</literal>. See
               <xref linkend="create-table"/>.
             </para>
           </listitem>
@@ -8401,20 +8437,22 @@
             <para>
               <command>myisamchk</command> does not replace a symlink
               with the data file or index file. It works directly on the
-              file a symlink points to. Any temporary files are created
-              in the directory where the data file or index file is
-              located.
+              file to which the symlink points. Any temporary files are 
+              created in the directory where the data file or index file 
+              is located.
             </para>
           </listitem>
 
           <listitem>
             <para>
-              When you drop a table that is using symlinks, both the
-              symlink and the file the symlink points to are dropped.
-              This is a good reason why you should
-              <emphasis>not</emphasis> run <command>mysqld</command> as
-              <literal>root</literal> or allow users to have write
-              access to the MySQL database directories.
+              <emphasis role="bold">Note</emphasis>: When you drop a 
+              table that is using symlinks, <emphasis>both the symlink 
+              and the file to which the symlink points are 
+              dropped</emphasis>. This is an extremely good reason why 
+              you should <emphasis>not</emphasis> run 
+              <command>mysqld</command> as the system 
+              <literal>root</literal> or allow system users to have 
+              write access to MySQL database directories.
             </para>
           </listitem>
 
@@ -8423,7 +8461,7 @@
 
             <para>
               If you rename a table with <literal>ALTER TABLE ...
-              RENAME</literal> and you don't move the table to another
+              RENAME</literal> and you do not move the table to another
               database, the symlinks in the database directory are
               renamed to the new names and the data file and index file
               are renamed accordingly.
@@ -8453,14 +8491,8 @@
           </listitem>
 
         </itemizedlist>
-
-        <para>
-          <literal>SHOW CREATE TABLE</literal> doesn't report if a table
-          has symbolic links prior to MySQL 4.0.15. This is also true
-          for <command>mysqldump</command>, which uses <literal>SHOW
-          CREATE TABLE</literal> to generate <literal>CREATE
-          TABLE</literal> statements.
-        </para>
+        
+<!--  TODO: All items in this list still true for 5.0? [js]  -->
 
         <para>
           Table symlink operations that are not yet supported:
@@ -8510,7 +8542,7 @@
 </programlisting>
 
             <para>
-              There are problems if one thread reads
+              Problems result if one thread reads
               <literal>db1.tbl1</literal> and another thread updates
               <literal>db1.tbl2</literal>:
             </para>
@@ -8519,9 +8551,9 @@
 
               <listitem>
                 <para>
-                  The query cache is fooled (it believes
-                  <literal>tbl1</literal> has not been updated so it
-                  returns outdated results).
+                  The query cache is <quote>fooled</quote> (it has no 
+                  way of knowing that <literal>tbl1</literal> has not 
+                  been updated, so it returns outdated results).
                 </para>
               </listitem>
 
@@ -8557,10 +8589,9 @@
         </indexterm>
 
         <para>
-          Beginning with MySQL 3.23.16, the
-          <command>mysqld-max</command> and
+          The <command>mysqld-max</command> and
           <literal>mysql-max-nt</literal> servers for Windows are
-          compiled with the <literal>-DUSE_SYMDIR</literal> option. This
+          compiled with the <option>-DUSE_SYMDIR</option> option. This
           allows you to put a database directory on a different disk by
           setting up a symbolic link to it. This is similar to the way
           that symbolic links work on Unix, although the procedure for
@@ -8568,9 +8599,9 @@
         </para>
 
         <para>
-          As of MySQL 4.0, symbolic links are enabled by default. If you
-          don't need them, you can disable them with the
-          <literal>skip-symbolic-links</literal> option:
+          In MySQL 5.0, symbolic links are enabled by default. If you
+          do not need them, you can disable them with the
+          <option>skip-symbolic-links</option> option:
         </para>
 
 <programlisting>
@@ -8579,19 +8610,7 @@
 </programlisting>
 
         <para>
-          Before MySQL 4.0, symbolic links are disabled by default. To
-          enable them, you should put the following entry in your
-          <filename>my.cnf</filename> or <filename>my.ini</filename>
-          file:
-        </para>
-
-<programlisting>
-[mysqld]
-symbolic-links
-</programlisting>
-
-        <para>
-          On Windows, you make a symbolic link to a MySQL database by
+          On Windows, you create a symbolic link to a MySQL database by
           creating a file in the data directory that contains the path
           to the destination directory. The file should be named
           <filename>db_name.sym</filename>, where
@@ -8602,7 +8621,8 @@
           Suppose that the MySQL data directory is
           <filename>C:\mysql\data</filename> and you want to have
           database <literal>foo</literal> located at
-          <filename>D:\data\foo</filename>. Set up a symlink like this:
+          <filename>D:\data\foo</filename>. Set up a symlink as shown 
+          here:
         </para>
 
         <orderedlist>
@@ -8621,20 +8641,20 @@
 
           <listitem>
             <para>
-              Create a file <filename>C:\mysql\data\foo.sym</filename>
-              that contains the pathname
-              <literal>D:\data\foo\</literal>.
+              Create a text file 
+              <filename>C:\mysql\data\foo.sym</filename> that contains 
+              the pathname <literal>D:\data\foo\</literal>.
             </para>
           </listitem>
 
         </orderedlist>
 
         <para>
-          After that, all tables created in the database
+          After this, all tables created in the database
           <literal>foo</literal> are created in
           <filename>D:\data\foo</filename>. Note that the symbolic link
-          is not used if a directory with the database name exists in
-          the MySQL data directory.
+          is not used if a directory with the same name as the database 
+          exists in the MySQL data directory.
         </para>
 
       </section>

--- 1.21/refman-5.0/ndbcluster.xml	2005-07-23 23:39:44 +10:00
+++ 1.22/refman-5.0/ndbcluster.xml	2005-07-29 12:37:56 +10:00
@@ -291,29 +291,25 @@
 
     </itemizedlist>
 
-<!--  @node MySQL Cluster HA -->
-
-<!--  @section High Availability Features in MySQL Cluster -->
-
-<!--  @node MySQL Cluster NF -->
-
-<!--  @subsection Node Failure Handling -->
-
-<!--  @node MySQL Cluster NR -->
-
-<!--  @subsection Node Restart Handling -->
-
-<!--  @node MySQL Cluster Logging -->
-
-<!--  @subsection System Crash Recovery Model -->
-
-<!--  @node MySQL Cluster SR -->
-
-<!--  @subsection Handling a System Restart -->
-
-<!--  @node MySQL Cluster NP -->
-
-<!--  @subsection How MySQL Cluster Avoids Network Partitioning -->
+<!--  
+      @node MySQL Cluster HA       
+      @section High Availability Features in MySQL Cluster
+      
+      @node MySQL Cluster NF      
+      @subsection Node Failure Handling
+      
+      @node MySQL Cluster NR
+      @subsection Node Restart Handling
+      
+      @node MySQL Cluster Logging
+      @subsection System Crash Recovery Model
+      
+      @node MySQL Cluster SR
+      @subsection Handling a System Restart
+      
+      @node MySQL Cluster NP
+      @subsection How MySQL Cluster Avoids Network Partitioning
+-->
 
 <!--   
        Multi-Computer How-To, Version 1.0, 2005-02-08 
@@ -330,9 +326,9 @@
     <title id='title-multi-computer'>&title-multi-computer;</title>
 
     <para>
-      This section is a "How-To" in which we describe the basics for how
-      to plan, install, configure, and run a viable MySQL Cluster.
-      Unlike the example in
+      This section is a <quote>How-To</quote> in which we describe the 
+      basics for how to plan, install, configure, and run a MySQL 
+      Cluster. Unlike the example in
       <xref linkend="mysql-cluster-configuration"/>, the result of
       following the guidelines and procedures outlined below should be a
       usable MySQL Cluster which meets minimum requirements for
@@ -369,8 +365,8 @@
             <colspec colwidth="30*"/>
             <tbody>
               <row>
-                <entry><emphasis role="bold"> Node </emphasis></entry>
-                <entry><emphasis role="bold"> IP Address </emphasis></entry>
+                <entry><emphasis role="bold">Node</emphasis></entry>
+                <entry><emphasis role="bold">IP Address</emphasis></entry>
               </row>
               <row>
                 <entry>Management (MGM) node</entry>
@@ -415,14 +411,14 @@
 
       <listitem>
         <para>
-          Each host is an Intel-based desktop PC running a common,
-          generic Linux distribution installed to disk in a standard
-          configuration, and with no unnecessary services. The core OS
-          with a standard TCP/IP networking client should be sufficient.
-          Also for the sake of simplicity, we also assume that the
-          filesystems on all hosts are set up identically. In the event
-          that they are not, you will need to adapt the instructions
-          that follow accordingly.
+          Each host in our scenario is an Intel-based desktop PC running 
+          a common, generic Linux distribution installed to disk in a 
+          standard configuration, and running no unnecessary services. 
+          The core OS with a standard TCP/IP networking client should be 
+          sufficient. Also for the sake of simplicity, we also assume 
+          that the filesystems on all hosts are set up identically. In 
+          the event that they are not, you will need to adapt these 
+          instructions accordingly.
         </para>
       </listitem>
 
@@ -436,15 +432,15 @@
           machines in the cluster should have 100 Mbps cards
           <emphasis>or</emphasis> all 4 machines should have 1 Gbps
           cards.) MySQL Cluster will work in a 100 Mbps network;
-          however, using gigabit Ethernet will provide better
-          performance.
+          however, gigabit Ethernet will provide better performance.
         </para>
 
         <para>
-          Note that MySQL Cluster is not intended for use in a network
-          whose connectivity is less than 100 Mbps. For this reason
-          (among others), attempting to run a MySQL Cluster over a
-          public network such as the Internet is not likely to be
+          Note that MySQL Cluster is 
+          <emphasis role="bold">not</emphasis> intended for use in a 
+          network whose connectivity is less than 100 Mbps. For this 
+          reason (among others), attempting to run a MySQL Cluster over 
+          a public network such as the Internet is not likely to be
           successful, and is not recommended.
         </para>
       </listitem>
@@ -503,13 +499,13 @@
         OS X or Solaris, the standard installation is sufficient. For
         Linux, a standard, "out of the box" installation should be all
         that is necessary. The MySQL software requirements are simple:
-        all that is needed is a production release of MySQL-max 4.1.3 or
-        newer; you must use the <literal>-max</literal> version of MySQL
-        in order to have Cluster support. It is not necessary to compile
+        all that is needed is a production release of MySQL-max 5.0; you 
+        must use the <literal>-max</literal> version of MySQL 5.0 in 
+        order to have Cluster support. It is not necessary to compile
         MySQL yourself merely to be able to use Cluster. In this How-To,
         we will assume that you are using the <literal>-max</literal>
-        binary appropriate to your operating system, available via the
-        MySQL software downloads page at
+        binary appropriate to your Linux. Solaris, or Mac OS X operating 
+        system, available via the MySQL software downloads page at
         <ulink url="http://dev.mysql.com/downloads"/>.
       </para>
 
@@ -542,16 +538,16 @@
         <listitem>
           <para>
             <emphasis role="bold">Efficiency</emphasis>: Setting up a
-            Cluster on a private or protected network allows for the
-            cluster to make exclusive use of bandwidth between cluster
-            hosts. Using a separate switch for your MySQL Cluster not
-            only helps protect against unauthorised access to Cluster
-            data, it also ensures that Cluster nodes are shielded from
-            interference caused by transmissions between other computers
-            on the network. For enhanced reliability, you can use dual
-            switches and dual cards to remove the network as a single
-            point of failure; many device drivers support failover for
-            such communication links.
+            MySQL Cluster on a private or protected network allows for 
+            the cluster to make exclusive use of bandwidth between 
+            cluster hosts. Using a separate switch for your MySQL 
+            Cluster not only helps protect against unauthorised access 
+            to Cluster data, it also ensures that Cluster nodes are 
+            shielded from interference caused by transmissions between 
+            other computers on the network. For enhanced reliability, 
+            you can use dual switches and dual cards to remove the 
+            network as a single point of failure; many device drivers 
+            support failover for such communication links.
           </para>
         </listitem>
 
@@ -590,7 +586,7 @@
         download the most recent version for your platform from the 
         <ulink url="http://dev.mysql.com/downloads">MySQL downloads 
         area</ulink>. We assume that you have placed it in each 
-      machine's <filename>/var/tmp</filename> directory.
+        machine's <filename>/var/tmp</filename> directory.
       </para>
 
       <para>
@@ -974,7 +970,7 @@
             On the management host, issue the following command from the
             system shell to start the MGM node process:
           </para>
-<!--  TODO: List switches for clients.  -->
+<!--  TODO: List switches for clients or pointer to same.  -->
 <programlisting>
   shell&gt; ndb_mgmd -f /var/lib/mysql-cluster/config.ini
 </programlisting>
@@ -1041,14 +1037,14 @@
 Cluster Configuration
 ---------------------
 [ndbd(NDB)]     2 node(s)
-id=2    @192.168.0.30  (Version: 4.1.11, Nodegroup: 0, Master)
-id=3    @192.168.0.40  (Version: 4.1.11, Nodegroup: 0)
+id=2    @192.168.0.30  (Version: 5.0.11, Nodegroup: 0, Master)
+id=3    @192.168.0.40  (Version: 5.0.11, Nodegroup: 0)
 
 [ndb_mgmd(MGM)] 1 node(s)
-id=1    @192.168.0.10  (Version: 4.1.11)
+id=1    @192.168.0.10  (Version: 5.0.11)
 
 [mysqld(SQL)]   1 node(s)
-id=4   (Version: 4.1.11)
+id=4   (Version: 5.0.11)
 </programlisting>
 
       <para>
@@ -1143,23 +1139,24 @@
           </para>
 
 <programlisting>
-  DROP TABLE IF EXISTS City;
-  CREATE TABLE City (
-  ID int(11) NOT NULL auto_increment,
-  Name char(35) NOT NULL default '',
-  CountryCode char(3) NOT NULL default '',
-  District char(20) NOT NULL default '',
-  Population int(11) NOT NULL default '0',
-  PRIMARY KEY  (ID)
-  ) ENGINE=NDBCLUSTER;
+DROP TABLE IF EXISTS City;
+CREATE TABLE City (
+ID int(11) NOT NULL auto_increment,
+Name char(35) NOT NULL default '',
+CountryCode char(3) NOT NULL default '',
+District char(20) NOT NULL default '',
+Population int(11) NOT NULL default '0',
+PRIMARY KEY  (ID)
+) ENGINE=NDBCLUSTER;
 
-  INSERT INTO City VALUES (1,'Kabul','AFG','Kabol',1780000);
-  INSERT INTO City VALUES (2,'Qandahar','AFG','Qandahar',237500);
-  INSERT INTO City VALUES (3,'Herat','AFG','Herat',186800);
-  # (etc.)
+INSERT INTO City VALUES (1,'Kabul','AFG','Kabol',1780000);
+INSERT INTO City VALUES (2,'Qandahar','AFG','Qandahar',237500);
+INSERT INTO City VALUES (3,'Herat','AFG','Herat',186800);
+# (etc.)
 </programlisting>
 <!--  
-      TODO: Should we be using <literal/> or <option/> for such cases?  
+      TODO: Should we be using <literal/> or <option/> for such cases 
+      (ENGINE=...)?  [js]
 -->
           <para>
             This will need to be done for the definition of each table
@@ -1182,7 +1179,7 @@
           </para>
 
 <programlisting>
-  shell&gt; mysql world &lt; city_table.sql
+shell&gt; mysql world &lt; city_table.sql
 </programlisting>
 
           <para>
@@ -1199,8 +1196,8 @@
           </para>
 
 <programlisting>
-  shell&gt; cd /usr/local/mysql/data
-  shell&gt; mysql world &lt; world.sql
+shell&gt; cd /usr/local/mysql/data
+shell&gt; mysql world &lt; world.sql
 </programlisting>
 
           <para>
@@ -1212,7 +1209,7 @@
           <para>
             It is important to note that NDB Cluster in MySQL 5.0 does 
             not support autodiscovery of databases. (See 
-            <xref linkend="mysql-cluster-limitations-in-4-1"/>.) This
+            <xref linkend="mysql-cluster-limitations"/>.) This
             means that, once the <literal>world</literal> database and 
             its tables have been created on one data node, you will need 
             to issue the command <command>CREATE DATABASE 
@@ -1231,14 +1228,14 @@
           </para>
 
 <programlisting>
-  shell&gt; mysql -u root -p
-  Enter password:
-  Welcome to the MySQL monitor.  Commands end with ; or \g.
-  Your MySQL connection id is 1 to server version: 4.1.9-max
+shell&gt; mysql -u root -p
+Enter password:
+Welcome to the MySQL monitor.  Commands end with ; or \g.
+Your MySQL connection id is 1 to server version: 4.1.9-max
 
-  Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
+Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 
-  mysql&gt;
+mysql&gt;
 </programlisting>
 
           <para>
@@ -1248,10 +1245,10 @@
           </para>
 
 <programlisting>
-  mysql&gt; USE world;
-  mysql&gt; ALTER TABLE City ENGINE=NDBCLUSTER;
-  mysql&gt; ALTER TABLE Country ENGINE=NDBCLUSTER;
-  mysql&gt; ALTER TABLE CountryLanguage ENGINE=NDBCLUSTER;
+mysql&gt; USE world;
+mysql&gt; ALTER TABLE City ENGINE=NDBCLUSTER;
+mysql&gt; ALTER TABLE Country ENGINE=NDBCLUSTER;
+mysql&gt; ALTER TABLE CountryLanguage ENGINE=NDBCLUSTER;
 </programlisting>
 
           <para>
@@ -1283,23 +1280,23 @@
           </para>
 
 <programlisting>
-  mysql&gt; USE world;
-  mysql&gt; SELECT Name, Population FROM City ORDER BY Population DESC LIMIT 5;
-  +-----------+------------+
-  | Name      | Population |
-  +-----------+------------+
-  | Bombay    |   10500000 |
-  | Seoul     |    9981619 |
-  | São Paulo |    9968485 |
-  | Shanghai  |    9696300 |
-  | Jakarta   |    9604900 |
-  +-----------+------------+
-  5 rows in set (0.34 sec)
+mysql&gt; USE world;
+mysql&gt; SELECT Name, Population FROM City ORDER BY Population DESC LIMIT 5;
++-----------+------------+
+| Name      | Population |
++-----------+------------+
+| Bombay    |   10500000 |
+| Seoul     |    9981619 |
+| São Paulo |    9968485 |
+| Shanghai  |    9696300 |
+| Jakarta   |    9604900 |
++-----------+------------+
+5 rows in set (0.34 sec)
 
-  mysql&gt; \q
-  Bye
+mysql&gt; \q
+Bye
 
-  shell&gt;
+shell&gt;
 </programlisting>
 
           <para>
@@ -1414,7 +1411,7 @@
 </programlisting>
 
 <!--  TODO: Document any other commands that can be passed to ndb_mgm in
-      this fashion. /JS 2005-07-19
+      this fashion (or provide pointer). /JS 2005-07-19
 -->
 
       <para>
@@ -1452,7 +1449,7 @@
           </para>
 
 <programlisting>
-  shell&gt; ndbd
+shell&gt; ndbd
 </programlisting>
 
           <para>
@@ -1468,7 +1465,7 @@
           </para>
 
 <programlisting>
-  shell&gt; mysqld &amp;
+shell&gt; mysqld &amp;
 </programlisting>
         </listitem>
 
@@ -1676,7 +1673,7 @@
         backup after adding new data nodes.
       </para>
 
-<!--   TODO: xref here to startup options -->
+<!--   TODO: xref here to startup options.  [js] -->
 
       <para>
         By default, <command>ndbd</command> will look for the management
@@ -1723,7 +1720,7 @@
         If all has gone well so far, you now can start using the
         cluster:
       </para>
-<!--  TODO: Check this against output from an actual 5.0.10 build.  -->
+<!--  TODO: Check this against output from an actual 5.0.x build.  -->
 <programlisting>
 shell&gt; mysql
 Welcome to the MySQL monitor.  Commands end with ; or \g.
@@ -1909,7 +1906,7 @@
 ndb-connectstring=ndb_mgmd.mysql.com:1186
 </programlisting>
 
-<!--  more [mysql_cluster] settings to come later... -->
+<!--  TODO: more [mysql_cluster] settings to come later...  [js]  -->
 
         <para>
           Currently the configuration file is in INI format, and is
@@ -2030,7 +2027,7 @@
               <literal>[SHM]</literal>: Defines shared-memory
               connections between nodes. Formerly, this type of 
               connection was available only in binaries that were
-              built using the <literal>--with-ndb-shm</literal> option.
+              built using the <option>--with-ndb-shm</option> option.
               In MySQL 5.0-Max, it is enabled by default, but should 
               still be considered experimental.
             </para>
@@ -2150,8 +2147,9 @@
                 <listitem>
                   <para>
                     Write the connectstring for each executable into a
-                    text file named <filename>Ndb.cfg</filename> and place
-                    this file in the executable's startup directory.
+                    text file named <filename>Ndb.cfg</filename> and 
+                    place this file in the executable's startup 
+                    directory.
                   </para>
                 </listitem>
 
@@ -2286,7 +2284,7 @@
                   </para>
 
 <programlisting>
-  CONSOLE
+CONSOLE
 </programlisting>
                 </listitem>
 
@@ -2318,7 +2316,7 @@
                   </para>
 
 <programlisting>
-  SYSLOG:facility=syslog
+SYSLOG:facility=syslog
 </programlisting>
                 </listitem>
 
@@ -2360,7 +2358,7 @@
                   </itemizedlist>
 
 <programlisting>
-  FILE:filename=cluster.log,maxsize=1000000,maxfiles=6
+FILE:filename=cluster.log,maxsize=1000000,maxfiles=6
 </programlisting>
 
                   <para>
@@ -2369,7 +2367,7 @@
                   </para>
 
 <programlisting>
-  CONSOLE;SYSLOG:facility=local0;FILE:filename=/var/log/mgmd
+CONSOLE;SYSLOG:facility=local0;FILE:filename=/var/log/mgmd
 </programlisting>
 
                   <para>
@@ -2883,7 +2881,7 @@
               the data in return. They are also used in MySQL Cluster to
               handle uniqueness constraints.
             </para>
-<!--  TODO: Still true in 5.0?  -->
+<!--  TODO: Still true in 5.0?  [js]  -->
             <para>
               Currently the only partitioning algorithm is hashing and
               ordered indexes are local to each node. Thus ordered
@@ -2996,7 +2994,7 @@
 
 <!--  
       TODO: What does the following really mean? If we shouldn't change 
-      this, then why is there an option to do so? 
+      this, then why is there an option to do so? [js]
 -->
 
               <para>
@@ -3022,9 +3020,9 @@
               <para>
                 It is a good idea to adjust the value of this parameter
                 according to the size and number of transactions. When
-                performing transactions of only a few operations each and
-                not involving a great many records, there is no need to
-                set this parameter very high. When performing large
+                performing transactions of only a few operations each 
+                and not involving a great many records, there is no need 
+                to set this parameter very high. When performing large
                 transactions involving many records need to set this
                 parameter higher.
               </para>
@@ -3033,33 +3031,33 @@
                 Records are kept for each transaction updating cluster
                 data, both in the transaction co-ordinator and in the
                 nodes where the actual updates are performed. These
-                records contain state information needed in order to find
-                UNDO records for rollback, lock queues, and other
+                records contain state information needed in order to 
+                find UNDO records for rollback, lock queues, and other
                 purposes.
               </para>
   
               <para>
                 This parameter should be set to the number of records to
-                be updated simultaneously in transactions, divided by the
-                number of cluster data nodes. For example, in a cluster
-                which has 4 data nodes and which is expected to handle
-                1,000,000 concurrent updates using transactions, you
-                should set this value to 1000000 / 4 = 250000.
+                be updated simultaneously in transactions, divided by 
+                the number of cluster data nodes. For example, in a 
+                cluster which has 4 data nodes and which is expected to 
+                handle 1,000,000 concurrent updates using transactions, 
+                you should set this value to 1000000 / 4 = 250000.
               </para>
   
               <para>
-                Read queries which set locks also cause operation records
-                to be created. Some extra space is allocated in the
-                individual nodes to accomodate cases where the
+                Read queries which set locks also cause operation 
+                records to be created. Some extra space is allocated in 
+                the individual nodes to accomodate cases where the
                 distribution is not perfect over the nodes.
               </para>
   
               <para>
-                When queries make use of the unique hash index, there are
-                actually two operation records used per record in the
-                transaction. The first record represents the read in the
-                index table and the second handles the operation on the
-                base table.
+                When queries make use of the unique hash index, there 
+                are actually two operation records used per record in 
+                the transaction. The first record represents the read in 
+                the index table and the second handles the operation on 
+                the base table.
               </para>
   
               <para>
@@ -3075,24 +3073,27 @@
               </para>
   
               <para>
-                A very large transaction performed on a 8-node cluster
+                A very large transaction performed on an 8-node cluster
                 requires as many operation records in the transaction
                 co-ordinator as there are reads, updates, and deletes
                 involved in the transaction. However, the operation
-                records of the are spread over all 8 nodes. Thus, if it is
-                necessary to configure the system for one very large
+                records of the are spread over all 8 nodes. Thus, if it 
+                is necessary to configure the system for one very large
                 transaction, then it is a good idea to configure the two
                 parts separately.
-                <literal>MaxNoOfConcurrentOperations</literal> will always
-                be used to calculate the number of operation records in
-                the transaction co-ordinator portion of the node.
+                <literal>MaxNoOfConcurrentOperations</literal> will 
+                always be used to calculate the number of operation 
+                records in the transaction co-ordinator portion of the 
+                node.
               </para>
-  
+<!--  TODO: Need to fix this para.  [js]  -->
               <para>
                 It is also important to have an idea of the memory
-                requirements for operation records. In MySQL 4.1, these
+                requirements for operation records. Currently this is 
+                approximately 1KB per record.
+                <!--  In MySQL 4.1, these
                 consume about 1KB per record. This figure is expected to
-                be reduced in MySQL 5.x.
+                be reduced in MySQL 5.x.  -->
               </para>
             </listitem>
   
@@ -3206,7 +3207,7 @@
               rarely that the value for this parameter needs to be
               altered from the default.
             </para>
-
+<!--  TODO: Unchanged in 5.0? [js]  -->
             <para>
               Normal read and write operations use a similar buffer,
               whose usage is even more short-lived. The compile-time
@@ -3314,7 +3315,7 @@
               records which needs to be there to handle many concurrent
               scan operations.
             </para>
-
+<!--  TODO: Need to be more specific. [js]  -->
             <para>
               The default value is 64; this value has a strong
               connection to the <literal>ScanBatchSize</literal> defined
@@ -3395,7 +3396,10 @@
               forward.
             </para>
           </listitem>
-            
+<!--  
+      TODO: If this doesn't need to be changed, then why is it even 
+      mentioned?  [js]
+-->
 <!--  
       <listitem>
         <para>
@@ -3654,16 +3658,14 @@
               feature causes the entire cluster to operate in diskless 
               mode. 
 <!--  
-      Commenting out promise until we know for sure when it's to be 
-      implemented.
+      TODO:  Commenting out promise until we know for sure when it's to 
+      be implemented. [js]
 -->
-<!--
-              We plan to add the capability to employ diskless
+              <!--  We plan to add the capability to employ diskless
               mode on a per-table basis in a future (5.0 or 5.1) release
-              of MySQL Cluster.
--->
+              of MySQL Cluster. -->
             </para>
-
+<!--  TODO: Another promise that needs to be examined.  [js]  -->
             <para>
               Currently, when this feature is enabled, backups are
               performed but backup data is not actually stored. In a
@@ -3856,7 +3858,7 @@
             </para>
 
             <para>
-              This parameter is an exception in that it doesn't specify
+              This parameter is an exception in that it does not specify
               a time to wait before starting a new local checkpoint;
               rather, it is used to ensure that local checkpoints are
               not performed in a cluster where relatively few updates
@@ -4025,9 +4027,9 @@
               excessive loads on processors, networks, and disks. To
               control the write speed, this parameter specifies how many
               pages per 100 milliseconds are to be written. In this
-              context, a "page" is defined as 8KB; thus, this parameter
-              is specified in units of 80KB per second. Therefore,
-              setting
+              context, a <quote>page</quote> is defined as 8KB; thus, 
+              this parameter is specified in units of 80KB per second. 
+              Therefore, setting
               <literal>NoOfDiskPagesToDiskAfterRestartTUP</literal> to a
               value of 20 means writing 1.6MB of data pages to disk each
               second during a local checkpoint. This value includes the
@@ -4047,7 +4049,7 @@
               <literal>DataMemory</literal>, and
               <literal>IndexMemory</literal>.
             </para>
-<!--  TODO: Note why this is commented out. -->
+<!--  TODO: Why this is commented out?  [js] -->
 <!--  
             <para>
               The interaction between those parameters and possible 
@@ -4505,7 +4507,10 @@
               The default value is 2MB.
             </para>
           </listitem>
-
+<!--  
+      TODO: Ask devs why there's a need for this param, given that it's
+      merely the sum of two others. [js]
+-->
           <listitem>
             <para>
               <literal>[NDBD]BackupMemory</literal>
@@ -4546,12 +4551,12 @@
         <title id='title-mysql-cluster-api-definition'>&title-mysql-cluster-api-definition;</title>
 
         <para>
-          The <literal>[MYSQLD]</literal> sections in the
+          The <literal>[MYSQLD]</literal> sections of the
           <filename>config.ini</filename> file define the behavior of
           the MySQL servers (SQL nodes) used to access cluster data.
           None of the parameters shown is required. If no computer or
           host name is provided, then any host can use this SQL node.
-        </para>
+        </para> 
 
         <itemizedlist>
 
@@ -4616,7 +4621,10 @@
             <para>
               <literal>[MYSQLD]BatchByteSize</literal>
             </para>
-
+<!--  
+      TODO: Add pointers to discussions of table scans and range scans 
+      in Optimisation chapter.  [js]  
+-->
             <para>
               For queries that are translated into full table scans or
               range scans on indexes, it is important for best
@@ -4730,7 +4738,7 @@
               TCP transporters use a buffer to store all messages before
               performing the send call to the operating system. When
               this buffer reaches 64KB its contents are sent; these is
-              also sent when a round of messages have beenexecuted. To
+              also sent when a round of messages have been executed. To
               handle temporary overload situations it is also possible
               to define a bigger send buffer. The default size of the
               send buffer is 256KB.
@@ -4767,7 +4775,7 @@
               transport mechanism.
             </para>
           </listitem>
-
+<!--  TODO: Cut this parameter? [js]  -->
           <listitem>
             <para>
               <literal>[TCP]PortNumber</literal>
@@ -4886,7 +4894,7 @@
           other parameters have default values that will work out fine
           in most cases.
         </para>
-<!--  TODO: Determine if this still applies in 5.0. -->
+<!--  TODO: Determine if this still applies in 5.0. [js] -->
         <para>
           <emphasis role="bold">Note</emphasis>: SHM support should
           still be considered experimental.
@@ -4975,14 +4983,14 @@
       <section id="mysql-cluster-sci-definition">
 
         <title id='title-mysql-cluster-sci-definition'>&title-mysql-cluster-sci-definition;</title>
-
+<!--  TODO: Is "SISCI" correct in last sentence, or a typo? [js]  -->
         <para>
           Using SCI transporters to connect nodes in a MySQL Cluster is
-          supported only when the MySQL-max binaries are built using
-          <option>--with-ndb-sci=/your/path/to/SCI</option>. The
-          <replaceable>path</replaceable> should point to a directory
-          that contains at a minimum <filename>lib</filename> and
-          <filename>include</filename> directories containing SISCI
+          supported only when the MySQL-Max binaries are built using
+          <option>--with-ndb-sci=<replaceable>/your/path/to/SCI</replaceable></option>. 
+          The <replaceable>path</replaceable> should point to a 
+          directory that contains at a minimum <filename>lib</filename> 
+          and <filename>include</filename> directories containing SISCI
           libraries and header files.
         </para>
 
@@ -5129,7 +5137,7 @@
 <!--  @node MySQL Cluster Complex Configuration,  , MySQL Cluster SHM 
       Definition, MySQL Cluster Config File -->
 
-<!--   Q: What is meant by "parts" here?? -->
+<!--  TODO: What is meant by "parts" here?? [js] -->
 
 <!--  @subsubsection Configuring Recovery Parts in a MySQL Cluster -->
 
@@ -5197,13 +5205,14 @@
         in this row (or if there is no such row displayed in the
         output), you are not running an <literal>NDB</literal>-enabled 
         version of <command>mysqld</command>. If you see 
-        <literal>DISABLED</literal> in this row, then you need to enable
-        it in either one of the two ways shown above.
+        <literal>DISABLED</literal> in this row, then your server is 
+        capable of using the <literal>NDBCLUSTER</literal> engine, but 
+        it must first be enabled in one of the two ways shown above.
       </para>
 
       <para>
         In order to read cluster configuration data, the MySQL server
-        requires 3 pieces of information:
+        requires at a minimum 3 pieces of information:
       </para>
 
       <itemizedlist>
@@ -5230,8 +5239,8 @@
       </itemizedlist>
 
       <para>
-        Node IDs can be dynamically allocated in MySQL 5.0, in which 
-        case there is no need to specify it explicitly.
+        Node IDs can be dynamically allocated in MySQL 5.0, so it is not
+        strictly necessary to specify them explicitly.
       </para>
 
       <para>
@@ -5239,8 +5248,8 @@
         <literal>ndb-connectstring</literal> is used to specify the
         connectstring either on the command line when starting
         <command>mysqld</command> or in <filename>my.cnf</filename>. The
-        connectstring contains the hostname/IP and port where the
-        management server can be found.
+        connectstring contains the hostname or IP address as well as the 
+        port where the management server can be found.
       </para>
 
       <para>
@@ -5291,7 +5300,7 @@
         completely configurable.
       </para>
 
-<!--  TODO: Insert figure here? -->
+<!--  TODO: Insert figure here? [js]  -->
 
       <para>
         In MySQL 5.0, <command>ndbd</command> generates a set of log 
@@ -5317,7 +5326,7 @@
           </para>
 
 <programlisting>
-Date/Time: Saturday 31 January 2004 - 00:20:01
+Date/Time: Saturday 30 July 2004 - 00:20:01
 Type of error: error
 Message: Internal program error (failed ndbrequire)
 Fault ID: 2341
@@ -5337,7 +5346,7 @@
             the error occurred. This information is useful for anaylsis 
             by the MySQL Cluster development team.
           </para>
-
+<!--  TODO: Check and update referenced section as necessary.  [js]  -->
 <!--   
        The information in this file is described in MySQL Cluster 
        Troubleshooting.
@@ -5415,8 +5424,8 @@
 
       <para>
         When <command>ndbd</command> starts, it actually initiates two
-        processes. The first of these is called the "angel process"; its
-        only job is to discover when the execution of the execution
+        processes. The first of these is called the <quote>angel 
+        process</quote>; its only job is to discover when the execution
         process has been completed, and then to restart the
         <command>ndbd</command> process if it is configured to do so.
         Thus, if you attempt to kill <command>ndbd</command> via the
@@ -5425,7 +5434,7 @@
         <command>ndbd</command> process is to use the management client
         and stop the process from there.
       </para>
-
+<!--  TODO: "Watch-dog" or "watchdog"?  [js]  -->
       <para>
         The execution process uses one thread for reading, writing, and
         scanning data, as well as all other activities. This thread is
@@ -5571,12 +5580,12 @@
 
       <para>
         All MySQL Cluster executables (except for
-        <command>mysqld</command>) take the following options. Note that 
-        we have made changes in some of these switches from MySQL 4.1 
-        Cluster in order to make them consistent with one another as 
-        well as with <command>mysqld</command>. You can use the 
-        <option>-?</option> switch to view a listing of supported 
-        options.
+        <command>mysqld</command>) take the following options. Users of 
+        earlier MySQL Cluster versions should note that some of these 
+        switches have changed from MySQL 4.1 Cluster in order to make 
+        them consistent with one another as well as with 
+        <command>mysqld</command>. You can use the <option>-?</option> 
+        switch to view a listing of supported options.
       </para>
 
       <itemizedlist>
@@ -5618,12 +5627,7 @@
 
           <para>
             <replaceable>connect_string</replaceable> Sets the connect
-            string to the management server as a command option. (for
-            reasons of backwards compatability,
-            <command>ndb_mgmd</command> does not accept the -c option
-            before MySQL 5.0, as this switch specifies the configuration
-            file in previous versions). Available with
-            <command>ndb_mgm</command> from MySQL 4.1.8 onwards.
+            string to the management server as a command option.
           </para>
 
           <para>
@@ -5671,8 +5675,9 @@
 NDB&gt; SHOW;
 </programlisting>
 
-            This is analogous to how the same option works with the 
-            <command>mysql</command> command-line client.
+            This is analogous to how the <option>-e</option> option 
+            works with the <command>mysql</command> command-line client. 
+            See <xref linkend="command-line-options"/>.
           </para>
         </listitem>
 
@@ -5695,7 +5700,7 @@
               support for the <literal>NDB</literal> storage engine can 
               be overridden by using this option. Use of the 
               <literal>NDB Cluster</literal> storage engine is necessary 
-              for using MySQL Cluster.
+              for MySQL Cluster.
             </para>
           </listitem>
 
@@ -5707,9 +5712,11 @@
             <para>
               Disables the <literal>NDB Cluster</literal> storage engine. 
               This option is activated by default for binaries where it 
-              is included; the option only applies if the server was 
-              configured to use the <literal>NDB Cluster</literal> 
-              storage engine.
+              is included; in other words, the <literal>NDB 
+              Cluster</literal> storage engine is disabled until 
+              activated via <option>--ndbcluster</option>. This option 
+              applies only if the server was compiled with support for 
+              the <literal>NDB Cluster</literal> storage engine.
             </para>
           </listitem>
 
@@ -5760,7 +5767,8 @@
             <para>
               Instructs <command>ndbd</command> not to start as a daemon
               process. Useful when <command>ndbd</command> is being
-              debugged and one wants output redirected to the screen.
+              debugged and one wants output to be redirected to the 
+              screen.
             </para>
           </listitem>
 
@@ -5768,7 +5776,10 @@
             <para>
               <option>--initial</option>
             </para>
-
+<!--  
+      TODO: "Initial start" sounds clumsy. See if there's a better way
+      to word this. [js]
+-->
             <para>
               Instructs <command>ndbd</command> to perform an initial
               start. An initial start erases any files created for
@@ -5866,9 +5877,10 @@
               Instructs the management server as to which file it should
               use for its configuration file. This option must be
               specified. The file name defaults to
-              <literal>config.ini</literal>. The <literal>-c</literal> 
-              shortcut is obsolete in MySQL 5.0 Cluster and should not 
-              be used in new installations.
+              <literal>config.ini</literal>. 
+              <emphasis role="bold">Note</emphasis>: The 
+              <literal>-c</literal> shortcut is obsolete in MySQL 5.0 
+              Cluster and should not be used in new installations.
             </para>
           </listitem>
 
@@ -6041,7 +6053,7 @@
             <replaceable>&lt;id&gt;</replaceable> (or all data nodes).
           </para>
         </listitem>
-
+<!--  TODO: Need to explain -N and -I switches. [js]  -->
         <listitem>
           <para>
             <literal><replaceable>&lt;id&gt;</replaceable> RESTART [-N]
@@ -6423,7 +6435,7 @@
         </para>
 
 <programlisting>
-09:19:30 2005-04-24 [NDB] INFO -- Node 4 Start phase 4 completed
+09:19:30 2005-07-24 [NDB] INFO -- Node 4 Start phase 4 completed
 </programlisting>
 
         <para>
@@ -6986,8 +6998,9 @@
         </para>
 
         <para>
-          These events relate Cluster errors and warnings and generally
-          indicate that a major malfunction or failure has occurred.
+          These events relate to Cluster errors and warnings; the 
+          presence of one or more of these generally indicates that a 
+          major malfunction or failure has occurred.
         </para>
 
         <informaltable>
@@ -7112,7 +7125,7 @@
 
       <para>
         Example:
-<!--  TODO: Correct prompt here?  -->
+<!--  TODO: Correct prompt here?  [js]  -->
 <programlisting>
 NDB&gt; ENTER SINGLE USER MODE 5
 </programlisting>
@@ -7121,8 +7134,7 @@
       <para>
         After this command has executed and the cluster has entered
         single user mode, the SQL node whose node ID is
-        <literal>5</literal> becomes the cluster's only
-        permitted user.
+        <literal>5</literal> becomes the cluster's only permitted user.
       </para>
 
       <para>
@@ -7132,7 +7144,7 @@
       </para>
 
       <para>
-        <emphasis role="bold">Note</emphasis>: When the above coommand
+        <emphasis role="bold">Note</emphasis>: When the above commmand
         is invoked, all transactions running on the designated node are
         aborted, the connection is closed, and the server must be
         restarted.
@@ -7142,23 +7154,23 @@
         The command <command>EXIT SINGLE USER MODE</command> changes the
         state of the cluster's data nodes from single user mode to
         normal mode. MySQL Servers waiting for a connection (that is,
-        for the cluster to become ready and available), are now allowed
-        to connect. The MySQL Server denoted as the single-user SQL node
-        continues to run (if it is connected), during and after the
-        state change.
+        for the cluster to become ready and available), are now 
+        permitted to connect. The MySQL Server denoted as the 
+        single-user SQL node continues to run (if still connected) 
+        during and after the state change.
       </para>
 
       <para>
         Example:
-<!--  TODO: Correct prompt?  -->
+<!--  TODO: Correct prompt? [js]  -->
 <programlisting>
 NDB&gt; EXIT SINGLE USER MODE
 </programlisting>
       </para>
 
       <para>
-        The recommend way to a node failure when running in single user
-        mode is to do either of the following:
+        The recommended way to handle a node failure when running in 
+        single user mode is to do either of the following:
       </para>
 
       <itemizedlist>
@@ -7225,7 +7237,10 @@
         </para>
 
         <itemizedlist>
-<!--  TODO: Should these be <firstterm/>s?  -->
+<!--  
+      TODO: Should these be <firstterm/>s rather than 
+      <emphasis role="bold">s?  [js]
+-->
           <listitem>
             <para>
               <emphasis role="bold">Metadata</emphasis>: the names and
@@ -7256,7 +7271,10 @@
           backup. During backup each node saves these three parts into
           three files on disk:
         </para>
-
+<!--  
+      TODO: Get rid of angle brackets for replaceable/variable elements 
+      (to make consistent with rest of RefMan). [js]
+-->
         <itemizedlist>
 
           <listitem>
@@ -7344,37 +7362,48 @@
 
           <listitem>
             <para>
-              The management server will reply with a message
-              '<literal>``Start of backup ordered''</literal>'. This
-              means that the management server has submitted the request
-              to the cluster, but has not yet received any response.
+              The management server will reply with the message
+              <quote><literal>Start of backup ordered</literal></quote>. 
+              This means that the management server has submitted the 
+              request to the cluster, but has not yet received any 
+              response.
             </para>
           </listitem>
 
           <listitem>
             <para>
-              The management server will reply '<literal>``Backup
+              The management server will reply <quote><literal>Backup
               <replaceable>&lt;BackupId&gt;</replaceable>
-              started''</literal>', where
+              started</literal></quote>, where
               <replaceable>&lt;BackupId&gt;</replaceable> is the unique
               identifier for this particular backup. (This ID will also
               be saved in the cluster log, if it has not been configured
-              otherwise.) This means that the cluster has received and
-              processed the backup request. It does not mean that the
-              backup has completed.
+              to do otherwise.) This means only that the cluster has 
+              received and processed the backup request. It does 
+              <emphasis>not</emphasis> mean that the backup has 
+              completed.
             </para>
           </listitem>
 
           <listitem>
             <para>
               The management server will signal that the backup is
-              finished with the message '<literal>``Backup
+              finished with the message <quote><literal>Backup
               <replaceable>&lt;BackupId&gt;</replaceable>
-              completed''</literal>'.
+              completed</literal></quote>.
             </para>
           </listitem>
 
         </orderedlist>
+<!--  TODO: Ask Jeb to verify this. [js]  -->
+        <para>
+          It is also possible to initiate a backup from the system 
+          shell using the following:
+        </para>
+        
+<programlisting>
+shell&gt; ndb_mgm -e "START BACKUP"
+</programlisting>
 
         <para>
           To abort a backup already in progress:
@@ -7404,34 +7433,43 @@
           <listitem>
             <para>
               The management server will acknowledge the abort request
-              with '<literal>``Abort of backup
+              with <quote><literal>Abort of backup
               <replaceable>&lt;BackupId&gt;</replaceable>
-              ordered''</literal>'; note that no actual response to this
-              request has yet been received.
+              ordered</literal></quote>; note that no actual response to 
+              this request has yet been received.
             </para>
           </listitem>
 
           <listitem>
             <para>
               Once the the backup has been aborted, the management
-              server will report '<literal>``Backup
+              server will report <quote><literal>Backup
               <replaceable>&lt;BackupId&gt;</replaceable> has been
               aborted for reason
-              <replaceable>XYZ</replaceable>''</literal>'. This means
-              that the cluster has terminated the backup and that all
-              files re lated to this backup have been removed from the
-              cluster filesystem.
+              <replaceable>msg</replaceable></literal></quote>. This 
+              means that the cluster has terminated the backup and that 
+              all files related to this backup have been removed from 
+              the cluster filesystem.
             </para>
           </listitem>
 
         </orderedlist>
+        
+        <para>
+          It is also possible to abort a backup in progress from the 
+          system shell using this command:
+        </para>
 
+<programlisting>
+shell&gt; ndb_mgm -e "ABORT BACKUP <replaceable>BackupId</replaceable>"
+</programlisting>
+        
         <para>
           <emphasis role="bold">Note</emphasis>: If there is no backup
           with ID <replaceable>&lt;BackupId&gt;</replaceable> running
-          when it is aborted, the management server will not make any
-          exlicit response. However, there will be a line in the cluster
-          log indicating that an invalid abort command was sent.
+          when it is aborted, the management server does not make any
+          exlicit response. However, the fact that an invalid abort 
+          command was sent is indicated in the cluster log.
         </para>
 
       </section>
@@ -7439,9 +7477,12 @@
       <section id="mysql-cluster-restore">
 
         <title id='title-mysql-cluster-restore'>&title-mysql-cluster-restore;</title>
-
+<!--  
+      TODO: Need to provide an example of ndb_restore usage or pointer 
+      to same.  [js]
+-->
         <para>
-          The cluster restoration program is implemented as separate
+          The cluster restoration program is implemented as a separate
           command line utility <command>ndb_restore</command>, which
           reads the files created by the backup and inserts the stored
           information into the database. The restore program must be
@@ -7458,7 +7499,9 @@
           program acts as an API to the cluster and therefore requires a
           free connection in order to connect to the cluster. This can
           be verified with the <command>ndb_mgm</command> command
-          <command>SHOW</command>. The switch <option>-c
+          <command>SHOW</command> (you can accomplish this from a system 
+          shell using <command>ndb_mgm -e SHOW</command>). The switch 
+          <option>-c 
           <replaceable>&lt;connectstring&gt;</replaceable></option> may
           be used to locate the MGM node (see
           <xref linkend="mysql-cluster-connectstring"/> for information
@@ -7576,8 +7619,8 @@
         </para>
 
 <!--   
-      TODO: Either write some additional material for this section, or 
-      fold it into another section? 
+      TODO: This is awfully short - either write some additional 
+      material for this section, or fold it into another section? [js]
 -->
 
       </section>
@@ -7596,19 +7639,23 @@
       encountered in building parallel databases would be communication 
       between the nodes in the network. For this reason, <literal>NDB 
       Cluster</literal> was designed from the very beginning to allow 
-      for different transporters.
+      for the use of a number of different data transport mechanisms. 
+      In this Manual, we use the term <firstterm>transporter</firstterm> 
+      for these.
     </para>
 
     <para>
-      Currently the code base includes 4 different transporters. Most
-      users today employ TCP/IP over Ethernet since this ubiquitous.
-      This is also by far the best-tested transporter in MySQL Cluster.
+      Currently the MySQL Cluster codebase includes support for 4 
+      different transporters. Most users today employ TCP/IP over 
+      Ethernet since it is ubiquitous. This is also by far the 
+      best-tested transporter in MySQL Cluster.
     </para>
 
     <para>
       We are working to make sure that communication with the
-      <command>ndbd</command> process is made in as large chunks as
-      possible since this will benefit all types of data transmission.
+      <command>ndbd</command> process is made in <quote>chucnks</quote> 
+      that are as large as possible since this benefits all types of 
+      data transmission.
     </para>
 
     <para>
@@ -7627,10 +7674,10 @@
       <title id='title-sci-sockets'>&title-sci-sockets;</title>
 
       <para>
-        In this section we will show how one can use a cluster
+        In this section we will show how one can adapt a cluster
         configured for normal TCP/IP communication to use SCI Sockets
         instead. This documentation is based on SCI Sockets version
-        2.3.0 as of 1 October 2004.
+        2.3.0 as of 01 October 2004.
       </para>
 
       <para>
@@ -7646,34 +7693,78 @@
         It is possible to use SCI Sockets with any version of MySQL
         Cluster. No special builds are needed since it uses normal
         socket calls which are already available in MySQL Cluster.
-        However, SCI Sockets are currently supported only on Linux 2.4
-        and 2.6 kernels. SCI Transporters works on additional operating
-        systems although we have verified these only with Linux 2.4 to
-        date.
+        However, SCI Sockets are currently supported only on the Linux 
+        2.4 and 2.6 kernels. SCI Transporters have been tested 
+        successfully on additional operating systems although we have 
+        verified these only with Linux 2.4 to date.
       </para>
 
       <para>
-        There are essentially four requirements for SCI Sockets. First,
-        it is necessary to build the SCI Socket libraries. Second, the
-        SCI Socket kernel libraries need to be installed. Third, one or
-        two configuration files need to be installed. Finally, the SCI
-        Socket kernel library needs to be enabled either for the entire
-        machine or for the shell where the MySQL Cluster processes are
-        started. This process needs to be repeated for each machine in
-        the cluster where you plan to use SCI Sockets for inter-node
+        There are essentially four requirements for SCI Sockets: 
+        
+        <orderedlist>
+        
+          <listitem>
+            <para>
+              Building the SCI Socket libraries.
+            </para>
+          </listitem>
+          
+          <listitem>
+            <para>
+              Installation of the SCI Socket kernel libraries.
+            </para>
+          </listitem>
+          
+          <listitem>
+            <para>
+              Installation of one or two configuration files.
+            </para>
+          </listitem>
+          
+          <listitem>
+            <para>
+              The SCI Socket kernel library must enabled either for the 
+              entire machine or for the shell where the MySQL Cluster 
+              processes are started.
+            </para>
+          </listitem>
+        
+        </orderedlist>
+        
+        This process needs to be repeated for each machine in the 
+        cluster where you plan to use SCI Sockets for inter-node
         communication.
       </para>
 
       <para>
-        Two packages need to be retrieved to get SCI Sockets working.
-        The first of these builds the libraries on which SCI Sockets are
-        built; the second contains the SCI Socket libraries themselves.
+        Two packages need to be retrieved to get SCI Sockets working:
+        
+        <orderedlist>
+        
+          <listitem>
+            <para>
+              The source code package containing the DIS support 
+              libraries for the SCI Sockets libraries.
+            </para>
+          </listitem>
+          
+          <listitem>
+            <para>
+              The source code package for the SCI Socket libraries 
+              themselves.
+            </para>
+          </listitem>
+        
+        </orderedlist>
+        
         Currently, these are available only in source code format. The
         latest versions of these packages at the time of this writing
-        were <filename>DIS_GPL_2_5_0_SEP_10_2004.tar.gz</filename> and
-        <filename>SCI_SOCKET_2_3_0_OKT_01_2004.tar.gz</filename>&gt; You
-        should be able to find them (or possibly newer versions) at
-        http://www.dolphinics.no/support/downloads.html.
+        were available as (respectively) 
+        <filename>DIS_GPL_2_5_0_SEP_10_2004.tar.gz</filename> and
+        <filename>SCI_SOCKET_2_3_0_OKT_01_2004.tar.gz</filename>. You
+        should be able to find these (or possibly newer versions) at
+        <ulink url="http://www.dolphinics.no/support/downloads.html"/>.
       </para>
 
       <para>
@@ -7716,7 +7807,7 @@
         this example we will place the installation in
         <filename>/opt/DIS</filename>.
         (<emphasis role="bold">Note</emphasis>: You will most likely
-        need to run the following as the root user.)
+        need to run the following as the system root user.)
       </para>
 
 <programlisting>
@@ -7732,7 +7823,7 @@
 
       <para>
         Now that all the libraries and binaries are in their proper
-        place we need to ensure that the SCI cards have proper node IDs
+        place, we need to ensure that the SCI cards have proper node IDs
         within the SCI address space.
       </para>
 
@@ -7796,9 +7887,9 @@
 
       <para>
         In our testing we have used switches, although most large
-        cluster installations use the 2-D/3-D torus structures. The
-        advantage provided by switches is that, with dual SCI cards and
-        dual switches, it is possible to build relatively easily a
+        cluster installations use 2- or 3-dimensional torus structures. 
+        The advantage provided by switches is that, with dual SCI cards 
+        and dual switches, it is possible to build with relative ease a
         redundant network where the average failover time on the SCI
         network is on the order of 100 microseconds. This is supported
         by the SCI transporter in MySQL Cluster and is also under
@@ -7806,7 +7897,7 @@
       </para>
 
       <para>
-        Failover for the 2-D/3-D torus is also possible but requires
+        Failover for the 2D/3D torus is also possible but requires
         sending out new routing indexes to all nodes. However, this
         requires only 100 milliseconds or so to complete and should be
         acceptable for most high-availability cases.
@@ -7816,13 +7907,13 @@
         By placing cluster data nodes properly within the switched
         architecture, it is possible to use 2 switches to build a
         structure whereby 16 computers can be interconnected and no
-        single failure can hinder more than one computer. With 32
+        single failure can hinder more than one of them. With 32
         computers and 2 switches it is possible to configure the cluster
         in such a manner that no single failure can cause the loss of
         more than two nodes; in this case it is also possible to know
-        which pair of nodes will be affected. Thus, by placing the two
-        in separate node groups, it is possible to build a safe MySQL
-        Cluster installation.
+        which pair of nodes is affected. Thus, by placing the two nodes
+        in separate node groups, it is possible to build a 
+        <quote>safe</quote> MySQL Cluster installation.
       </para>
 
       <para>
@@ -7841,7 +7932,8 @@
       <para>
         If you have multiple SCI cards in the same machine, you can
         determine which card has which slot by issuing the following
-        command:
+        command (again we assume that the current working directory is
+        <filename>/opt/DIS/sbin</filename>):
       </para>
 
 <programlisting>
@@ -7850,20 +7942,20 @@
 
       <para>
         This will give you the SCI card's serial number. Then repeat
-        this procedure for <literal>-c 2</literal> and so on, for each
+        this procedure with <literal>-c 2</literal>, and so on, for each
         card in the machine. Once you have matched each card with a
         slot, you can set node IDs for all cards.
       </para>
 
       <para>
-        After installing the necessary libraries and binaries, and
-        setting the SCI node IDs, the next step is to set up the mapping
+        After the necessary libraries and binaries are installed, and
+        the SCI node IDs are set, the next step is to set up the mapping
         from hostnames (or IP addresses) to SCI node IDs. This is done
         in the SCI sockets configuration file, which should be saved as
-        <filename>/etc/sci/scisock.conf</filename>. In this file, the
-        SCI node ID will be mapped to the hostname or IP address to
-        communicate with, through the proper SCI card. Here is a very
-        simple example of such a configuration file:
+        <filename>/etc/sci/scisock.conf</filename>. In this file, each
+        SCI node ID is mapped through the proper SCI card to the 
+        hostname or IP address that it is to communicate with. Here is a 
+        very simple example of such a configuration file:
       </para>
 
 <programlisting>
@@ -7874,7 +7966,7 @@
 </programlisting>
 
       <para>
-        It is also possible to limit this configuration so that it
+        It is also possible to limit the configuration so that it 
         applies only to a subset of the available ports for these hosts.
         An additional configuration file
         <filename>/etc/sci/scisock_opt.conf</filename> can be used to
@@ -7895,9 +7987,13 @@
       </para>
 
       <para>
-        With the configuraiton files in place, the drivers can be
-        installed. First, the the low-level drivers and then the SCI
-        socket driver need to be installed:
+        With the configuration files in place, the drivers can be
+        installed. 
+      </para>
+      
+      <para>
+        First, the low-level drivers and then the SCI socket driver need 
+        to be installed:
       </para>
 
 <programlisting>
@@ -7917,6 +8013,11 @@
 shell&gt; ./status.sh
 </programlisting>
 
+<!--  
+      TODO: Document switches for ksocketconfig script, or provide a 
+      pointer to same. [js]
+-->
+
       <para>
         If you discover an error and need to change the SCI socket
         configuration, it is necessary to use the
@@ -7933,15 +8034,16 @@
       </para>
 
       <para>
-        To make sure that SCI sockets are actually being used, you can
-        use the test program <command>latency_bench</command>. Using
+        To ensure that SCI sockets are actually being used, you can 
+        employ the <command>latency_bench</command> test program. Using
         this utility's server component, clients can connect to the
-        server to test the latency of the connection; determining
-        whether or not SCI is enabled should be fairly simple from
-        observing the latency. (<emphasis role="bold">Note</emphasis>:
-        Before using <command>latency_bench</command>, it is necessary
-        to set the <literal>LD_PRELOAD</literal> environment variable as
-        shown later in this section.)
+        server in order to test the latency of the connection; 
+        determining whether or not SCI is enabled should be fairly 
+        simple from observing the latency. 
+        (<emphasis role="bold">Note</emphasis>: Before using 
+        <command>latency_bench</command>, it is necessaryto set the 
+        <literal>LD_PRELOAD</literal> environment variable as shown 
+        later in this section.)
       </para>
 
       <para>
@@ -7955,12 +8057,12 @@
 
       <para>
         To run a client, use <command>latency_bench</command> again,
-        except this time with the <literal>-client</literal> option:
+        except this time with the <option>-client</option> option:
       </para>
 
 <programlisting>
 shell&gt; cd /opt/DIS/bin/socket
-shell&gt; ./latency_bench -client hostname_of_server
+shell&gt; ./latency_bench -client <replaceable>server_hostname</replaceable>
 </programlisting>
 
       <para>
@@ -8052,10 +8154,10 @@
 
           <para>
             Unique key accesses are similar to primary key accesses,
-            except that a unique key accesses is executed as a read on
-            an index table followed by a primary key access on the
-            table. However, only one request is sent from the MySQL
-            Server, and the read of the index table is handled by
+            except that a unique key access is executed as a read on an 
+            index table followed by a primary key access on the table. 
+            However, only one request is sent from the MySQL Server, and 
+            the read of the index table is handled by 
             <command>ndbd</command>. Such requests also benefit from
             batching.
           </para>
@@ -8087,11 +8189,16 @@
             When an ordered index is used, it performs a scan in the
             same manner as the full table scan, except that it scans
             only those records which are in the range used by the query
-            transmitted by the MySQL server (SQL node). A special
+            transmitted by the MySQL server (SQL node). 
+<!--  
+      TODO: Commenting out promise until we can provide more definite 
+      info as to when it might be implemented.  [js]
+-->
+            <!--  A special
             optimization is planned for future versions of MySQL Cluster
             whereby only one partition will be scanned instead of all
             partitions in parallel when all bound index attributes
-            include all attributes in the partitioning key.
+            include all attributes in the partitioning key. -->
           </para>
         </listitem>
 
@@ -8108,11 +8215,11 @@
       </para>
 
       <para>
-        In this way, we can test the cost of single key access and
-        single record scan accesses, and measure the impact of the
-        communication media used, on base access methods.
+        In this way, we can determine the cost of both a single key 
+        access and a single record scan access, as well as measure the 
+        impact of the communication media used, on base access methods.
       </para>
-
+<!--  TODO: How current are these figures?  [js]  -->
       <para>
         In our tests, we ran the base benchmarks for both a normal
         transporter using TCP/IP sockets and a similar setup using SCI
@@ -8172,13 +8279,13 @@
         <command>ndbd</command> process priority is set in such a way
         that the process does not lose priority due to running for an
         extended period of time, as can be done by locking processes to
-        CPU's in Linux 2.6. If such a configuration is possible, then
-        the <command>ndbd</command> process will benefit by 10-70%
-        compared to using SCI sockets. (The larger figures will be seen
-        when performing updates and probably on parallel scan operaitons
-        as well.)
+        CPUs in Linux 2.6. If such a configuration is possible, then the 
+        <command>ndbd</command> process will benefit by 10-70% as 
+        compared with using SCI sockets. (The larger figures will be 
+        seen when performing updates and probably on parallel scan 
+        operations as well.)
       </para>
-
+<!--  TODO: Provide links to these? (Not high priority item.) [js] -->
       <para>
         There are several other optimized socket implementations for
         computer clusters, including Myrinet, Gigabit Ethernet,
@@ -8191,10 +8298,16 @@
     </section>
 
   </section>
+<!--  
+      TODO: Check this section for relevance to 5.0 and update 
+      accordingly (Jeb is assisting with this). [js]
+-->
+<!--
+      NOTE: Changed section title to remove version-specificity.  [js]
+-->
+  <section id="mysql-cluster-limitations">
 
-  <section id="mysql-cluster-limitations-in-4-1">
-
-    <title id='title-mysql-cluster-limitations-in-4-1'>&title-mysql-cluster-limitations-in-4-1;</title>
+    <title id='title-mysql-cluster-limitations'>&title-mysql-cluster-limitations;</title>
 
     <para>
       In this section, we provide a listing of known limitations in
@@ -8605,10 +8718,16 @@
 <!--   *** BEGIN CLUSTER IN 5.0/5.1  *** -->
 
   </section>
+<!--  
+      TODO: Update to get rid of items already implemented as "future"
+      items here. (Waiting on feedback from Jeb et al.) [js]
+-->
+<!--
+      NOTE: Altered previously version-specific section ID, title.  [js]
+-->
+  <section id="mysql-cluster-roadmap">
 
-  <section id="mysql-cluster-in-5-0-and-5-1">
-
-    <title id='title-mysql-cluster-in-5-0-and-5-1'>&title-mysql-cluster-in-5-0-and-5-1;</title>
+    <title id='title-mysql-cluster-roadmap'>&title-mysql-cluster-roadmap;</title>
 
 <!--   
        Author: Jon Stephens
@@ -8659,7 +8778,12 @@
       what Cluster in MySQL 5.1 is likely to include later in this
       section (see <xref linkend="mysql-5-1-cluster-roadmap"/>).
     </para>
-
+<!--  
+      TODO: Consider removing this section altogether once it has been
+      verified that all relevant info contained herein is covered in 
+      News and elsewhere. [js]
+-->
+      
     <section id="mysql-5-0-cluster-changes">
 
       <title id='title-mysql-5-0-cluster-changes'>&title-mysql-5-0-cluster-changes;</title>
@@ -8768,7 +8892,10 @@
       </itemizedlist>
 
     </section>
-
+<!--  TODO: Leave title, ID, and content more or less as they are. As 
+      development progresses, we can add a mysql-cluster-5-2-roadmap 
+      section (etc.) and drop sections as versions are released? [js] 
+-->
     <section id="mysql-5-1-cluster-roadmap">
 
       <title id='title-mysql-5-1-cluster-roadmap'>&title-mysql-5-1-cluster-roadmap;</title>
@@ -8784,7 +8911,7 @@
         MySQL 5.1:
       </para>
 
-      <itemizedlist>
+      <orderedlist>
 
         <listitem>
           <para>
@@ -8834,7 +8961,7 @@
           </para>
         </listitem>
 
-      </itemizedlist>
+      </orderedlist>
 
       <para>
         In addition, we are working to increase the 8k size limit for
@@ -8865,13 +8992,16 @@
 
     <title id='title-mysql-cluster-faq'>&title-mysql-cluster-faq;</title>
 
-<!--   Cluster FAQ, version 1.0 (2005-01-29) -->
-
-<!--   Author: Jon Stephens, with the assistance of Tomas Ulin, Mikael Ronström, -->
+<!--   
+      Cluster FAQ, version 1.0 (2005-01-29)
+       
+      Author: Jon Stephens, with the assistance of Tomas Ulin, Mikael 
+      Ronström, Harrison Fisk, Stewart Smith, Pekka Nousiainen 
+-->
 
-<!--   Harrison Fisk, Stewart Smith, Pekka Nousiainen -->
+<!--  TODO: Add cross-references. [js] -->
 
-<!--   TODO: Add cross-references -->
+<!--  TODO: Convert to <qandaset/>s in order to drive PD insane? ;) -->
 
     <itemizedlist>
 
@@ -8929,9 +9059,9 @@
 
         <para>
           The faster SCI protocol is also supported, but requires
-          special hardware. See
-          <ulink url="MySQL Cluster Interconnects">MySQL Cluster
-          Interconnects</ulink> for more information about SCI.
+          special hardware. See 
+          <xref linkend="mysql-cluster-interconnects"/> for more 
+          information about SCI.
         </para>
       </listitem>
 
@@ -9526,7 +9656,7 @@
         <para>
           We expect to lift many of these restrictions in MySQL 5.0. For
           additional information on current limitations, see
-          <xref linkend="mysql-cluster-limitations-in-4-1"/>.
+          <xref linkend="mysql-cluster-limitations"/>.
         </para>
       </listitem>
 
@@ -9644,7 +9774,7 @@
         </para>
 
         <para>
-          See <xref linkend="mysql-cluster-limitations-in-4-1"/> for
+          See <xref linkend="mysql-cluster-limitations"/> for
           more information about these issues.
         </para>
       </listitem>

--- 1.39/refman-5.0/titles.ent	2005-07-27 00:58:28 +10:00
+++ 1.40/refman-5.0/titles.ent	2005-07-29 12:37:56 +10:00
@@ -43,7 +43,7 @@
 <!ENTITY title-innodb-transactions-with-different-apis "How to Use Transactions in <literal>InnoDB</literal> with Different APIs"><!-- "How to Use Transactions in <literal>InnoDB</literal> with Different APIs" -->
 <!ENTITY title-charset-compatibility "Compatibility with Other DBMSs"><!-- "Compatibility with Other DBMSs" -->
 <!ENTITY title-mysqld-max "The <command>mysqld-max</command> Extended MySQL Server"><!-- "The <command>mysqld-max</command> Extended MySQL Server" -->
-<!ENTITY title-mysql-cluster-limitations-in-4-1 "Cluster Limitations in MySQL 4.1"><!-- "Cluster Limitations in MySQL 4.1" -->
+<!ENTITY title-mysql-cluster-limitations "Known Limitations of MySQL Cluster"><!-- "Known Limitations of MySQL Cluster" -->
 <!ENTITY title-bsd-notes "BSD Notes"><!-- "BSD Notes" -->
 <!ENTITY title-news-3-22-30 "Changes in release 3.22.30 (11 Jan 2000)"><!-- "Changes in release 3.22.30 (11 Jan 2000)" -->
 <!ENTITY title-news-3-22-28 "Changes in release 3.22.28 (20 Oct 1999)"><!-- "Changes in release 3.22.28 (20 Oct 1999)" -->
@@ -349,7 +349,7 @@
 <!ENTITY title-backup-table "<literal>BACKUP TABLE</literal> Syntax"><!-- "<literal>BACKUP TABLE</literal> Syntax" -->
 <!ENTITY title-mysql-config-wizard-confirmation "The Confirmation Dialog"><!-- "The Confirmation Dialog" -->
 <!ENTITY title-innodb-physical-record "Physical Record Structure"><!-- "Physical Record Structure" -->
-<!ENTITY title-mysql-cluster-in-5-0-and-5-1 "MySQL Cluster in 5.0 and 5.1"><!-- "MySQL Cluster in 5.0 and 5.1" -->
+<!ENTITY title-mysql-cluster-roadmap "MySQL Cluster Development Roadmap"><!-- "MySQL Cluster Development Roadmap" -->
 <!ENTITY title-problems-with-float "Problems with Floating-Point Comparisons"><!-- "Problems with Floating-Point Comparisons" -->
 <!ENTITY title-analysing-spatial-information "Analyzing Spatial Information"><!-- "Analyzing Spatial Information" -->
 <!ENTITY title-creating-a-spatially-enabled-mysql-database "Creating a Spatially Enabled MySQL Database"><!-- "Creating a Spatially Enabled MySQL Database" -->

--- 1.3/refman-5.0/using-mysql-programs.xml	2005-07-20 01:57:37 +10:00
+++ 1.4/refman-5.0/using-mysql-programs.xml	2005-07-29 12:37:57 +10:00
@@ -484,12 +484,13 @@
    <para>
     MySQL 4.0 introduced some additional flexibility in the way you
     specify options. These changes were made in MySQL 4.0.2. Some of
-    them relate to the way you specify options that have ``enabled'' and
-    ``disabled'' states, and to the use of options that might be present
-    in one version of MySQL but not another. Those capabilities are
-    discussed in this section. Another change pertains to the way you
-    use options to set program variables.
-    <xref linkend="program-variables"/> discusses that topic further.
+    them relate to the way you specify options that have 
+    <quote>enabled</quote> and <quote>disabled</quote> states, and to 
+    the use of options that might be present in one version of MySQL but 
+    not another. Those capabilities are discussed in this section. 
+    Another change pertains to the way you use options to set program 
+    variables. <xref linkend="program-variables"/> discusses that topic 
+    further.
    </para>
 -->
 

--- 1.12/refman-5.0/Status	2005-07-23 23:24:06 +10:00
+++ 1.13/refman-5.0/Status	2005-07-29 12:37:56 +10:00
@@ -19,10 +19,10 @@
     error-handling
     limits
     restrictions
+    mysql-optimization
 
 - 5.0 chapters awaiting edits:
     ndbcluster
-    mysql-optimization
 
 - 5.0 chapters (probably/hopefully) needing minimal if any edits:
     maxdb
@@ -31,16 +31,22 @@
     extending-mysql
     problems
     regexp
-    
+
 
 - 5.0 chapters that probably (hopefully!) don't need any edits (I will 
   inspect them nonetheless before reporting that RefMan 5.0 is done):
-    stored-procedures
-    triggers
-    views
-    information-schema
-    precision-math
-    credits
-    porting
-    gpl-license
-    floss-license-exception
+  
+    - Covering 5.0-only features:
+        stored-procedures
+        triggers
+        views
+        information-schema
+        precision-math
+      
+    - Constant across MySQL versions (likely to move to refman-common
+      tree):
+        credits
+        porting
+        gpl-license
+        floss-license-exception
+
Thread
bk commit - mysqldoc@docsrva tree (jon:1.3128)jon29 Jul