MySQL Community Edition is a freely downloadable version of the world’s most popular open source database, which is supported by an active community of open source developers and enthusiasts.


MySQL delivers enterprise features, including:

Partitioning to improve performance and management of very large database environments. Row-based/Hybrid Replication for improved replication security. Event Scheduler to create and schedule jobs that perform various database tasks. XPath Support. Dynamic General/Slow Query Log. Performance/Load Testing Utility (mysqlslap). Improved! Full Text Search (faster, new dev templates). Improved! Archive engine (better compression, more features). Improved! User session and problem SQL identification. Improved! MySQL embedded library (libmysqld). Additional INFORMATION_SCHEMA objects. Faster data import operations (parallel file load). ACID Transactions to build reliable and secure business critical applications. Stored Procedures to improve developer productivity. Triggers to enforce complex business rules at the database level. Views to ensure sensitive information is not compromised. Information Schema to provide easy access to metadata. Pluggable Storage Engine Architecture for maximum flexibility. Archive Storage Engine for historical and audit data.

The following list is a few of the many updates and changes have been undertaken in this latest version of MySQL:

* Bugs Fixed
– InnoDB; Partitioning: Large numbers of partitioned InnoDB tables could consume much more memory when used in MySQL 5.6 or 5.7 than the memory used by the same tables used in previous releases of the MySQL Server.
– InnoDB: An ALTER TABLE … ADD FOREIGN KEY operation could cause a serious error.
– InnoDB: In debug builds, an INSERT operation affecting compressed tables would raise a sync-related assertion.
– InnoDB: Retrieval of multiple values with a single get command would return incorrect results instead of an error message. The InnoDB memcached plugin does not currently support retrieval of multiple values with a single get command.
– InnoDB: Attempting to perform operations on a timed out key would cause the memcached daemon to crash and restart.
– InnoDB: With a transaction isolation level less than or equal to READ COMMITTED, gap locks were not taken when scanning a unique secondary index to check for duplicates. As a result, duplicate check logic failed allowing duplicate key values in the unique secondary index.
– InnoDB: In rare cases, the purge process would attempt to delete a secondary index record that was not marked for deletion, resulting in an inconsistent secondary index.
– Replication: After the fix for Bug #16861624, killing a multi-threaded slave worker which was waiting for a commit lock caused a debug assertion to fail. This fix ensures that such a situation can not occur.
– Replication: When committing a transaction, a flag is now used to check whether a thread has been created, rather than checking the thread itself, which uses more resources, particularly when running the server with master_info_repository=TABLE.
– Replication: A multi-threaded slave now checks that a free worker is available to dispatch the next event. In previous versions, a multi-threaded slave crashes with a worker error if the thread coordinator can not find a free worker. The crash was caused when the coordinator did not return a free worker, for example if the coordinator was aborted at the same time using STOP SLAVE.
– Replication: When mysqlbinlog processed multiple binary log files into a single output file, this file was not in a useful state for point-in-time recovery, when it failed with the error, When @@SESSION.GTID_NEXT is set to a GTID, you must explicitly set it to a different value after a COMMIT or ROLLBACK. Please check GTID_NEXT variable manual page for detailed explanation. Current @@SESSION.GTID_NEXT is ‘xyz’. When mysqlbinlog processes a binary log containing GTIDs, it outputs SET gtid_next statements, but gtid_next is set to undefined whenever a commit occurs; this left gtid_next undefined when the server had finished processing the output from mysqlbinlog. When the next binary log file started with one or more anonymous statements or transactions, the combination of gtid_next being left undefined at the end of the first binary log and the second binary log containing anonymous transactions to the error described previously (Error 1837, ER_GTID_NEXT_TYPE_UNDEFINED_GROUP).
– Replication: When using row-based replication, running a long transaction involving a large number of events could trigger an Out of Memory (OOM) error if the slave’s table structure was not compatible with the master’s table structure. Such an incompatible situation could occur if the table on the slave had been manually changed, or when replicating between different MySQL versions that have different data types. This OOM error was caused because the virtual temporary tables created for the row conversion were not being freed until the end of the transaction, which was a problem when replicating large numbers of events.
– With DTrace support enabled, certain other compilation options could cause the build to fail.
– yaSSL client code did not validate the encryption size or session ID length, which could cause the client to exit.
– yaSSL could fail preauthorization if the client supplied inaccurate buffer lengths.
– Competition between threads could lead to timeout failure trying to rotate the audit log file.
– LPAD() and RPAD() could cause a server exit if the pad string argument was not well formed.
– The optimizer could create a zero-length column for a temporary table, causing a server exit.
– MOD for very small decimal right-hand arguments could cause a server exit.
– The client library now includes a call to X509_verify_cert_error_string() in the SSL certificate verification code, to be more robust in detecting invalid certificates.
– If the left-hand-side of an IN predicate was a scalar subquery but returned no row, the server could exit.
– The thread_concurrency system variable is deprecated, but no warning resulted from setting it at server startup.
– Sending a SIGQUIT or SIGINT signal to mysql could result in a glibc double free or corruption error.
– Invalid memory access could occur when using prepared statements if a mysql client connection was lost after statement preparation was complete and there was at least one statement that was in initialized state but not prepared yet.
– LIKE matches failed for code points of HALF WIDTH KATAKANA in the sjis and cp932 character sets.
– On EL7, installation of MySQL from RPM packages could fail if postfix had previously been installed using yum.
– mysql_upgrade could fail if the mysql.user table contained multiple accounts with the same user name and host name where the host name differed in lettercase. This is still not permitted, but now mysql_upgrade prints a more informative error message to indicate the nature of the problem:
> ERROR 1644 (45000): Multiple accounts exist for user_name, host_name
> that differ only in Host lettercase; remove all except one of them
– If the general query log or slow query log file was set to a FIFO or socket file, and the file reader went away, the server stopped executing statements. Now the server detects such files, logs an error message, and continues with the appropriate log disabled.
– A simultaneous OPTIMIZE TABLE and online ALTER TABLE on the same InnoDB table could result in deadlock.
– The query cache was not invalidated for a table when a CASCADE DELETE or CASCADE UPDATE referential constraint was specified and the database name or table name contained special characters.

So what are you waiting for? You can download MySQL from today.

[Image via: learneveryday]