The Problem
MySQL 9.0 shipped in July 2024 as an Innovation release, not a direct successor to 8.0. That distinction matters. Oracle's JSON optimizer rewrite delivered speed gains for some queries but caused 7x slowdowns for others, particularly JSON_EXTRACT operations. No official benchmark exists. Production teams are discovering these regressions the hard way.
The authentication changes hurt more. MySQL 9.0 removes mysql_native_password and SHA-1 support entirely. You must migrate to caching_sha2_password before upgrading. Miss this step and your application breaks at startup.
The Replication Trap
MySQL 9.0 can replicate from 8.0 masters. It cannot replicate to 8.0 slaves. This matters for chain replication setups and blue-green deployments. Oracle's documentation warns about mixed transactional/nontransactional table replication deprecations but doesn't quantify the blast radius. Group Replication upgrades require careful sequencing: upgrade secondaries first, fail over, then upgrade the old primary.
The 8.0 LTS hits end-of-life in April 2026. That's a tight window for enterprise migrations, especially with these breaking changes.
What Actually Improved
Native vector search works. The VECTOR_DISTANCE function handles cosine similarity without external services. This matters for RAG pipelines and embedding searches. Real deployments report 3-4x speedups versus JSON storage with application-layer similarity calculations.
Instant DDL now covers more operations: adding JSON columns, dropping columns, renaming columns. These were table-locking operations in 8.0. InnoDB's TempTable engine delivers 2x GROUP BY performance gains in specific workloads.
Multi-valued indexes for JSON arrays fix a real problem. You can now index array elements directly instead of full table scans. Benchmarks show 450ms queries dropping to 12ms on 100K row tables.
The Migration Math
Percona calls 9.0 "sound engineering, not innovation." The JavaScript stored procedures feature is interesting but unproven at scale. The invisible-by-default indexes prevent accidental query plan disruptions, which is valuable but not revolutionary.
The real question: Can you afford to stay on 8.0 past April 2026? Probably not. Can you trust 9.0 without extensive testing? Definitely not. The path forward requires staging environments, slow query log analysis, and performance regression testing. This isn't an in-place upgrade situation.
What to Watch
Run mysqlcheck --check-upgrade before any production migration. Audit your JSON queries for performance changes. Test replication topology changes in staging. Budget time for authentication plugin rewrites. The 127 bug fixes in 9.0.0 don't tell you which queries will break.
MySQL holds 42% of the relational database market. This migration will be messy for a lot of infrastructure teams. Oracle's 3-month Innovation release cadence means 9.1, 9.2, and 9.3 are coming. Waiting for stability might be smart. Waiting past April 2026 isn't an option.