MySQL 9.0 was released on July 1, 2024. This is an ‘Innovation’ release, which means it provides access to the latest features and improvements in MySQL technologies. Innovation releases are the opposite of the Long Term Support (LTS) releases, where stability is the top priority, and only needed security and other fixes are available. This blog post is a quick review of the release notes for MySQL 9.0. My comments are in italics and do not reflect Percona’s views.
For those who missed it or have short memories, MySQL 8.0 was widely criticized for having too many new features. Many of these new features needed extra development and sometimes lots of work to become stable. New features can be handy, but stability is more important than anything else in production. But some of us yearn for the cutting-edge, slightly wild new ‘toys’ to tinker with.
So, what new features are in the 9.0 Community Edition? We have already been informed that things like vector data handling and embedded JavaScript functions are not in the Community Edition and are saved exclusively for the HeatWave variant.
Innovation releases promise new features, But are those promises kept?
There are 127 bug fixes. One fix is ‘Removed functionality specific to the Fusion IO atomic write feature, a product that was last available in 2014. (Bug #35072139)’ Does anyone still have their Fusion Cards in production?
Hopefully, the fix will improve performance: ‘SELECT … GROUP BY queries were at least twice as slow with the TempTable engine than the Memory engine (Bug #107700, Bug #34338001)’. It will be interesting to see if this fix will help speed up 9.0 to near 5.7 performance.
The mysql_native_password authentication plugin was deprecated in MySQL 8.0 and has been removed, er, moved. A 9.0 server will reject mysql_native authentication requests from older client programs lacking the CLIENT_PLUGIN_AUTH capability. However, mysql_native_password remains available for backward compatibility on the client. This authentication plugin has been converted into a dynamically loadable plugin. This and the SLAVE/MASTER (yup, still there) situation should not have dragged on this long.
The variables_metadata and global_variable_attricutes tables have been added to the performance schema. They will track system variables and attribute-value pairs assigned by the server to global variables.
|
1 |
MySQL localhost:3306 ssl world SQL > select * from performance_schema.variables_metadata limit 2G<br>*************************** 1. row ***************************<br>VARIABLE_NAME: activate_all_roles_on_login<br>VARIABLE_SCOPE: GLOBAL<br>DATA_TYPE: Boolean<br>MIN_VALUE: <br>MAX_VALUE: <br>DOCUMENTATION: Automatically set all granted roles as active after the user has authenticated successfully.<br>*************************** 2. row ***************************<br>VARIABLE_NAME: admin_address<br>VARIABLE_SCOPE: GLOBAL<br>DATA_TYPE: String<br>MIN_VALUE: <br>MAX_VALUE: <br>DOCUMENTATION: IP address to bind to for service connection. Address can be an IPv4 address, IPv6 address, or host name. Wildcard values *, ::, 0.0.0.0 are not allowed. Address value can have following optional network namespace separated by the delimiter / from the address value. E.g., the following value 192.168.1.1/red specifies IP addresses to listen for incoming TCP connections that have to be placed into the namespace 'red'. Using of network namespace requires its support from underlying Operating System. Attempt to specify a network namespace for a platform that doesn't support it results in error during socket creation.<br>2 rows in set (0.0072 sec) |
It might be worth looking at the DOCUMENTATION column as the wording differs from the manual.
The range of error numbers for new errors in MySQL 9 has been designated to begin with 6400. This is valuable to those writing third-party tools that do not want to conflict with error numbers used by Oracle. It can also help you spot complaints caught by MySQL 9.0.
Well, 127 bug fixes are a good thing. But what about the rest of Oracle’s MySQL 9.0, the Innovation Release?
Is it innovation? No new exceptional technical features are included. We got many of those in 8.0, which may have jaded me on 9.0. Performance improvements will be judged as the benchmarks are done. Many people kept with the now obsolete 5.7 to avoid performance degradation. 8.4, ‘out of the box’ was slower than 8.0. My fingers are crossed that the GROUP BY issue listed above boosts performance. But can any of the items in the release notes be innovative? No, it is sound engineering that is helping to evolve the product. But it is not innovation.
For those asking when the Percona release of 9.0 will be available, exploring the new code will take some time. Benchmarking, tuning, adding in the enterprise features you have for free from Percona, and lots of testing take time. As it is now, I would not recommend anyone other than the curious try Oracle’s MySQL 9.0 release.