Documentation Home
MySQL 5.6 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 31.6Mb
PDF (A4) - 31.6Mb
PDF (RPM) - 30.7Mb
HTML Download (TGZ) - 7.7Mb
HTML Download (Zip) - 7.7Mb
HTML Download (RPM) - 6.6Mb
Man Pages (TGZ) - 189.5Kb
Man Pages (Zip) - 303.9Kb
Info (Gzip) - 2.9Mb
Info (Zip) - 2.9Mb
Excerpts from this Manual

18.1.4.2 What is New in NDB Cluster 7.4

The following improvements to NDB Cluster have been made in NDB Cluster 7.4:

  • Conflict detection and resolution enhancements.  A reserved column name namespace NDB$ is now employed for exceptions table metacolumns, allowing an arbitrary subset of main table columns to be recorded, even if they are not part of the original table's primary key.

    Recording the complete original primary key is no longer required, due to the fact that matching against exceptions table columns is now done by name and type only. It is now also possible for you to record values of columns which not are part of the main table's primary key in the exceptions table.

    Read conflict detection is now possible. All rows read by the conflicting transaction are flagged, and logged in the exceptions table. Rows inserted in the same transaction are not included among the rows read or logged. This read tracking depends on the slave having an exclusive read lock which requires setting ndb_log_exclusive_reads in advance. See Read conflict detection and resolution, for more information and examples.

    Existing exceptions tables remain supported. For more information, see Section 18.6.11, “NDB Cluster Replication Conflict Resolution”.

  • Circular (active-active) replication improvements.  When using a circular or active-active NDB Cluster Replication topology, you can assign one of the roles of primary of secondary to a given NDB Cluster using the ndb_slave_conflict_role server system variable, which can be employed when failing over from an NDB Cluster acting as primary, or when using conflict detection and resolution with NDB$EPOCH2() and NDB$EPOCH2_TRANS() (NDB 7.4.2 and later), which support delete-delete conflict handling.

    See the description of the ndb_slave_conflict_role variable, as well as NDB$EPOCH2(), for more information. See also Section 18.6.11, “NDB Cluster Replication Conflict Resolution”.

  • Per-fragment memory usage reporting.  You can now obtain data about memory usage by individual NDB Cluster fragments from the memory_per_fragment view, added in NDB 7.4.1 to the ndbinfo information database. For more information, see Section 18.5.10.17, “The ndbinfo memory_per_fragment Table”.

  • Node restart improvements.  NDB Cluster 7.4 includes a number of improvements which decrease the time needed for data nodes to be restarted. These are described in the following list:

    • Memory allocated that is allocated on node startup cannot be used until it has been touched, which causes the operating system to set aside the actual physical memory required. In previous versions of NDB Cluster, the process of touching each page of memory that was allocated was singlethreaded, which made it relatively time-consuming. This process has now been reimplimented with multithreading. In tests with 16 threads, touch times on the order of 3 times shorter than with a single thread were observed.

    • Increased parallelization of local checkpoints; in NDB Cluster 7.4, LCPs now support 32 fragments rather than 2 as before. This greatly increases utilization of CPU power that would otherwise go unused, and can make LCPs faster by up to a factor of 10; this speedup in turn can greatly improve node restart times.

      The degree of parallelization used for the node copy phase during node and system restarts can be controlled in NDB 7.4.3 and later by setting the MaxParallelCopyInstances data node configuration parameter to a nonzero value.

    • Reporting on disk writes is provided by new ndbinfo tables disk_write_speed_base, disk_write_speed_aggregate, and disk_write_speed_aggregate_node, which provide information about the speed of disk writes for each LDM thread that is in use.

      This release also adds the data node configuration parameters MinDiskWriteSpeed, MaxDiskWriteSpeed, MaxDiskWriteSpeedOtherNodeRestart, and MaxDiskWriteSpeedOwnRestart to control write speeds for LCPs and backups when the present node, another node, or no node is currently restarting.

      These changes are intended to supersede configuration of disk writes using the DiskCheckpointSpeed and DiskCheckpointSpeedInRestart configuration parameters. These 2 parameters have now been deprecated, and are subject to removal in a future NDB Cluster release.

    • Faster times for restoring an NDB Cluster from backup have been obtained by replacing delayed signals found at a point which was found to be critical to performance with normal (undelayed) signals. The elimination or replacement of these unnecessary delayed signals should noticeably reduce the amount of time required to back up an NDB Cluster, or to restore an NDB Cluster from backup.

    • Several internal methods relating to the NDB receive thread have been optimized, to increase the efficiency of SQL processing by NDB. The receiver thread at time may have to process several million received records per second, so it is critical that it not perform unnecessary work or waste resources when retrieving records from NDB Cluster data nodes.

  • Improved reporting of NDB Cluster restarts and start phases.  The restart_info table (included in the ndbinfo information database beginning with NDB 7.4.2) provides current status and timing information about node and system restarts.

    Reporting and logging of NDB Cluster start phases also provides more frequent and specific printouts during startup than previously. See Section 18.5.1, “Summary of NDB Cluster Start Phases”, for more information.

  • NDB API: new Event API.  NDB 7.4.3 introduces an epoch-driven Event API that supercedes the earlier GCI-based model. The new version of the API also simplifies error detection and handling. These changes are realized in the NDB API by implementing a number of new methods for Ndb and NdbEventOperation, deprecating several other methods of both classes, and adding new type values to Event::TableEvent.

    The event handling methods added to Ndb in NDB 7.4.3 are pollEvents2(), nextEvent2(), getHighestQueuedEpoch(), and getNextEventOpInEpoch2(). The Ndb methods pollEvents(), nextEvent(), getLatestGCI(), getGCIEventOperations(), isConsistent(), and isConsistentGCI() are deprecated beginning with the same release.

    NDB 7.4.3 adds the NdbEventOperation event handling methods getEventType2(), getEpoch(), isEmptyEpoch(), and isErrorEpoch; it obsoletes getEventType(), getGCI(), getLatestGCI(), isOverrun(), hasError(), and clearError().

    While some (but not all) of the new methods are direct replacements for deprecated methods, not all of the deprecated methods map to new ones. The Event Class, provides information as to which old methods correspond to new ones.

    Error handling using the new API is no longer handled using dedicated hasError() and clearError() methods, which are now deprecated (and thus subject to removal in a future release of NDB Cluster). To support this change, the list of TableEvent types now includes the values TE_EMPTY (empty epoch), TE_INCONSISTENT (inconsistent epoch), and TE_OUT_OF_MEMORY (inconsistent data).

    Improvements in event buffer management have also been made by implementing new get_eventbuffer_free_percent(), set_eventbuffer_free_percent(), and get_event_buffer_memory_usage() methods. Memory buffer usage can now be represented in application code using EventBufferMemoryUsage. The ndb_eventbuffer_free_percent system variable, also implemented in NDB Cluster 7.4, makes it possible for event buffer memory usage to be checked from MySQL client applications.

    For more information, see the detailed descriptions for the Ndb and NdbEventOperation methods listed. See also Event::TableEvent, as well as The EventBufferMemoryUsage Structure.

  • Per-fragment operations information.  In NDB 7.4.3 and later, counts of various types of operations on a given fragment or fragment replica can obtained easily using the operations_per_fragment table in the ndbinfo information database. This includes read, write, update, and delete operations, as well as scan and index operations performed by these. Information about operations refused, and about rows scanned and returned from a given fragment replica, is also shown in operations_per_fragment. This table also provides information about interpreted programs used as attribute values, and values returned by them.

NDB Cluster 7.4 is also supported by MySQL Cluster Manager, which provides an advanced command-line interface that can simplify many complex NDB Cluster management tasks. See MySQL™ Cluster Manager 1.4.3 User Manual, for more information.


User Comments
Sign Up Login You must be logged in to post a comment.