MySQL Enterprise 8.0 New Features

Thursday, May 2, 2019 by Lucas Vogel

Some of the many performance, functionality, security and other new features found in MySQL 8.

Category: MySQL 8.0


ormance One of the first things you'll notice about MySQL 8 is the performance - InnoDB has undergone significant changes under the hood, and it is fast. Dimitri Kravtchuk is the MySQL Performance Architect at Oracle, and in his blog post on performance testing MySQL 5.7 and 8, he's shown version 8 to have a 2x performance increase in read/write and read-only operations over 5.7 (with his database server configuration settings displayed). It's well worth taking a read to see his findings.

source: Dimitri Kravtchuk's blog

Another significant change that helps bring about performance is the switch from the latin-1 to the utf8mb4 default character set. MySQL has been updated to support Unicode v9.0.

Resource Groups

You can now create resource groups and map threads and CPUs to split workloads according to need. Users can execute queries against specific resource groups by naming them using RESOURCE_GROUP(resource_group_name) in their queries.

Performance Schema

MySQL 8 introduces indexing to the performance_schema, giving it a 30x performance boost for schema read operations coming from monitoring and other tools.

Document Storage and JSON Support

MySQL supports two different types of JSON data - internally in the relational database, and with the X Protocol. The main difference between the two is that you can use the Document Store functionality and treat your document storage as collections, similar to what you do with Azure CosmosDB, Google Firestore, or other document storage platforms, while also having JSON support within your database schema as well.

MySQL Document Storage

One of the great features of MySQL document storage is that it lets you work side-by-side with your relational data without the need to stage a separate instance - all that remains is to configure the X plugin and connect using MySQL Shell or a connector via your programming language of choice, and you're all set.

JSON Support

Several functions have been added to make it easier to switch between relational data and the JSON format. The aggregate functions JSON_ARRAYAGG and JSON_OBJAGG functions allow users to convert selected data into JSON arrays and objects.

Multi-valued Indexes

MySQL 8.0.17 introduces multi-valued indexes, which allow for the indexing of arrays in JSON documents. These indexes optimize the MEMBER OF, JSON_CONTAINS and JSON_OVERLAPS methods.

The JSON_OVERLAPS function is a new function added in the 8.0.17 release and is a counterpart to the JSON_CONTAINS method which requires specific criteria in order to pass as true; the JSON_OVERLAPS function requires only one key value in common in order to pass as true.

Cloud Friendly

MySQL now comes with auto-detect settings within the server through the new innodb_dedicated_server option, which auto-detects and adjusts MySQL system memory automatically should the VM change size. This keeps from having to adjust the memory size for the database server within the configuration files.

MySQL now comes with a SET PERSIST feature which allows global variable persistence between MySQL restarts. This feature is helpful for common scenarios in which MySQL administrators have restricted or zero access to the local shell or filesystem when running database servers. You can find a good blog post detailing this configuration change here.

Security Improvements

SQL Roles

MySQL 8 now supports SQL roles, with mandatory_roles and activate_all_roles_on_login system variables defining mandatory roles and automatic activation of granted roles when users log in to the server.

There's also a ROLES_GRAPHML function that returns a GraphML XML document which can be used for display or for consumption by your application.

These pluggable dynamic privileges provide an easy way to GRANT and REVOKE these privileges through SQL and programmatically check if privileges are granted. This work also defines a set of new granular privileges for various aspects of what SUPER is used for today.

MySQL Shell Enhancements

User Extensions

As of version 8.0.17, the MySQL Shell now supports user-driven extensions through shell plugins, which users can create using either Python or Javascript.

Parallel Data Import

A new utility for importing data in parallel has been added to the 8.0.17 release.

util.importTable(filename[, options])

You can configure your data import process to use a specified number of threads, set data transmission limits, and do additional row operations such as replace duplicates or skip rows.

Automatic Node Provisioning

The AdminAPI has been extended in version 8.0.17 to include built-in Clone support which takes a physical snapshot of the database and transfers it over to the network to provision the server and join the replication. The MySQL team has a blog post on automatic node provisioning with a screencast demonstrating how it works.


MySQL 8.0 Enterprise is the fastest, most secure version of MySQL on the market today. Don't settle for cloud hosting with your most precious data - contact us today and let us help you find your best options for migrating into MySQL 8.0 Enterprise today!