Some of the many performance, functionality, security and other new features found in MySQL 8.
Category: MySQL 8.0
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.
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.
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.
Several functions have been added to make it easier to switch between relational data and the JSON format. The aggregate functions
JSON_OBJAGG functions allow users to convert selected data into JSON arrays and objects.
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.
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.
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.
These pluggable dynamic privileges provide an easy way to
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
Parallel Data Import
A new utility for importing data in parallel has been added to the 8.0.17 release.
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!