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?
Bugs
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.
Almost gone
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.
Two new PS tables
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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | MySQL localhost:3306 ssl world SQL > select * from performance_schema.variables_metadata limit 2G *************************** 1. row *************************** VARIABLE_NAME: activate_all_roles_on_login VARIABLE_SCOPE: GLOBAL DATA_TYPE: Boolean MIN_VALUE: MAX_VALUE: DOCUMENTATION: Automatically set all granted roles as active after the user has authenticated successfully. *************************** 2. row *************************** VARIABLE_NAME: admin_address VARIABLE_SCOPE: GLOBAL DATA_TYPE: String MIN_VALUE: MAX_VALUE: 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. 2 rows in set (0.0072 sec) |
It might be worth looking at the DOCUMENTATION column as the wording differs from the manual.
And last, if not least
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.
Summary
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.
When Percona Server 8.0.37/8.0.38 will be available ?
There are no technical highlights in this segment.
We went from 5.7 to MariaDB due to missing query cache in newer MySQL. Lets hope it will return one day.
MySQL’s query cache was single-threaded and a major performance bottle neck, so do not expect a return.
Correcting….The newly other introduced table along with variables_metadata is global_variable_attributes not global_variable_attricutes.
I just downloaded and installed this version but it gives me the “error 1045 mysql 28000 access denied…”
I already tried to change the password and everything that StackOverflow suggests, do you have any other suggestion? I’m working on windows
Will this version at least be available for ARM64 without having to use a Docker container that costs more than 20% performance?
With MySQL 8 you have already refused to offer an ARM64 version that works without Docker.