What is New in MySQL 9.0
MySQL 9.0 is the first Innovation release in the 9.x series. It introduces several modern features while removing long-deprecated functionality and improving the overall architecture for better security and performance.
Key highlights include the new VECTOR data type, support for JavaScript stored programs in Enterprise Edition, atomic DDL for databases, and significant cleanups in authentication and legacy components.
New Data Type: VECTOR
MySQL 9.0 adds official support for the VECTOR data type (InnoDB only). A VECTOR column stores an array of 4-byte floating-point numbers with a maximum of 16383 elements (default 2048).
Important restrictions:
- Cannot be used in primary keys, unique indexes, foreign keys, or as a partitioning key
- Limited function and operator support
- Equality comparison is supported only between VECTOR values
- Not available in NDB Cluster or with the Multilingual Engine (JavaScript)
Helper functions include VECTOR_DIM(), TO_VECTOR() / STRING_TO_VECTOR(), and FROM_VECTOR() / VECTOR_TO_STRING().
Security and Authentication Changes
The mysql_native_password authentication plugin has been completely removed from the server. Older clients that do not support plugin authentication will no longer be able to connect using this method.
Removed related items include the server options --mysql-native-password and the system variable default_authentication_plugin. The client-side plugin remains available as a dynamically loadable module for backward compatibility with older servers.
JavaScript Stored Programs (Enterprise Edition)
Enterprise users can now write stored procedures and functions using JavaScript through the Multilingual Engine (MLE) component. These routines follow ECMAScript 2023 in strict mode and support most MySQL data types (except VECTOR).
Features include SQL execution APIs, result set handling, and session management functions such as mle_session_state() and mle_session_reset(). Status variables starting with mle% provide monitoring information.
InnoDB and DDL Improvements
CREATE DATABASE and DROP DATABASE are now fully atomic and crash-safe for engines that support atomic DDL (including InnoDB).
Numerous InnoDB fixes improve recovery speed, reduce unnecessary pauses, and fix issues with spatial indexes, XA transactions, and parallel read threads on partitioned tables.
Replication and Optimizer Enhancements
Transactions that mix transactional and non-transactional tables now trigger a deprecation warning. Only specific safe combinations (such as InnoDB + BLACKHOLE) are fully supported without warnings.
The optimizer can now transform certain correlated subqueries with LIMIT 1 into more efficient left joins. EXPLAIN FORMAT=JSON includes additional join column information.
New Performance Schema tables variables_metadata and global_variable_attributes provide richer information about system variables.
Deprecations and Removals
Several legacy items have been deprecated or removed:
MIN_VALUEandMAX_VALUEcolumns in thevariables_infotable (usevariables_metadatainstead)- Thread Pool Information Schema tables (
TP_THREAD_GROUP_STATE, etc.) - Fusion IO atomic write support (removed as obsolete)
Other Notable Changes
| Area | Change |
|---|---|
| Event Scheduler | CREATE EVENT and related statements can now be prepared |
| JSON Explain | EXPLAIN ANALYZE FORMAT=JSON INTO @var ... is now supported |
| Foreign Keys | Inline foreign key definitions are now accepted and enforced |
| Thread Pool | Improved handling of long-running transactions and connection limits |
Upgrade Considerations
When upgrading to MySQL 9.0, pay special attention to the following:
- Update any applications or scripts that still rely on
mysql_native_passwordauthentication - Test mixed transactional/non-transactional table updates, as they now generate warnings
- Review usage of deprecated Performance Schema and Thread Pool tables
- Evaluate the new
VECTORtype and JavaScript stored programs for suitable workloads
MySQL 9.0 lays a strong foundation for the 9.x series with modern data type support, improved security defaults, and better development capabilities while removing outdated components.