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.\nIn 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\u2019s unsafe to apply it in production until its final version is available for use.\n\nLatest features of MySQL 8 are-\n\n1. Transactional Data Dictionary\n\nStoring 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.\n\n2. Enhanced JSON support\n\nRanges are now supported by JSON path expressions. A lot more other optimization and performance improvements are added to the update.\n\n4. Persistent runtime configuration \n\nSET PERSIST lets runtime configuration to be reserved and survived a restart. In earlier versions alterations made with SET GLOBAL would be discarded during restart.\n\n5. Document Store \n\nDocument 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\u2019t have to give up transactional semantics.\n\nThe User can even access the data created in the Document Store through the regular MySQL SQL protocol.\n\n6. Auto_increment counter persistence over restart \n\nAuto-increment counters values will be stored in the redo log in MySQL 8.0 version and this allows retrieval upon restart.\n\n7. CTEs and Window functions \n\nMySQL has implemented CTEs (Common Table Expressions) or recursive queries along with Window functions.\n\n8. Optimizer Hints \n\nOptimizer 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.\n\n9. Better handling of hot rows and Unicode 9.0 update \n\nNew lock modifiers i.e. SKIP, LOCKED, and NOWAIT has been implemented and Unicode 9.0 support has been introduced.\n\n10. SQL roles\n\nRoles are named collections of privileges (SELECT, INSERT, etc.) that offer convenient permissions management. Roles can be created, dropped and offered to users.\n\n11. Cloud-friendly \n\nThe 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.\n\n12. Invisible indexes \n\nAn 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.\n\n13. Character sets and collations \n\nIn 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.\n\n14. UUID functions\n\nThe 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().