MySQL has been evolving rapidly, and with the recent release of MySQL 8.4, there’s a lot to unpack. While MySQL 8.4 is officially dubbed a Long-Term Support (LTS) release, many features introduced between 8.0 and 8.4 have now matured into defaults or become deprecated/removed.
This blog provides a comprehensive, side-by-side comparison of the key differences between MySQL 8.0 and 8.4. Whether you’re planning an upgrade or just curious about the evolution of MySQL, this guide simplifies the technicalities to help you make informed decisions.
Release date: April 2024
LTS designation: MySQL 8.4.0 is designated as a Long Term Support (LTS) release.
Support duration:
Why it matters: mysql_native_password is deprecated in 8.0.34 and will be removed entirely in MySQL 9.0.0. If you still rely on it, it’s time to switch.
Why it matters: This aligns with modern standards and inclusivity efforts while also making replication roles clearer.
Why it matters: This enforces stricter relational integrity. The older behavior is deprecated and controlled by restrict_fk_on_non_standard_key (default ON). Adjusting your schema accordingly is recommended.
Why it matters: You must remove AUTO_INCREMENT from FLOAT/DOUBLE columns or convert them to integer types before upgrading.
Why it matters: The new method offers more control and observability.
Why it matters: This improves security and control over object ownership.
Why it matters: Turning this off reduces core file sizes by excluding large InnoDB buffer pool data.
Why it matters: No buffering of index changes can lead to faster writes, especially on SSDs.
Why it matters: Depending on your workload, it may be beneficial to enable or disable AHI dynamically to enhance query performance. Since AHI does not provide benefits for all workload types, it’s recommended to perform benchmarking with both settings enabled and disabled using realistic workload scenarios to evaluate its impact.
Why it matters: This provides predictable and consistent doublewrite behavior.
Why it matters: Reduces OS caching, potentially improving performance.
Why it matters: Reflects modern hardware capabilities like SSDs and RAID.
Why it matters: Larger buffers reduce the frequency of log writes, improving performance.
Why it matters: Dynamically adjusts based on server memory, balancing performance and stability.
Why it matters: Keeps statistics up-to-date automatically, improving query optimization.
Why it matters: Reduces failover/reconnect wait time.
Why it matters: Improves tracking and auditing of replication transactions.
Why it matters: Automatically optimizes purge thread usage based on CPU availability, helping balance purge performance and overall system load.
MySQL 8.4 is a significant step forward, not just in features but also in usability, performance, and security. While many of these changes enhance the database’s behavior by default, they also require careful planning, especially during upgrades.
Test thoroughly and consider enabling or disabling features based on your workload and infrastructure. With MySQL 9.0 on the horizon, transitioning your systems to MySQL 8.4 standards will put you ahead of the curve.
To thoroughly test your MySQL upgrade path, you can take advantage of two powerful tools: pt-upgrade and checkForServerUpgrade. These tools help identify potential issues, such as query plan changes or deprecated features that could affect performance or functionality after an upgrade. For a detailed walkthrough on how to use them effectively, refer to this helpful blog post: Two Extremely Useful Tools (pt-upgrade and checkForServerUpgrade) for MySQL Upgrade Testing.
Resources
RELATED POSTS