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

PDF
MySQL Replication Update - DEbconf 2020 presentation
PPTX
cPanel now supports MySQL 8.0 - My Top Seven Features
PDF
JavaScript and Friends August 20th, 20201 -- MySQL Shell and JavaScript
PDF
MySQL Router REST API
PDF
Oracle Developer Live: Deploying MySQL InnoDB Cluster on OCI with Terraform
PPT
Recipe 14 of Data Warehouse and Business Intelligence - Build a Staging Area ...
PPTX
Open Source 1010 and Quest InSync presentations March 30th, 2021 on MySQL Ind...
PDF
Dutch PHP Conference 2021 - MySQL Indexes and Histograms
MySQL Replication Update - DEbconf 2020 presentation
cPanel now supports MySQL 8.0 - My Top Seven Features
JavaScript and Friends August 20th, 20201 -- MySQL Shell and JavaScript
MySQL Router REST API
Oracle Developer Live: Deploying MySQL InnoDB Cluster on OCI with Terraform
Recipe 14 of Data Warehouse and Business Intelligence - Build a Staging Area ...
Open Source 1010 and Quest InSync presentations March 30th, 2021 on MySQL Ind...
Dutch PHP Conference 2021 - MySQL Indexes and Histograms

What's hot (20)

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

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

PPTX
MySQL 8.0 from December London Open Source Database Meetup
PPTX
Confoo 2021 -- MySQL New Features
PPTX
Sql interview question part 4
PPTX
Ebook4
PPTX
Sql interview question part 4
PPT
PHP 5 + MySQL 5 = A Perfect 10
PDF
MySQL 8.0 New Features -- September 27th presentation for Open Source Summit
PPTX
War of the Indices- SQL vs. Oracle
PPTX
Linuxfest Northwest 2022 - MySQL 8.0 Nre Features
PDF
NoSQL and MySQL: News about JSON
PPTX
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
PPTX
Ebook6
PPTX
Sql interview-question-part-6
PPTX
Ebook6
PPTX
Sql interview-question-part-6
PPTX
Sql interview question part 6
PPTX
MySQL 8.0 Featured for Developers
PPTX
Ebook11
PPTX
Web Cloud Computing SQL Server - Ferrara University
PDF
Python and MySQL 8.0 Document Store
MySQL 8.0 from December London Open Source Database Meetup
Confoo 2021 -- MySQL New Features
Sql interview question part 4
Ebook4
Sql interview question part 4
PHP 5 + MySQL 5 = A Perfect 10
MySQL 8.0 New Features -- September 27th presentation for Open Source Summit
War of the Indices- SQL vs. Oracle
Linuxfest Northwest 2022 - MySQL 8.0 Nre Features
NoSQL and MySQL: News about JSON
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
Ebook6
Sql interview-question-part-6
Ebook6
Sql interview-question-part-6
Sql interview question part 6
MySQL 8.0 Featured for Developers
Ebook11
Web Cloud Computing SQL Server - Ferrara University
Python and MySQL 8.0 Document Store
Ad

More from Dave Stokes (19)

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

Recently uploaded (20)

PDF
An introduction to the IFRS (ISSB) Stndards.pdf
PPTX
international classification of diseases ICD-10 review PPT.pptx
PDF
πŸ’° π”πŠπ“πˆ πŠπ„πŒπ„ππ€ππ†π€π πŠπˆππ„π‘πŸ’πƒ π‡π€π‘πˆ 𝐈𝐍𝐈 πŸπŸŽπŸπŸ“ πŸ’°
Β 
PDF
Paper PDF World Game (s) Great Redesign.pdf
PPTX
Job_Card_System_Styled_lorem_ipsum_.pptx
PPTX
Introuction about ICD -10 and ICD-11 PPT.pptx
PPT
tcp ip networks nd ip layering assotred slides
PDF
The New Creative Director: How AI Tools for Social Media Content Creation Are...
PPTX
Introduction about ICD -10 and ICD11 on 5.8.25.pptx
PPTX
introduction about ICD -10 & ICD-11 ppt.pptx
PDF
Cloud-Scale Log Monitoring _ Datadog.pdf
PDF
WebRTC in SignalWire - troubleshooting media negotiation
PDF
Decoding a Decade: 10 Years of Applied CTI Discipline
PPTX
June-4-Sermon-Powerpoint.pptx USE THIS FOR YOUR MOTIVATION
PPTX
SAP Ariba Sourcing PPT for learning material
PPTX
522797556-Unit-2-Temperature-measurement-1-1.pptx
PPTX
E -tech empowerment technologies PowerPoint
PPTX
Slides PPTX World Game (s) Eco Economic Epochs.pptx
PDF
Unit-1 introduction to cyber security discuss about how to secure a system
PPTX
PptxGenJS_Demo_Chart_20250317130215833.pptx
An introduction to the IFRS (ISSB) Stndards.pdf
international classification of diseases ICD-10 review PPT.pptx
πŸ’° π”πŠπ“πˆ πŠπ„πŒπ„ππ€ππ†π€π πŠπˆππ„π‘πŸ’πƒ π‡π€π‘πˆ 𝐈𝐍𝐈 πŸπŸŽπŸπŸ“ πŸ’°
Β 
Paper PDF World Game (s) Great Redesign.pdf
Job_Card_System_Styled_lorem_ipsum_.pptx
Introuction about ICD -10 and ICD-11 PPT.pptx
tcp ip networks nd ip layering assotred slides
The New Creative Director: How AI Tools for Social Media Content Creation Are...
Introduction about ICD -10 and ICD11 on 5.8.25.pptx
introduction about ICD -10 & ICD-11 ppt.pptx
Cloud-Scale Log Monitoring _ Datadog.pdf
WebRTC in SignalWire - troubleshooting media negotiation
Decoding a Decade: 10 Years of Applied CTI Discipline
June-4-Sermon-Powerpoint.pptx USE THIS FOR YOUR MOTIVATION
SAP Ariba Sourcing PPT for learning material
522797556-Unit-2-Temperature-measurement-1-1.pptx
E -tech empowerment technologies PowerPoint
Slides PPTX World Game (s) Eco Economic Epochs.pptx
Unit-1 introduction to cyber security discuss about how to secure a system
PptxGenJS_Demo_Chart_20250317130215833.pptx

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