MySQL 8.0 is released and developers can take the sneak peak of its new features. The goal behind releasing MySQL 8.0 is making MySQL better for use for modern apps. If we conduct a debate, we will conclude that MySQL is the most popular open source DataBase Management system that has introduced latest improvements. Out of some enhancements, a few are already anticipated by popular forks, such as MariaDB and Percona.
In this post, A Software Development Company in India mentioned about the new features offered by MySQL 8.0. However, the release of the update is in DMR status (Development Milestone Release), which means it’s unsafe to apply it in production until its final version is available for use.
Latest features of MySQL 8 are-
1. Transactional Data Dictionary
Storing dictionary on disk was a good idea earlier when MySQL was introduced, but things have changed today. Dictionary will now get stored in InnoDB tables. New advancements will enhance performance and increase the resiliency of the database.
2. Enhanced JSON support
Ranges are now supported by JSON path expressions. A lot more other optimization and performance improvements are added to the update.
4. Persistent runtime configuration
SET PERSIST lets runtime configuration to be reserved and survived a restart. In earlier versions alterations made with SET GLOBAL would be discarded during restart.
5. Document Store
Document Store of MySQL allows the user to treat MySQL as a document database, with a set of NoSQL CRUD APIs for accessing data. Document store was first released in MySQL 5.7 version and today it offers consistent reads-and-writes. This feature makes the MySQL more advantageous over other NoSQL databases in which developers don’t have to give up transactional semantics.
The User can even access the data created in the Document Store through the regular MySQL SQL protocol.
6. Auto_increment counter persistence over restart
Auto-increment counters values will be stored in the redo log in MySQL 8.0 version and this allows retrieval upon restart.
7. CTEs and Window functions
MySQL has implemented CTEs (Common Table Expressions) or recursive queries along with Window functions.
8. Optimizer Hints
Optimizer hints are the better solution to the optimizer_switch variable. In older versions of MySQL, the user had to call optimizer_ switch before each query to control the optimizer behavior as it would affect each subsequent query. Now user can control optimizer behavior with hints on a per-query basis.
9. Better handling of hot rows and Unicode 9.0 update
New lock modifiers i.e. SKIP, LOCKED, and NOWAIT has been implemented and Unicode 9.0 support has been introduced.
10. SQL roles
Roles are named collections of privileges (SELECT, INSERT, etc.) that offer convenient permissions management. Roles can be created, dropped and offered to users.
The new option availability of innodb_dedicated_server, the user can now auto-detect the system memory and have MySQL adjust properly without the need of editing the configuration files.
12. Invisible indexes
An invisible index is not applied by the optimizer and looks invisible. Invisible indexes are rather maintained in the background so that they can be switched back on any moment. If a user thinks that an index is not serving any purpose, he can make it invisible, monitor performance changes and decide whether it is useful or not without dropping it.
13. Character sets and collations
In MySQL 8.0, the new default character set will be set to utf8mb4 while the default collation will be set to utf8mb4_800_ci_ai.
14. UUID functions
The User can now store UUIDs in VARBINARY (16) format which was earlier stored in CHAR(36). Three new functions have also been released to manipulate UUIDs- BIN_TO_UUID(), UUID_TO_BIN(), and IS_UUID().