Latest in branch 9.0
9.0.1
Released 12 Jul 2024
(1 year ago)
SoftwareMySQL
Version9.0
Status
End of life
Initial release9.0.0
07 Jun 2024
(2 years ago)
Latest release9.0.1
12 Jul 2024
(1 year ago)
End of
premier support
15 Oct 2024
(Ended 1 year, 7 months ago)
End of
extended support
15 Oct 2024
(Ended 1 year, 7 months ago)
Release noteshttps://dev.mysql.com/doc/relnotes/mysql/9.0/en/news-9-0-1.html
Source codehttps://github.com/mysql/mysql-server/tree/mysql-9.0.1
Documentationhttps://dev.mysql.com/doc/refman/9.0/en/
Downloadhttps://dev.mysql.com/downloads/mysql/
MySQL 9.0 ReleasesView full list

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_VALUE and MAX_VALUE columns in the variables_info table (use variables_metadata instead)
  • 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_password authentication
  • 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 VECTOR type 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.

Releases In Branch 9.0

VersionRelease date
9.0.112 Jul 2024
(1 year ago)
9.0.007 Jun 2024
(2 years ago)