Summary of the MySQL 8.0.20 new features, released on April 27th, 2020.
==
== Highlights
==
* Hash Joins
* New InnoDB Doublewrite Buffer
* Index-Level Optimizer Hints
* SHOW_ROUTINE Privilege
* MySQL Shell Enhancements
* MySQL Router Enhancements
* MySQL InnoDB Cluster Enhancements
* MySQL Replication Enhancements
* MySQL NDB Cluster Enhancements
* MySQL Enterprise New Features
* Thanks to the Contributors
==
== Blog - www.dasini.net/blog/en
==
http://dasini.net/blog/2020/05/26/mysql-8-0-20-new-features-summary/
==
== Video - https://www.youtube.com/channel/UC12TulyJsJZHoCmby3Nm3WQ
==
https://youtu.be/iJp9npOJWFw
---
---
2. www.dasini.net/blog/en/
Me, Myself & I
➢
MySQL Geek
✔ Addicted to MySQL for 15+ years!
✔ Playing with databases for 20+ years
➢
MySQL Writer, Blogger and Speaker
✔ Also former : DBA, Consultant, Architect, Trainer, ...
➢
MySQL Principal Solutions Architect EMEA at Oracle
➢
Stay tuned! :
✔ Twitter : @freshdaz
✔ Blog : www.dasini.net/blog/en
Olivier DASINI
3. www.dasini.net/blog/en/
The following is just a summary of the MySQL 8.0.20 new features.
For a more thorough and exhaustive view please read the following :
➢
The MySQL 8.0.20 Maintenance Release is Generally Available
✔ https://mysqlserverteam.com/the-mysql-8-0-20-maintenance-release-is-generally-available/
➢
Changes in MySQL 8.0.20 (2020-04-27, General Availability)
✔ https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-20.html
➢
Changes in MySQL Shell 8.0.20 (2020-04-20, General Availability)
✔ https://dev.mysql.com/doc/relnotes/mysql-shell/8.0/en/news-8-0-20.html
➢
Changes in MySQL Router 8.0.20 (2020-04-27, General Availability)
✔ https://dev.mysql.com/doc/relnotes/mysql-router/en/news-8-0-20.html
➢
Changes in MySQL NDB Cluster 8.0.20 (2020-04-27, General Availability)
✔ https://dev.mysql.com/doc/relnotes/mysql-cluster/8.0/en/news-8-0-20.html
And especially the MySQL team Blogs :
➢
https://mysqlserverteam.com/
➢
https://mysqlhighavailability.com/
➢
https://mysqlrelease.com/
➢
http://insidemysql.com/
Disclaimer
5. www.dasini.net/blog/en/
Highlights
7
Hash Joins
New InnoDB Doublewrite Buffer
Index-Level Optimizer Hints
SHOW_ROUTINE Privilege
MySQL Shell Enhancements
MySQL Router Enhancements
MySQL InnoDB Cluster Enhancements
MySQL Replication Enhancements
MySQL NDB Cluster Enhancements
MySQL Enterprise New Features
Thanks to the Contributors
7. www.dasini.net/blog/en/
Hash Joins
➢
MySQL no longer use Block Nested Loop (BNL) as a join strategy
➢
This means that hash joins can now be used for :
✔ Inner equi-joins (since 8.0.18)
✔ Inner non-equi-joins
✔ Semijoins
✔ Antijoins
✔ Left outer joins
✔ Right outer joins
9
Resources
➢
Hash join in MySQL 8
✔ https://mysqlserverteam.com/hash-join-in-mysql-8/
➢
Hash Join Optimization
✔ https://dev.mysql.com/doc/refman/8.0/en/hash-joins.html
➢
WL#13377 - Add support for hash outer, anti and semi join
✔ https://dev.mysql.com/worklog/task/?id=13377
9. www.dasini.net/blog/en/
New InnoDB Doublewrite Buffer
➢
InnoDB area for the doublewrite buffer was moved from the system tablespace to
doublewrite files
✔ These files can be placed on a different storage
➢
This reduces write latency and increases throughput
11
Resources
➢
MySQL Performance : The New InnoDB Double Write Buffer in Action
✔ http://dimitrik.free.fr/blog/posts/mysql-80-perf-new-dblwr.html
➢
Doublewrite Buffer
✔ https://dev.mysql.com/doc/refman/8.0/en/innodb-doublewrite-buffer.html
➢
WL#5655 - Write double write buffer to a separate file to ensure atomic writes
✔ https://dev.mysql.com/worklog/task/?id=5655
11. www.dasini.net/blog/en/
Index-Level Optimizer Hints
➢
Index hints using the syntax of optimizer hints
✔ Function much like FORCE INDEX & IGNORE INDEX (which will be deprecated)
➢
Index-level optimizer hints :
✔ Can be put right after the SELECT | INSERT | REPLACE | UPDATE | DELETE key words
✔ Must be enclosed into a /*+ */
13
/* Traditional index hint (will be deprecated) */
SELECT title FROM film IGNORE INDEX (idx_title) INNER JOIN film_actor USING (film_id);
/* New Index-Level Optimizer Hint */
SELECT /*+ NO_INDEX(film idx_title) */ title FROM film INNER JOIN film_actor USING (film_id);
Resources
➢
MySQL 8.0.20: Index-Level Optimizer Hints
✔ https://mysql.wisborg.dk/2020/04/28/mysql-8-0-20-index-level-optimizer-hints/
➢
WL#13538 - Add index hints based on new hint infrastructure
✔ https://dev.mysql.com/worklog/task/?id=13538
13. www.dasini.net/blog/en/
SHOW_ROUTINE Privilege
➢
New dynamic server privilege which allows to view the stored procedures and
stored functions definitions & properties
➢
This enables an account to back up stored routines without requiring a broad
privilege
➢
It provides access to:
✔ The contents of the INFORMATION_SCHEMA.ROUTINES table
✔ The SHOW CREATE FUNCTION and SHOW CREATE PROCEDURE statements
✔ The SHOW FUNCTION CODE and SHOW PROCEDURE CODE statements
✔ The SHOW FUNCTION STATUS and SHOW PROCEDURE STATUS statements
15
Resources
➢
SHOW_ROUTINE
✔ https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_show-routine
➢
WL#9049 - Add a dynamic privilege for stored routine backup
✔ https://dev.mysql.com/worklog/task/?id=9049
15. www.dasini.net/blog/en/
MySQL Shell Enhancements
➢
New Compression Algorithms
✔ compression-algorithms : allows defining the compression negotiation to be done
when connection is established
✔ Supported values (for classic and X protocols) :
━
zlib
━
zstd
━
uncompressed
━
lz4 but only for X protocol
17
Resources
➢
Compression Control For MySQL Shell 8.0.20 And Later
✔ https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-compressed-connections-8020.html
➢
MySQL Shell 8.0.20 – What’s New?
✔ https://mysqlserverteam.com/mysql-shell-8-0-20-whats-new/
17. www.dasini.net/blog/en/
MySQL Router Enhancements
➢
Authenticate HTTP requests against the MySQL InnoDB Cluster metadata
✔ Allow to :
━
Manage the accounts of the http component via the MySQL Shell
━
Authenticate against accounts stored in the metadata-servers of InnoDB Cluster
━
Using the REST APIs even through communication to the metadata-servers is lost
19
Resources
➢
WL#12952 - Authenticating HTTP Component against MySQL Innodb Cluster metadata
✔ https://dev.mysql.com/worklog/task/?id=12952
➢
Changes in MySQL Router 8.0.20
✔ https://dev.mysql.com/doc/relnotes/mysql-router/en/news-8-0-20.html
19. www.dasini.net/blog/en/
InnoDB Cluster Enhancements
21
➢
Admin accounts simplification and enhancement
✔ 2 new commands to setup InnoDB Cluster, InnoDB ReplicaSet & Router admin accounts
are now available
━
setupAdminAccount : configure a MySQL user account with the necessary privileges to
administer an InnoDB cluster or InnoDB ReplicaSet
━
setupRouterAccount : create a MySQL user account or upgrade an existing account so that
it that can be used by Router to operate on an InnoDB cluster or InnoDB ReplicaSet
Resources
➢
MySQL Shell AdminAPI – What’s new in 8.0.20?
✔ https://mysqlserverteam.com/mysql-shell-adminapi-whats-new-in-8-0-20/
21. www.dasini.net/blog/en/
Replication Enhancements 1/2
➢
Binary Log Transaction Compression
✔ You can now enable binary log transaction compression
✔ Reduce the amount of I/O, disk usage & network usage
✔ Controlled by 2 variables
━
binlog_transaction_compression: enabling the feature
━
binlog_transaction_compression_level_zstd: specify the compression level
➢
Enforce Primary Key constraints on Replication
✔ Configuration option that controls whether replication channels allow the creation of
tables without primary keys
✔ New option for the CHANGE MASTER TO statement: REQUIRE_TABLE_PRIMARY_KEY_CHECK
25
24. www.dasini.net/blog/en/
NDB Cluster Enhancements
28
➢
ndb_restore improvement
✔ Possibility to divide a backup into slices and to restore it in parallel with multiple instances
of ndb_restore
✔ Should help to reduce the length of time required to restore an NDB Cluster from backup
✔ Up to 1024 slices are supported
➢
Performance improvement
✔ Many outer joins and semijoins which previously could not be pushed down to the data
nodes can now pushed
Resources
➢
ndb_restore — Restore an NDB Cluster Backup
✔ https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-restore.html
➢
num-slices
✔ https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-restore.html#option_ndb_restore_num-slices
➢
slice-id
✔ https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-restore.html#option_ndb_restore_slice-id
➢
Engine Condition Pushdown Optimization
✔ https://dev.mysql.com/doc/refman/8.0/en/condition-pushdown-optimization.html
26. www.dasini.net/blog/en/
Enterprise New Features
➢
MySQL Enterprise Backup
✔ Table-Level Recovery: allows selected tables to be restored from full backups
➢
MySQL Enterprise Authentication
✔ SASL LDAP authentication plugin now supports GSSAPI/Kerberos as an
authentication method for MySQL clients and servers on Linux
30
Resources
➢
Table-Level Recovery (TLR)
✔ https://dev.mysql.com/doc/mysql-enterprise-backup/8.0/en/restore.partial.html
➢
LDAP Authentication Methods
✔ https://dev.mysql.com/doc/refman/8.0/en/ldap-pluggable-authentication.html#ldap-pluggable-authentication-auth-methods
28. www.dasini.net/blog/en/
Thanks To The Contributors
Facebook
Yibo Cai
Jericho Rivera
Matti Sillanpää
32
If you have patches you would like to contribute you can do so from :
➢
MySQL’s GitHub repository : https://github.com/mysql
➢
Requires signing the Oracle Contributor Agreement :
https://www.oracle.com/technetwork/community/oca-486395.html
➢
MySQL 8.0.20: Thanks for the Contributions
✔ https://lefred.be/content/mysql-8-0-20-thanks-for-the-contributions/
Nick Pollett
Bruce Feng
Kamil Holubicky
Rastislav Masaryk (MySQL Router)
29. www.dasini.net/blog/en/
The Complete List Of New Features In MySQL 8.0
33
There are 250+ new features in MySQL 8.0...
https://mysqlserverteam.com/the-complete-list-of-new-features-in-mysql-8-0/