SlideShare a Scribd company logo
Dave Stokes
Community Manager
MySQL
December 04, 2019
New MySQL Features & A Peek at 2020
Subtitle
1
Safe harbor statement
The following is intended to outline our general product direction. It is intended for information
purposes only, and may not be incorporated into any contract. It is not a commitment to deliver
any material, code, or functionality, and should not be relied upon in making purchasing
decisions.
The development, release, timing, and pricing of any features or functionality described for
Oracle’s products may change and remains at the sole discretion of Oracle Corporation.
2
Me?
 Started using MySQL when it first was available
 Used in many projects -> Open Source used to low $
 Joined MySQL AB as PHP Programmer in Certification
Team
 MySQL AB -> Sun Microsystems -> Oracle
 Calpont & InfiniDB
 MySQL Community Team
3
First topic
Program agenda
1
2
3
4
5
Second topic
Third topic
Fourth topic
Fifth topic
4
Please ask questions!
Let us make this interactive!!
What do you want to see from MySQL in 2020?
MySQL Release Cycle ~ 4x times a year
In the old days it took years to get new features into MySQL – slow, costly, not great for customers
Joined CI/CD bandwagon
Much more complex software than back in the 5.5 era
Plug-ins allow fast development and the ability to shut them off!
Improved ability to improve product
Better coordination between various components (mysqlsh, InnoDB Cluster, Proxy)
Faster to get tools into hands of customers
Much better product
Vastly superior engineering rigor – Q/A Reports
5
8.0.19 – January 2020
1. Too many login attempts – lock temporarily
2. The table Statement
3. LIMITs in recursive Common Table Expressions
4. Alias on DUPLICATE KEY statements
6
Failed Login Attempts
CREATE USER 'u1'@'localhost' IDENTIFIED BY 'password‘
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME 3;
ALTER USER 'u2'@'localhost'
FAILED_LOGIN_ATTEMPTS 4
PASSWORD_LOCK_TIME UNBOUNDED;
7
TABLES & ROWS – equivalent statements
TABLE t ORDER BY c LIMIT 10 OFFSET 3;
SELECT * FROM t ORDER BY c LIMIT 10 OFFSET 3;
INSERT INTO t1 VALUES ROW(1,2,3), ROW(4,5,6), ROW(7,8,9);
INSERT INTO t1 VALUES (1,2,3), (4,5,6), (7,8,9);
8
MySQL now supports explicit table clauses and table
value constructors according to the SQL standard
Alias on DUPLICATE KEY statements
INSERT INTO t VALUES (9,5), (7,7), (11,-1) AS new
ON DUPLICATE KEY UPDATE a = a + new.a - new.b
Instead of
INSERT INTO t VALUES (9,5), (7,7), (11,-1)
ON DUPLICATE KEY UPDATE a = a + VALUES(a) - VALUES(b);
9
8.0.18 – October 2019
1. Random Passwords – CREATE USER, ALTER USER, and SET PASSWORD
2. EXPLAIN ANALYSE
3. HASH JOINS
4. Compression – added ztsd (uncompresses or zlib other options)
5. Enterprise Edition supports HashCorp Vault
10
Random Password
https://elephantdolphin.blogspot.com/2019/10/mysql-random-
password-generation.html
SQL > create user 'Foo'@'%' IDENTIFIED BY RANDOM PASSWORD;
+------+------+----------------------+
| user | host | generated password |
+------+------+----------------------+
| Foo | % | Ld]5/Fkn[Kk29/g/M;>n |
+------+------+----------------------+
1 row in set (0.0090 sec)
11
Hash Joins
https://mysqlserverteam.com/hash-join-in-mysql-8/
12
8.0.20 will have
ANTI, SEMI,
and OUTER
Hash Joins
EXPLAIN ANALYZE
https://mysqlserverteam.com/mysql-explain-analyze/
EXPLAIN ANALYZE select city.Name, Country.Name
FROM city
JOIN country ON (city.CountryCode = country.code)
WHERE country.code= 'GBR' O
RDER by city.name
LIMIT 5;
| EXPLAIN
|
| -> Limit: 5 row(s) (actual time=0.102..0.103 rows=5 loops=1)
-> Sort: city.Name, limit input to 5 row(s) per chunk (cost=80.76 rows=81) (actual
time=0.102..0.102 rows=5 loops=1)
-> Index lookup on city using CountryCode (CountryCode='GBR') (actual time=0.066..0.075
rows=81 loops=1)
|
1 row in set (0.0006 sec)
13
8.0.17 – July 2019
1. Multi-valued indexes
2. JSON Document Validation
3. Dual Password
4. Clone
5. New utf8mb4_900_bin (faster storts), no pad attribute
14
Multi-Valued Indexes
https://elephantdolphin.blogspot.com/2019/08/improved-mysql-
query-performance-with.html
CREATE INDEX data__nbr_idx ON a1( (CAST(data->'$.nbr' AS UNSIGNED ARRAY)) );
A Multi-Valued Index (MVI) is a secondary index defined on a column made up of an array of
values.
We are all used to traditional indexes where you have one value per index entry, a 1:1 ratio.
A MVI can have multiple records for each index record. So you can have multiple postal codes,
phone numbers, or other attributes from one JSON document indexed for quick access.
15
JSON Document Validation
https://elephantdolphin.blogspot.com/2019/07/json-schema-
validation-with-mysql-8017.html
CREATE TABLE `testx` (
`col` JSON,
CONSTRAINT `myage_inRange`
CHECK (JSON_SCHEMA_VALID('{"type": "object",
"properties": {
"myage": {
"type" : "number",
"minimum": 28,
"maximum": 99
}
},"required": ["myage"]
}', `col`) = 1)
);
mysql> insert into testx values('{"myage":27}');
ERROR 3819 (HY000): Check constraint 'myage_inRange' is violated.
mysql> insert into testx values('{"myage":97}');
Query OK, 1 row affected (0.02 sec)
16
You can now check for
required keys, value
types, and range check
values in your JSON
documents!
Dual Passwords
https://elephantdolphin.blogspot.com/2019/09/my-mysql-
account-has-two-passwords.html
ALTER USER 'dave'@'deardave.xyz' IDENTIFIED BY 'deardave2' RETAIN CURRENT PASSWORD;
In the mysql.user table there is now a JSON column named User_attributes that now has the secondary password:
{"additional_password": "$A$005$;H7u001bu001bu0006<`qFRUtNRxT
Zu0003Ya/iej8Az8LoXGTv.dtf9K3RdJuaLFtXZHBs3/DntG2"}
And How Do I Get Rid Of A Secondary Password
ALTER USER 'dave'@'deardave'xyz' DISCARD OLD PASSWORD
17
8.0.16 – April 2019
1. The mysql_upgrade script runs automatically
2. Constraint checks
3. MySQL C API supports asynchronous, non blocking communications with server
4. EXPLAIN FORMAT=TREE
18
8.0.14/.15 – January/February 2019
1. Dual Passwords
2. Admin TCP/IP port (default 33062), no limit on number of connections, requires
SERVICE_CONNETION_ADMIN priviledge
3. JSON_ARRAYAGG() and JSON_OBJECTAGG() added to Window Functions
4. SET PERSIST and SET PERSIST ONLY
5. LATERAL derived tables
19
8.0.11 – till now
1. Data Dictionary
2. Histograms
3. Resource Groups
4. CATS
5. Better JSON support
6. UTF8MB4
7. Improved InnoDB Cluster
8. Improved X DevAPI / MySQL as NoSQL
9. New temporary table engine
10. Better performance
20
A Much Better product with more flexibility
 Better SQL
Windowing Functions
CTEs
Derived tables
Check Constraints
 Better NoSQL
JSON validation
X DevAPI
JSON Support
JSON_TABLE for treating NoSQL data as SQL
21
22
2020 -> 8.0.19, .20, .21, .22
So what do you want in the next releases?
23
Dave’s very unofficial private ideas of what you will see in the next
releases of MySQL in 2020 not blessed or endorsed by Oracle,
MySQL, or anybody else but me.
1. Enterprise Edition will be doing a lot more with security (and customers are paying for it).
2. Much more improvements in:
1. JSON Support
2. GIS
3. More functionality in InnoDB cluster following consistency levels in latest releases, clone plug-in
4. Big improvements in X DevAPI
5. More features in the new shell
6. Still a few mutexes to eliminate, better performance
7. More emphasis on Kuberneties-ish deployments despite not being a great database environment
8. DBAs are going to be harder to find, but scope of job will widen
9. Bad data architecture will start to be seen as a problem: Digital Data Landfill
10. ?
24
Using JSON & MYSQL
My book is frequently on sale at Amazon
25
Thank you
Dave Stokes
MySQL Community Manager
MySQL
David.Stokes @ Oracle.com
26

More Related Content

What's hot (20)

PPT
Core data optimization
Gagan Vishal Mishra
 
PPTX
Data Warehouse and Business Intelligence - Recipe 7 - A messaging system for ...
Massimo Cenci
 
PDF
Json within a relational database
Dave Stokes
 
DOCX
Multiple files single target single interface
Dharmaraj Borse
 
PPTX
Confoo 2021 - MySQL Indexes & Histograms
Dave Stokes
 
DOCX
ANDROID USING SQLITE DATABASE ADMINISTRATORS ~HMFTJ
LGS, GBHS&IC, University Of South-Asia, TARA-Technologies
 
PPTX
ata Warehouse and Business Intelligence - Recipe 7 - A messaging system for O...
Massimo Cenci
 
PPTX
MySQL Replication Evolution -- Confoo Montreal 2017
Dave Stokes
 
PPTX
Data Warehouse and Business Intelligence - Recipe 3
Massimo Cenci
 
PPTX
Recipes 8 of Data Warehouse and Business Intelligence - Naming convention tec...
Massimo Cenci
 
PPTX
Data Warehouse and Business Intelligence - Recipe 1
Massimo Cenci
 
PPT
Oracle All-in-One - how to send mail with attach using oracle pl/sql
Massimo Cenci
 
DOCX
OBIEE 11g installation steps
Dharmaraj Borse
 
PPTX
Validating JSON -- Percona Live 2021 presentation
Dave Stokes
 
PDF
Designing Database Solutions for Microsoft SQL Server 2012 2012 Microsoft 70-...
ChristopherBow2
 
PDF
Advanced MySQL Query Optimizations
Dave Stokes
 
PPT
Recipe 14 - Build a Staging Area for an Oracle Data Warehouse (2)
Massimo Cenci
 
PPTX
Data Warehouse and Business Intelligence - Recipe 4 - Staging area - how to v...
Massimo Cenci
 
PDF
DAC
Ram Reddy
 
PDF
SQL2SPARQL
Alexandru Dron
 
Core data optimization
Gagan Vishal Mishra
 
Data Warehouse and Business Intelligence - Recipe 7 - A messaging system for ...
Massimo Cenci
 
Json within a relational database
Dave Stokes
 
Multiple files single target single interface
Dharmaraj Borse
 
Confoo 2021 - MySQL Indexes & Histograms
Dave Stokes
 
ANDROID USING SQLITE DATABASE ADMINISTRATORS ~HMFTJ
LGS, GBHS&IC, University Of South-Asia, TARA-Technologies
 
ata Warehouse and Business Intelligence - Recipe 7 - A messaging system for O...
Massimo Cenci
 
MySQL Replication Evolution -- Confoo Montreal 2017
Dave Stokes
 
Data Warehouse and Business Intelligence - Recipe 3
Massimo Cenci
 
Recipes 8 of Data Warehouse and Business Intelligence - Naming convention tec...
Massimo Cenci
 
Data Warehouse and Business Intelligence - Recipe 1
Massimo Cenci
 
Oracle All-in-One - how to send mail with attach using oracle pl/sql
Massimo Cenci
 
OBIEE 11g installation steps
Dharmaraj Borse
 
Validating JSON -- Percona Live 2021 presentation
Dave Stokes
 
Designing Database Solutions for Microsoft SQL Server 2012 2012 Microsoft 70-...
ChristopherBow2
 
Advanced MySQL Query Optimizations
Dave Stokes
 
Recipe 14 - Build a Staging Area for an Oracle Data Warehouse (2)
Massimo Cenci
 
Data Warehouse and Business Intelligence - Recipe 4 - Staging area - how to v...
Massimo Cenci
 
SQL2SPARQL
Alexandru Dron
 

Similar to MySQL New Features -- Sunshine PHP 2020 Presentation (20)

PPTX
MySQL 8.0 from December London Open Source Database Meetup
Dave Stokes
 
PPTX
Confoo 2021 -- MySQL New Features
Dave Stokes
 
PDF
PHP Detroit -- MySQL 8 A New Beginning (updated presentation)
Dave Stokes
 
PPTX
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
Dave Stokes
 
PDF
MySQL 8: Ready for Prime Time
Arnab Ray
 
PDF
MySQL Goes to 8! FOSDEM 2020 Database Track, January 2nd, 2020
Geir Høydalsvik
 
PDF
MySQL 8.0 New Features -- September 27th presentation for Open Source Summit
Dave Stokes
 
PPTX
MySQL 8 - UKOUG Techfest Brighton December 2nd, 2019
Dave Stokes
 
PDF
MySQL : State of the Dolphin May 2019
Frederic Descamps
 
PPTX
Linuxfest Northwest 2022 - MySQL 8.0 Nre Features
Dave Stokes
 
PPTX
MySQL 8.0 Featured for Developers
Dave Stokes
 
PPTX
2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...
Geir Høydalsvik
 
PDF
Oracle Open World Middle East - MySQL 8 a Giant Leap for SQL
Frederic Descamps
 
PDF
20180420 hk-the powerofmysql8
Ivan Ma
 
PDF
Cloud native - Why to use MySQL 8.0 and how to use it on oci with MDS
Frederic Descamps
 
PDF
What's New in MySQL 8.0 @ HKOSC 2017
Ivan Ma
 
PDF
RivieraJUG - MySQL 8.0 - What's new for developers.pdf
Frederic Descamps
 
PDF
Midwest PHP Presentation - New MSQL Features
Dave Stokes
 
PDF
01 upgrade to my sql8
Ted Wennmark
 
PDF
Upgrade to MySQL 8.0!
Ted Wennmark
 
MySQL 8.0 from December London Open Source Database Meetup
Dave Stokes
 
Confoo 2021 -- MySQL New Features
Dave Stokes
 
PHP Detroit -- MySQL 8 A New Beginning (updated presentation)
Dave Stokes
 
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
Dave Stokes
 
MySQL 8: Ready for Prime Time
Arnab Ray
 
MySQL Goes to 8! FOSDEM 2020 Database Track, January 2nd, 2020
Geir Høydalsvik
 
MySQL 8.0 New Features -- September 27th presentation for Open Source Summit
Dave Stokes
 
MySQL 8 - UKOUG Techfest Brighton December 2nd, 2019
Dave Stokes
 
MySQL : State of the Dolphin May 2019
Frederic Descamps
 
Linuxfest Northwest 2022 - MySQL 8.0 Nre Features
Dave Stokes
 
MySQL 8.0 Featured for Developers
Dave Stokes
 
2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...
Geir Høydalsvik
 
Oracle Open World Middle East - MySQL 8 a Giant Leap for SQL
Frederic Descamps
 
20180420 hk-the powerofmysql8
Ivan Ma
 
Cloud native - Why to use MySQL 8.0 and how to use it on oci with MDS
Frederic Descamps
 
What's New in MySQL 8.0 @ HKOSC 2017
Ivan Ma
 
RivieraJUG - MySQL 8.0 - What's new for developers.pdf
Frederic Descamps
 
Midwest PHP Presentation - New MSQL Features
Dave Stokes
 
01 upgrade to my sql8
Ted Wennmark
 
Upgrade to MySQL 8.0!
Ted Wennmark
 
Ad

More from Dave Stokes (17)

PDF
Database basics for new-ish developers -- All Things Open October 18th 2021
Dave Stokes
 
PDF
Php &amp; my sql - how do pdo, mysq-li, and x devapi do what they do
Dave Stokes
 
PDF
Longhorn PHP - MySQL Indexes, Histograms, Locking Options, and Other Ways to ...
Dave Stokes
 
PDF
Open Source World June '21 -- JSON Within a Relational Database
Dave Stokes
 
PDF
Data Love Conference - Window Functions for Database Analytics
Dave Stokes
 
PDF
Datacon LA - MySQL without the SQL - Oh my!
Dave Stokes
 
PDF
MySQL 8.0 Operational Changes
Dave Stokes
 
PPTX
A Step by Step Introduction to the MySQL Document Store
Dave Stokes
 
PPTX
Discover The Power of NoSQL + MySQL with MySQL
Dave Stokes
 
PPTX
Discover the Power of the NoSQL + SQL with MySQL
Dave Stokes
 
PDF
Confoo 202 - MySQL Group Replication and ReplicaSet
Dave Stokes
 
PPTX
PHP UK 2020 Tutorial: MySQL Indexes, Histograms And other ways To Speed Up Yo...
Dave Stokes
 
PPTX
Upgrading to MySQL 8.0 webinar slides November 27th, 2019
Dave Stokes
 
PDF
Windowing Functions - Little Rock Tech Fest 2019
Dave Stokes
 
PDF
Oracle CodeOne Foreign Keys Support in MySQL 8.0
Dave Stokes
 
PDF
MySQL Without the SQL - Oh My! August 2nd presentation at Mid Atlantic Develo...
Dave Stokes
 
PDF
MySQL 8.0 Graphical Information System - Mid Atlantic Developers Conference
Dave Stokes
 
Database basics for new-ish developers -- All Things Open October 18th 2021
Dave Stokes
 
Php &amp; my sql - how do pdo, mysq-li, and x devapi do what they do
Dave Stokes
 
Longhorn PHP - MySQL Indexes, Histograms, Locking Options, and Other Ways to ...
Dave Stokes
 
Open Source World June '21 -- JSON Within a Relational Database
Dave Stokes
 
Data Love Conference - Window Functions for Database Analytics
Dave Stokes
 
Datacon LA - MySQL without the SQL - Oh my!
Dave Stokes
 
MySQL 8.0 Operational Changes
Dave Stokes
 
A Step by Step Introduction to the MySQL Document Store
Dave Stokes
 
Discover The Power of NoSQL + MySQL with MySQL
Dave Stokes
 
Discover the Power of the NoSQL + SQL with MySQL
Dave Stokes
 
Confoo 202 - MySQL Group Replication and ReplicaSet
Dave Stokes
 
PHP UK 2020 Tutorial: MySQL Indexes, Histograms And other ways To Speed Up Yo...
Dave Stokes
 
Upgrading to MySQL 8.0 webinar slides November 27th, 2019
Dave Stokes
 
Windowing Functions - Little Rock Tech Fest 2019
Dave Stokes
 
Oracle CodeOne Foreign Keys Support in MySQL 8.0
Dave Stokes
 
MySQL Without the SQL - Oh My! August 2nd presentation at Mid Atlantic Develo...
Dave Stokes
 
MySQL 8.0 Graphical Information System - Mid Atlantic Developers Conference
Dave Stokes
 
Ad

Recently uploaded (20)

PPT
Agilent Optoelectronic Solutions for Mobile Application
andreashenniger2
 
PPTX
04 Output 1 Instruments & Tools (3).pptx
GEDYIONGebre
 
PPTX
ONLINE BIRTH CERTIFICATE APPLICATION SYSYTEM PPT.pptx
ShyamasreeDutta
 
PPTX
sajflsajfljsdfljslfjslfsdfas;fdsfksadfjlsdflkjslgfs;lfjlsajfl;sajfasfd.pptx
theknightme
 
PDF
Apple_Environmental_Progress_Report_2025.pdf
yiukwong
 
PDF
𝐁𝐔𝐊𝐓𝐈 𝐊𝐄𝐌𝐄𝐍𝐀𝐍𝐆𝐀𝐍 𝐊𝐈𝐏𝐄𝐑𝟒𝐃 𝐇𝐀𝐑𝐈 𝐈𝐍𝐈 𝟐𝟎𝟐𝟓
hokimamad0
 
PPTX
原版西班牙莱昂大学毕业证(León毕业证书)如何办理
Taqyea
 
PPTX
internet básico presentacion es una red global
70965857
 
PPTX
法国巴黎第二大学本科毕业证{Paris 2学费发票Paris 2成绩单}办理方法
Taqyea
 
PPT
introduction to networking with basics coverage
RamananMuthukrishnan
 
PDF
BRKACI-1003 ACI Brownfield Migration - Real World Experiences and Best Practi...
fcesargonca
 
PDF
AI_MOD_1.pdf artificial intelligence notes
shreyarrce
 
PDF
BRKACI-1001 - Your First 7 Days of ACI.pdf
fcesargonca
 
PPTX
Lec15_Mutability Immutability-converted.pptx
khanjahanzaib1
 
PPTX
Optimization_Techniques_ML_Presentation.pptx
farispalayi
 
PDF
Build Fast, Scale Faster: Milvus vs. Zilliz Cloud for Production-Ready AI
Zilliz
 
PDF
Azure_DevOps introduction for CI/CD and Agile
henrymails
 
DOCX
Custom vs. Off-the-Shelf Banking Software
KristenCarter35
 
PPTX
一比一原版(SUNY-Albany毕业证)纽约州立大学奥尔巴尼分校毕业证如何办理
Taqyea
 
PPTX
Softuni - Psychology of entrepreneurship
Kalin Karakehayov
 
Agilent Optoelectronic Solutions for Mobile Application
andreashenniger2
 
04 Output 1 Instruments & Tools (3).pptx
GEDYIONGebre
 
ONLINE BIRTH CERTIFICATE APPLICATION SYSYTEM PPT.pptx
ShyamasreeDutta
 
sajflsajfljsdfljslfjslfsdfas;fdsfksadfjlsdflkjslgfs;lfjlsajfl;sajfasfd.pptx
theknightme
 
Apple_Environmental_Progress_Report_2025.pdf
yiukwong
 
𝐁𝐔𝐊𝐓𝐈 𝐊𝐄𝐌𝐄𝐍𝐀𝐍𝐆𝐀𝐍 𝐊𝐈𝐏𝐄𝐑𝟒𝐃 𝐇𝐀𝐑𝐈 𝐈𝐍𝐈 𝟐𝟎𝟐𝟓
hokimamad0
 
原版西班牙莱昂大学毕业证(León毕业证书)如何办理
Taqyea
 
internet básico presentacion es una red global
70965857
 
法国巴黎第二大学本科毕业证{Paris 2学费发票Paris 2成绩单}办理方法
Taqyea
 
introduction to networking with basics coverage
RamananMuthukrishnan
 
BRKACI-1003 ACI Brownfield Migration - Real World Experiences and Best Practi...
fcesargonca
 
AI_MOD_1.pdf artificial intelligence notes
shreyarrce
 
BRKACI-1001 - Your First 7 Days of ACI.pdf
fcesargonca
 
Lec15_Mutability Immutability-converted.pptx
khanjahanzaib1
 
Optimization_Techniques_ML_Presentation.pptx
farispalayi
 
Build Fast, Scale Faster: Milvus vs. Zilliz Cloud for Production-Ready AI
Zilliz
 
Azure_DevOps introduction for CI/CD and Agile
henrymails
 
Custom vs. Off-the-Shelf Banking Software
KristenCarter35
 
一比一原版(SUNY-Albany毕业证)纽约州立大学奥尔巴尼分校毕业证如何办理
Taqyea
 
Softuni - Psychology of entrepreneurship
Kalin Karakehayov
 

MySQL New Features -- Sunshine PHP 2020 Presentation

  • 1. Dave Stokes Community Manager MySQL December 04, 2019 New MySQL Features & A Peek at 2020 Subtitle 1
  • 2. Safe harbor statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, timing, and pricing of any features or functionality described for Oracle’s products may change and remains at the sole discretion of Oracle Corporation. 2
  • 3. Me?  Started using MySQL when it first was available  Used in many projects -> Open Source used to low $  Joined MySQL AB as PHP Programmer in Certification Team  MySQL AB -> Sun Microsystems -> Oracle  Calpont & InfiniDB  MySQL Community Team 3
  • 4. First topic Program agenda 1 2 3 4 5 Second topic Third topic Fourth topic Fifth topic 4 Please ask questions! Let us make this interactive!! What do you want to see from MySQL in 2020?
  • 5. MySQL Release Cycle ~ 4x times a year In the old days it took years to get new features into MySQL – slow, costly, not great for customers Joined CI/CD bandwagon Much more complex software than back in the 5.5 era Plug-ins allow fast development and the ability to shut them off! Improved ability to improve product Better coordination between various components (mysqlsh, InnoDB Cluster, Proxy) Faster to get tools into hands of customers Much better product Vastly superior engineering rigor – Q/A Reports 5
  • 6. 8.0.19 – January 2020 1. Too many login attempts – lock temporarily 2. The table Statement 3. LIMITs in recursive Common Table Expressions 4. Alias on DUPLICATE KEY statements 6
  • 7. Failed Login Attempts CREATE USER 'u1'@'localhost' IDENTIFIED BY 'password‘ FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 3; ALTER USER 'u2'@'localhost' FAILED_LOGIN_ATTEMPTS 4 PASSWORD_LOCK_TIME UNBOUNDED; 7
  • 8. TABLES & ROWS – equivalent statements TABLE t ORDER BY c LIMIT 10 OFFSET 3; SELECT * FROM t ORDER BY c LIMIT 10 OFFSET 3; INSERT INTO t1 VALUES ROW(1,2,3), ROW(4,5,6), ROW(7,8,9); INSERT INTO t1 VALUES (1,2,3), (4,5,6), (7,8,9); 8 MySQL now supports explicit table clauses and table value constructors according to the SQL standard
  • 9. Alias on DUPLICATE KEY statements INSERT INTO t VALUES (9,5), (7,7), (11,-1) AS new ON DUPLICATE KEY UPDATE a = a + new.a - new.b Instead of INSERT INTO t VALUES (9,5), (7,7), (11,-1) ON DUPLICATE KEY UPDATE a = a + VALUES(a) - VALUES(b); 9
  • 10. 8.0.18 – October 2019 1. Random Passwords – CREATE USER, ALTER USER, and SET PASSWORD 2. EXPLAIN ANALYSE 3. HASH JOINS 4. Compression – added ztsd (uncompresses or zlib other options) 5. Enterprise Edition supports HashCorp Vault 10
  • 11. Random Password https://elephantdolphin.blogspot.com/2019/10/mysql-random- password-generation.html SQL > create user 'Foo'@'%' IDENTIFIED BY RANDOM PASSWORD; +------+------+----------------------+ | user | host | generated password | +------+------+----------------------+ | Foo | % | Ld]5/Fkn[Kk29/g/M;>n | +------+------+----------------------+ 1 row in set (0.0090 sec) 11
  • 13. EXPLAIN ANALYZE https://mysqlserverteam.com/mysql-explain-analyze/ EXPLAIN ANALYZE select city.Name, Country.Name FROM city JOIN country ON (city.CountryCode = country.code) WHERE country.code= 'GBR' O RDER by city.name LIMIT 5; | EXPLAIN | | -> Limit: 5 row(s) (actual time=0.102..0.103 rows=5 loops=1) -> Sort: city.Name, limit input to 5 row(s) per chunk (cost=80.76 rows=81) (actual time=0.102..0.102 rows=5 loops=1) -> Index lookup on city using CountryCode (CountryCode='GBR') (actual time=0.066..0.075 rows=81 loops=1) | 1 row in set (0.0006 sec) 13
  • 14. 8.0.17 – July 2019 1. Multi-valued indexes 2. JSON Document Validation 3. Dual Password 4. Clone 5. New utf8mb4_900_bin (faster storts), no pad attribute 14
  • 15. Multi-Valued Indexes https://elephantdolphin.blogspot.com/2019/08/improved-mysql- query-performance-with.html CREATE INDEX data__nbr_idx ON a1( (CAST(data->'$.nbr' AS UNSIGNED ARRAY)) ); A Multi-Valued Index (MVI) is a secondary index defined on a column made up of an array of values. We are all used to traditional indexes where you have one value per index entry, a 1:1 ratio. A MVI can have multiple records for each index record. So you can have multiple postal codes, phone numbers, or other attributes from one JSON document indexed for quick access. 15
  • 16. JSON Document Validation https://elephantdolphin.blogspot.com/2019/07/json-schema- validation-with-mysql-8017.html CREATE TABLE `testx` ( `col` JSON, CONSTRAINT `myage_inRange` CHECK (JSON_SCHEMA_VALID('{"type": "object", "properties": { "myage": { "type" : "number", "minimum": 28, "maximum": 99 } },"required": ["myage"] }', `col`) = 1) ); mysql> insert into testx values('{"myage":27}'); ERROR 3819 (HY000): Check constraint 'myage_inRange' is violated. mysql> insert into testx values('{"myage":97}'); Query OK, 1 row affected (0.02 sec) 16 You can now check for required keys, value types, and range check values in your JSON documents!
  • 17. Dual Passwords https://elephantdolphin.blogspot.com/2019/09/my-mysql- account-has-two-passwords.html ALTER USER 'dave'@'deardave.xyz' IDENTIFIED BY 'deardave2' RETAIN CURRENT PASSWORD; In the mysql.user table there is now a JSON column named User_attributes that now has the secondary password: {"additional_password": "$A$005$;H7u001bu001bu0006<`qFRUtNRxT Zu0003Ya/iej8Az8LoXGTv.dtf9K3RdJuaLFtXZHBs3/DntG2"} And How Do I Get Rid Of A Secondary Password ALTER USER 'dave'@'deardave'xyz' DISCARD OLD PASSWORD 17
  • 18. 8.0.16 – April 2019 1. The mysql_upgrade script runs automatically 2. Constraint checks 3. MySQL C API supports asynchronous, non blocking communications with server 4. EXPLAIN FORMAT=TREE 18
  • 19. 8.0.14/.15 – January/February 2019 1. Dual Passwords 2. Admin TCP/IP port (default 33062), no limit on number of connections, requires SERVICE_CONNETION_ADMIN priviledge 3. JSON_ARRAYAGG() and JSON_OBJECTAGG() added to Window Functions 4. SET PERSIST and SET PERSIST ONLY 5. LATERAL derived tables 19
  • 20. 8.0.11 – till now 1. Data Dictionary 2. Histograms 3. Resource Groups 4. CATS 5. Better JSON support 6. UTF8MB4 7. Improved InnoDB Cluster 8. Improved X DevAPI / MySQL as NoSQL 9. New temporary table engine 10. Better performance 20
  • 21. A Much Better product with more flexibility  Better SQL Windowing Functions CTEs Derived tables Check Constraints  Better NoSQL JSON validation X DevAPI JSON Support JSON_TABLE for treating NoSQL data as SQL 21
  • 22. 22
  • 23. 2020 -> 8.0.19, .20, .21, .22 So what do you want in the next releases? 23
  • 24. Dave’s very unofficial private ideas of what you will see in the next releases of MySQL in 2020 not blessed or endorsed by Oracle, MySQL, or anybody else but me. 1. Enterprise Edition will be doing a lot more with security (and customers are paying for it). 2. Much more improvements in: 1. JSON Support 2. GIS 3. More functionality in InnoDB cluster following consistency levels in latest releases, clone plug-in 4. Big improvements in X DevAPI 5. More features in the new shell 6. Still a few mutexes to eliminate, better performance 7. More emphasis on Kuberneties-ish deployments despite not being a great database environment 8. DBAs are going to be harder to find, but scope of job will widen 9. Bad data architecture will start to be seen as a problem: Digital Data Landfill 10. ? 24
  • 25. Using JSON & MYSQL My book is frequently on sale at Amazon 25
  • 26. Thank you Dave Stokes MySQL Community Manager MySQL David.Stokes @ Oracle.com 26