Home Blog MySQL 90 enterprise features and migrati Database Deep Dives
MySQL 90 enterprise features and migrati March 3, 2026 8 min read

Database Deep Dives

MySQL 90 enterprise features and migrati Enterprise Guide 2026 SCALE D2C D2C Technology MySQL 90 enterprise features and migrati Enterprise Guide 2026 SCALE D2C D2C Technology

MySQL 9.0 arrived in 2024 with significant additions to its JSON capabilities, JavaScript stored programs, and vector search functionality β€” positioning MySQL to compete more directly with PostgreSQL and specialist document databases. For enterprises running MySQL in production, this guide covers every major change and the migration considerations.

MySQL 9.0: Major Themes

MySQL 9.0 continues Oracle's strategy of adding capabilities that make MySQL viable for a broader range of modern application patterns without requiring migration to other databases. The headline additions are: JavaScript stored programs (using the GraalVM JavaScript engine), significant JSON and SQL/JSON improvements, vector data type support for AI/ML workloads, and performance improvements to the InnoDB storage engine. MySQL 9.0 is also the first LTS release under the new MySQL versioning scheme.

2024
MySQL 9.0 GA release (first Innovation release of the new cycle)
8.4
Most recent LTS release; 9.x is the Innovation Track
2030
MySQL 8.4 LTS end of extended support
πŸ’‘ MySQL Versioning Change

MySQL introduced a new dual-track versioning model in 2024: the Innovation Track (9.x) receives new features in quarterly releases and is not intended for production long-term use; the LTS Track (8.4, then 9.x LTS) receives 5 years of premier support plus 3 years extended support. Enterprises should run LTS releases in production and evaluate Innovation releases for upcoming feature planning.

JavaScript Stored Programs

MySQL 9.0 introduces the ability to write stored procedures and functions in JavaScript using the GraalVM JavaScript engine (multilingual engine supporting JavaScript in MySQL). This is a significant capability addition for teams that find MySQL's traditional stored procedure language (MySQL Procedural SQL) verbose and limiting.

-- Create a JavaScript stored function in MySQL 9.0
CREATE FUNCTION calculate_discount(price DECIMAL(10,2), tier VARCHAR(20))
RETURNS DECIMAL(10,2)
LANGUAGE JAVASCRIPT AS $$
  const discountRates = { 'gold': 0.20, 'silver': 0.10, 'bronze': 0.05 };
  const rate = discountRates[tier] || 0;
  return price * (1 - rate);
$$;

JavaScript stored programs can access MySQL data using the session object and use modern JavaScript features including arrow functions, template literals, and destructuring. This makes complex data manipulation logic easier to express and test than traditional MySQL stored procedures β€” particularly for developers more comfortable with JavaScript than SQL procedural extensions.

⚠ JavaScript Stored Program Limitations

JavaScript stored programs in MySQL 9.0 run in a sandboxed GraalVM environment β€” they cannot make external network calls, access the file system, or execute arbitrary system commands. They are isolated to data access via the session object. Performance characteristics differ from native stored procedures; profile before deploying performance-critical logic in JavaScript.

Vector Data Type and AI/ML Integration

MySQL 9.0 introduces a native VECTOR data type for storing floating-point vector embeddings, alongside approximate nearest-neighbour (ANN) search functions. This positions MySQL as a viable option for similarity search workloads β€” semantic search, recommendation systems, and RAG (Retrieval-Augmented Generation) pipelines β€” without requiring a separate vector database.

-- Create a table with a vector column
CREATE TABLE product_embeddings (
  product_id INT PRIMARY KEY,
  name VARCHAR(255),
  description TEXT,
  embedding VECTOR(1536) NOT NULL,
  VECTOR INDEX idx_embedding (embedding)
);

-- Cosine similarity search
SELECT product_id, name,
  VECTOR_COSINE_DISTANCE(embedding, :query_embedding) AS distance
FROM product_embeddings
ORDER BY distance ASC
LIMIT 10;

The vector support in MySQL 9.0 is competitive with PostgreSQL's pgvector extension for many use cases, particularly for teams already running MySQL who want to avoid adding a separate vector database (Pinecone, Weaviate, Qdrant) to their stack. For very large vector datasets or advanced HNSW index configurations, dedicated vector databases still offer better performance and more flexibility.

JSON and SQL/JSON Improvements

MySQL 9.0 adds SQL/JSON standard functions that improve portability with other databases (particularly PostgreSQL 17, which added similar functions) and provide more expressive JSON querying:

New FunctionDescriptionPostgreSQL Equivalent
JSON_VALUE()Extract scalar value using JSON path->> or JSON_VALUE()
JSON_EXISTS()Test if JSON path matches@? operator
JSON_QUERY()Extract JSON object/array using pathjsonb_path_query()
JSON_TABLE() enhancementsConvert JSON to relational rows (improved)JSON_TABLE()
JSON_SCHEMA_VALID()Validate JSON against JSON Schema draftNo direct equivalent

InnoDB and Performance Improvements

MySQL 9.0 includes several InnoDB improvements targeting high-concurrency OLTP workloads: improved lock scheduling that reduces deadlock frequency under high write concurrency; adaptive buffer pool prefetching for sequential scan-heavy workloads; and improved redo log performance that reduces I/O overhead for write-intensive applications. The optimizer also gains improvements to hash join performance and better cardinality estimation for complex multi-table queries.

Migration: MySQL 5.7 to 8.4 LTS to 9.x

01
MySQL 5.7 β†’ 8.0 (Priority)
MySQL 5.7 reached end of life in October 2023. Any remaining 5.7 production instances are a critical risk. The 5.7 β†’ 8.0 migration requires careful attention to: removed SQL modes, stricter GROUP BY semantics, utf8mb4 charset migration, and deprecated features. Use mysqlcheck and the MySQL Shell upgrade checker utility before migrating.
02
MySQL 8.0 β†’ 8.4 LTS
MySQL 8.4 LTS is the recommended production version for enterprises seeking long-term support. The 8.0 β†’ 8.4 migration is straightforward β€” few breaking changes. Primary attention needed: deprecated features removed in 8.4 (check the 8.4 removal list), and replication configuration changes.
03
Evaluating 9.x Innovation Features
Run MySQL 9.x in development environments to evaluate JavaScript stored programs, vector support, and JSON improvements. Plan for migration to the 9.x LTS release when it becomes available rather than running Innovation releases in production.

MySQL 9.0 vs PostgreSQL 17 for New Projects

MySQL 9.0 Strengths
  • Simpler replication setup (Group Replication, InnoDB Cluster)
  • Wider managed service availability (AWS RDS, Azure, GCP)
  • JavaScript stored programs (if JS is preferred over PL/pgSQL)
  • Native vector support without extension
  • Lower operational complexity for read-heavy web applications
PostgreSQL 17 Strengths
  • Richer SQL standard compliance (MERGE, window functions, CTE)
  • Better JSONB performance and richer query operators
  • More advanced indexing (partial indexes, expression indexes)
  • Stronger ACID guarantees and concurrent access patterns
  • Richer extension ecosystem (PostGIS, pgvector, TimescaleDB)

Frequently Asked Questions

MySQL 9.0 is the first release in MySQL's Innovation Track (a new quarterly release model for feature-rich non-LTS releases). Its major new features are: JavaScript stored programs using GraalVM (write stored functions and procedures in JavaScript); native VECTOR data type with approximate nearest-neighbour search for AI/ML workloads; expanded SQL/JSON functions (JSON_VALUE, JSON_EXISTS, JSON_QUERY) for standard-compliant JSON querying; InnoDB performance improvements for high-concurrency OLTP; and enhanced InnoDB Cluster features for high-availability deployments.

MySQL introduced a dual-track model in 2024: the Innovation Track (9.x, quarterly releases with new features, not intended for long-term production) and the LTS Track (8.4 LTS, with 5 years premier + 3 years extended support; future 9.x LTS to follow). For production systems, run MySQL 8.4 LTS as the stable, long-term supported version. Use Innovation Track releases in development and staging to evaluate upcoming features. Do not run Innovation Track releases in production environments that require multi-year support commitments.

MySQL 9.0's JavaScript stored programs use the GraalVM JavaScript engine embedded in the MySQL server. You can write stored functions and procedures using modern JavaScript syntax (ES2020+). JavaScript functions access MySQL data through a session object API for queries and result processing. They are defined with LANGUAGE JAVASCRIPT AS $$...$$ syntax and called like regular stored procedures. Limitations include: no external network access, no filesystem access, and sandboxed execution environment. Performance is generally comparable to MySQL procedural SQL but should be profiled for performance-critical paths.

Yes. MySQL 9.0 introduces a native VECTOR data type (supporting up to 16,383 dimensions) and VECTOR INDEX for approximate nearest-neighbour (ANN) search. Built-in functions include VECTOR_COSINE_DISTANCE, VECTOR_L2_DISTANCE, and VECTOR_INNER_PRODUCT for similarity search. This makes MySQL viable for semantic search, recommendation, and RAG (Retrieval-Augmented Generation) applications without a separate vector database. For very large vector datasets or advanced HNSW index configurations, dedicated vector databases (Pinecone, Qdrant, Weaviate) may still offer better performance and flexibility.

No. MySQL 5.7 reached end of life in October 2023 and no longer receives security patches or bug fixes from Oracle. Any production systems still running MySQL 5.7 are exposed to unpatched security vulnerabilities and have no vendor support for critical bugs. Migration to MySQL 8.4 LTS is urgent for all remaining 5.7 deployments. Use the MySQL Shell Upgrade Checker utility (util.checkForServerUpgrade()) to identify compatibility issues before migrating.

InnoDB Cluster is MySQL's built-in high-availability solution, combining Group Replication (synchronous multi-primary replication), MySQL Shell (cluster management CLI), and MySQL Router (connection routing with automatic failover). It provides automated failover, data consistency guarantees (no data loss on failover with synchronous replication), and a management API for cluster operations. Use InnoDB Cluster when you need production HA without third-party tools like Galera Cluster or ProxySQL. It is particularly well-suited for cloud deployments where you manage your own MySQL rather than using a managed service with built-in HA.

MySQL is a better choice when: your team has deep MySQL operational expertise; you're building a high-volume read-heavy web application where MySQL's simpler replication has proven advantages; you're using a managed database service where MySQL has broader feature parity or lower cost; or your application stack (e.g. WordPress, Drupal, many PHP frameworks) has a strong MySQL heritage. PostgreSQL is generally the stronger choice for complex analytical queries, advanced JSON workloads, geospatial data, or applications requiring strict SQL standard compliance. For new AI/vector workloads in 2026, both have competitive native vector support.

MySQL 9.0's built-in vector support and PostgreSQL's pgvector extension are broadly comparable for common similarity search use cases. Both support cosine similarity, L2 distance, and inner product distance functions. Both support approximate nearest-neighbour indexing. Key differences: pgvector supports HNSW and IVFFlat index types with more tuning parameters; MySQL 9.0's vector index is less configurable in the initial release. PostgreSQL's pgvector benefits from a longer deployment history and more community testing at scale. For new projects on MySQL 9.0+, the built-in vector type is appropriate for most RAG and semantic search use cases without requiring pgvector or a separate vector database.

DATABASE D

Ready to Implement Database Deep Dives?

Our specialist team delivers measurable ROI from MySQL 90 enterprise features and migrati programmes for enterprise and D2C brands.

Free Audit