The binary and source versions of MySQL Cluster 7.3.8 have now
been made available at http://www.mysql.com/downloads/cluster/.
Release notes
MySQL Cluster NDB 7.3.8 is a new release of MySQL Cluster, based
on MySQL Server 5.6 and including features from version 7.3 of
the NDB storage engine, as well as fixing a number of recently
discovered bugs in previous MySQL Cluster releases. Obtaining
MySQL Cluster NDB 7.3. MySQL Cluster NDB 7.3 source code and
binaries can be obtained from
http://dev.mysql.com/downloads/cluster/.
For an overview of changes made in MySQL Cluster NDB 7.3, see
MySQL Cluster Development in MySQL Cluster NDB 7.3 (
http://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-development-5-6-ndb-7-3.html).
This release also incorporates all bugfixes and changes made in previous MySQL Cluster releases, as well as all bugfixes and feature changes which were added in mainline MySQL 5.6 through MySQL 5.6.22 (see Changes in MySQL 5.6.22). A full description of feature changes and bug fixes in can be found in the MySQL Cluster 7.3.8 release notes; for convenience, the feature changes (but not bug fixes) are listed here.
Functionality Added or Changed
-
Performance: Recent improvements made to the
multithreaded scheduler were intended to optimize the cache
behavior of its internal data structures, with members of these
structures placed such that those local to a given thread do
not overflow into a cache line which can be accessed by another
thread. Where required, extra padding bytes are inserted to
isolate cache lines owned (or shared) by other threads, thus
avoiding invalidation of the entire cache line if another
thread writes into a cache line not entirely owned by itself.
This optimization improved MT Scheduler performance by several
percent.It has since been found that the optimization just
described depends on the global instance of struct
thr_repository starting at a cache line aligned base address as
well as the compiler not rearranging or adding extra padding to
the scheduler struct; it was also found that these
prerequisites were not guaranteed (or even checked). Thus this
cache line optimization has previously worked only when
g_thr_repository (that is, the global instance) ended up being
cache line aligned only by accident. In addition, on 64-bit
platforms, the compiler added extra padding words in struct
thr_safe_pool such that attempts to pad it to a cache line
aligned size failed.
The current fix ensures that g_thr_repository is constructed on a cache line aligned address, and the constructors modified so as to verify cacheline aligned adresses where these are assumed by design.
Results from internal testing show improvements in MT Scheduler read performance of up to 10% in some cases, following these changes. (Bug #18352514)
- Cluster API: Two new example programs, demonstrating reads and writes of CHAR, VARCHAR, and VARBINARY column values, have been added to storage/ndb/ndbapi-examples in the MySQL Cluster source tree. For more information about these programs, including source code listings, see NDB API Simple Array Example, and NDB API Simple Array Example Using Adapter.