Databases 10 min read

MySQL 8.0 Version History and New Features

An overview of MySQL 8.0’s release timeline, including major GA versions, and a detailed summary of its new capabilities such as transactional data dictionary, atomic DDL, enhanced security, role support, InnoDB improvements, JSON enhancements, optimizer extensions, backup lock, connection management, and other performance and management features.

Architecture Digest
Architecture Digest
Architecture Digest
MySQL 8.0 Version History and New Features

MySQL 8.0 version history

2016-09-12: First development milestone (DM) version 8.0.0 released.

2018-04-19: First General Availability (GA) version, 8.0.11 released.

2018-07-27: GA version 8.0.12 released.

2018-10-22: GA version 8.0.13 released.

2019-01-21: GA version 8.0.14 released.

2019-02-01: Latest GA version 8.0.15 released.

Upcoming GA versions: 8.0.16, 8.0.17.

From this we can see that a new version appears roughly every 1–3 months.

New features in MySQL 8.0

Transactional data dictionary stored in InnoDB tables under the mysql schema, invisible to users; a dedicated tablespace mysql.idb holds the dictionary.

Atomic DDL enabled by the transactional data dictionary, allowing DDL statements to be committed or rolled back as a single transaction.

Improved security and account management: system tables in the mysql schema are now InnoDB (previously MyISAM), providing atomicity for multi‑user operations.

New default authentication plugin caching_sha2_password , more secure and performant than mysql_native_password .

Role support.

Stricter password management with password history and reuse policies.

Resource management with resource groups to allocate threads to specific groups.

InnoDB enhancements, including reliable auto‑increment counters written to redo log and checkpoint.

Index corruption markers written to redo log and persisted at checkpoint.

InnoDB memcached plugin now supports multi‑get and range queries.

Dynamic variable innodb_deadlock_detect to disable deadlock detection in high‑concurrency environments.

New information_schema.innodb_cached_indexes table reporting cached index pages per buffer pool.

InnoDB temporary tables now created in a shared temporary tablespace.

Redo and undo log encryption support.

Lock reads SELECT ... FOR SHARE and SELECT ... FOR UPDATE now support NOWAIT and SKIP LOCKED options.

InnoDB uses MySQL’s data dictionary instead of its own engine‑specific dictionary.

System tables and data dictionary tables in the mysql schema are stored in a separate InnoDB tablespace file mysql.ibd .

Character set default changed from latin1 to utf8mb4, with new collations such as utf8mb4_ja_0900_as_cs .

JSON enhancements: default values can now be expressions for BLOB, TEXT, GEOMETRY, JSON types.

Optimizer improvements: support for Common Table Expressions (WITH clause), window functions (RANK(), LAG(), NTILE(), etc.), lateral derived tables, regular expression support, and internal temporary tables stored using the TempTable engine.

Variables internal_tmp_mem_storage_engine and tmp_table_max_ram control the engine used for internal temporary tables and the RAM threshold before spilling to disk.

Logging: error log rewritten as a component with optional JSON logger, configurable via log_error_services .

Backup lock: new LOCK INSTANCE FOR BACKUP and UNLOCK INSTANCE statements allow DML during online backups, requiring BACKUP_ADMIN privilege.

Replication enhancements: partial JSON updates in binlog when using STATEMENT format or binlog_row_value_options=PARTIAL_JSON .

Connection management: dedicated admin port (default 33062) with no connection limit, configurable via admin_address and admin_port , requiring SERVICE_CONNECTION_ADMIN privilege; thread model selectable via create_admin_listener_thread .

Example commands to view admin variables:

mysql> show variables like 'admin_%';
+---------------+---------------+
| Variable_name | Value         |
+---------------+---------------+
| admin_address | 192.168.1.187 // server IP, not client IP, must be set |
| admin_port    | 33062         |
+---------------+---------------+
2 rows in set (0.00 sec)

To simulate a full‑connection scenario, reduce max_connections and observe the behavior of the admin port, which remains unrestricted.

mysql> set global max_connections=30;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 30    |
+-----------------+-------+
1 row in set (0.00 sec)
nohup mysql -h192.168.1.187 -P3306 -uroot -p****** -NBe 'select sleep(2000)' &
[Warning] Using a password on the command line interface can be insecure.
ERROR 1040 (HY000): Too many connections

When the regular port is saturated, the admin port can still be used for management without connection limits.

InnoDBMySQLsecurityFeaturesoptimizer8.0version history
Architecture Digest
Written by

Architecture Digest

Focusing on Java backend development, covering application architecture from top-tier internet companies (high availability, high performance, high stability), big data, machine learning, Java architecture, and other popular fields.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.