SlideShare a Scribd company logo
1 of 59
Download to read offline
@Stoker
Community Manager
MySQL
David.Stokes @Oracle.com
elephantdolphin.blogspot.com
New MySQL Features & A Peek at 2021+
Dave Stokes
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
February 2021
MySQL 5.6 End of Life
is
3
WAS!
Please upgrade ASAP to 5.7 or 8.0
Me?
✔ Started using MySQL when it first was available
✔ Used in many projects -> Open Source,
used due to low $
✔ Joined MySQL AB as PHP Programmer on the
Certification Team
✔ MySQL AB -> Sun Microsystems -> Oracle
✔ Calpont & InfiniDB
✔ MySQL Community Team
✔ MySQL 8.0 DBA & DEV Certified
✔ Live in Texas with required hound dog and pickup truck
slides -> slideshare.net/davestokes
4
Test Drive MySQL
Database Service For
Free Today
Get $300 in credits
and try MySQL Database Service
free for 30 days.
https://www.oracle.com/cloud/free/
Copyright © 2020, Oracle and/or its affiliates | Confidential: Internal/Restricted/Highly Restricted
5
First topic
Program agenda
1
2
3
4
5
Second topic
Third topic
Fourth topic
Fifth topic
6
Please ask questions!
Let us make this interactive
(as possible)!!
What do you want to see
from MySQL in 2021/22?
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, Router)
Faster to get tools into hands of customers
Much better product
Vastly superior engineering rigor – Q/A Reports
7
No Wonder Which Version of What to Run – now all 8.0.24
▪ In the past you had various versions for
the server, the connectors, the tools, and
etcetera.
▪ Now one release number for all products
All tested together
Pass Q/A Together
▪ MySQL Server – Community & Enterprise
▪ MySQL NDB Cluster
▪ MySQL Shell
▪ MySQL Workbench
▪ MySQL Router
▪ MySQL Connectors – C/C++, Java, .Net,
Node.JS, ODBC, Python & PHP
(MySQLnd & X DevAPI)
8
Let’s Look At The MySQL Community Server
Yes, still free!
9
Working backwards in time ...
10
8.0.24 – April 2021
1. Connection management
2. Connection failure messages improved
3. Lots of bug features and libraries updates
11
Connection Management
Previously, if a client did not use the connection to the server within the period specified by the wait_timeout
system variable and the server closed the connection, the client received no notification of the reason.
Typically, the client would see Lost connection to MySQL server during query (CR_SERVER_LOST) or MySQL
server has gone away (CR_SERVER_GONE_ERROR).
In such cases, the server now writes the reason to the connection before closing it, and client receives a
more informative error message, The client was disconnected by the server because of inactivity. See
wait_timeout and interactive_timeout for configuring this behavior. (ER_CLIENT_INTERACTION_TIMEOUT).
The previous behavior still applies for client connections to older servers and connections to the
server by older clients.
12
Connection Failure Message
Client connection failure messages now include the port number.
For example: Can't connect to MySQL server on '127.0.0.1:63333'. Thanks to Daniël van Eeden for the
contribution. (Bug #30787660, Bug #98311)
(very important for MySQL InnoDB cluster)
13
8.0.23 – January 2021
1. Invisible Columns
2. Optimize hash table in hash join
3. TLS endpoint for routing connections with MySQL Router
4. Replicate from GTID disabled master to GTID enabled slave directly
14
Invisible Columns
MySQL supports invisible columns as of MySQL 8.0.23. An invisible column is normally hidden to queries, but
can be accessed if explicitly referenced. Prior to MySQL 8.0.23, all columns are visible.
Suppose that an application uses SELECT * queries to access a table, and must continue to work without
modification even if the table is altered to add a new column that the application does not expect to be there.
In a SELECT * query, the * evaluates to all table columns, except those that are invisible, so the solution is to
add the new column as an invisible column. The column remains “hidden” from SELECT * queries, and the
application continues to work as previously. A newer version of the application can refer to the invisible column
if necessary by explicitly referencing it.
15
Replicate from GTID disabled master to GTID enabled slave directly
This feature enables replication from a source that does not use GTID-based replication, to a replica that does.
Great for migrations to cloud environments with Global Transactions IDs enabled.
16
8.0.22 – October 2020
1. A prepared statement is now prepared only once
2. The filesort algorithm now supports sorting a join on multiple tables, and not just a single table
3. An alternative SHOW PROCESSLIST implementation is now available
4. It is now possible to convert a TIMESTAMP column value from the system time zone to a UTC
5. New MySQL Server's new asynchronous connection failover mechanism
17
A prepared statement is now prepared only once
A prepared statement is now prepared only once, when first executing PREPARE, rather than once each time
it is executed.
This change enhances performance of such statements, since it avoids the added cost of repeated
preparation and rollback of preparation structures, the latter being the source of several bugs.
18
An alternative SHOW PROCESSLIST
The SHOW PROCESSLIST statement provides process information by collecting thread data from
all active threads from the thread manager.
● Because this implementation iterates across active threads from within the thread manager
while holding a global mutex, it has negative performance consequences, particularly on busy
systems.
An alternative SHOW PROCESSLIST implementation is now available based on the new
Performance Schema processlist table.
● This implementation queries active thread data from the Performance Schema rather than the
thread manager and does not require a mutex!
19
New Asynchronous Connection Failover Mechanism
You can use MySQL Server's new asynchronous connection failover mechanism to automatically establish an
asynchronous (source to replica) replication connection to a new source after an existing connection from a
replica to its source fails.
● The asynchronous connection failover mechanism can be used to keep a replica synchronized with
multiple MySQL servers or groups of servers that share data, including asynchronous replication from
servers where Group Replication is in use.
20
8.0.21 – July 2020
1. User details for accounts
2. JSON_VALUE()
3. REDO logging can be turned on and off
4. MySQL Server Docker containers now support server restart within a client session
5. Group Replication auto-rejoin feature is now activated by default
6. Mysqlsh util.dumpSchemas(), util.dumpInstance(), util.dumpTables() and util.loadDump()
21
User Details
CREATE USER 'bill'@'localhost' COMMENT 'Bill Johnson room 114, x 1234';
select User_attributes from mysql.user where User='bill'G
*************************** 1. row ***************************
User_attributes: {"metadata": {"comment": "Bill Johnson room 114, x 1234"}}
ALTER USER 'mary'@'localhost' ATTRIBUTE '{"email":"mary.wu@example.com"}';
select User_attributes from mysql.user where User='mary'G
*************************** 1. row ***************************
User_attributes: {"metadata": {"email": "mary.wu@example.com", "comment": "Mary Wu
room 141, x 2234"}}
22
JSON_VALUE
SELECT doc->"$.Name"
FROM countryinfo
WHERE JSON_VALUE(doc, "$.demographics.LifeExpectancy"
RETURNING DECIMAL(6,3)) > 80.1;
+---------------+
| doc->"$.Name" |
+---------------+
| "Andorra" |
| "Japan" |
| "Macao" |
| "San Marino" |
+---------------+
23
REDO Logging on/off
Redo logging can now be enabled and disabled using ALTER INSTANCE
{ENABLE|DISABLE} INNODB REDO_LOG syntax.
This functionality is intended for loading data into a new MySQL instance.
Disabling redo logging helps speed up data loading by avoiding redo log
writes.
24
Mysqlsh util.dumpSchemas(), util.dumpInstance(), util.dumpTables() and util.loadDump()
These support the export of all schemas or a selected schema from an on-premise MySQL
instance into an Oracle Cloud Infrastructure Object Storage bucket or a set of local files
And they provide parallel dumping with multiple threads and file compression, which are not
provided by mysqldump. Progress information is displayed during the dump.
25
8.0.20 – April 2020
1. Hash joins are now used any time a nested block loop would be employed. This means that
hash joins can be used for the following types of queries:
● Inner non-equi-joins
● Semi joins
● Anti joins
● Left outer joins
● Right outer joins
2. Binary log transaction compression
3. Contention-Aware Transaction Scheduling (CATS) algorithm improved
26
Binary log transaction compression
When binary log transaction compression is enabled, transaction payloads are compressed using
the zstd algorithm, and then written to the server's binary log file as a single event (a
Transaction_payload_event).
Compressed transaction payloads remain in a compressed state while they are sent in the
replication stream to replication slaves, other Group Replication group members, or clients such
as mysqlbinlog.
They are not decompressed by receiver threads, and are written to the relay log still in their
compressed state.
Binary log transaction compression therefore saves storage space both on the originator of the
transaction and on the recipient (and for their backups), and saves network bandwidth when the
transactions are sent between server instances.
27
8.0.19 – January 2020
1. Too many login attempts – lock account temporarily
2. The table Statement along with row
3. LIMITs in recursive Common Table Expressions
4. Alias on DUPLICATE KEY statements
28
Failed Login Attempts
CREATE USER 'u1'@'localhost' IDENTIFIED BY 'password‘
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME 3; -- lock time in days!
ALTER USER 'u2'@'localhost'
FAILED_LOGIN_ATTEMPTS 4
PASSWORD_LOCK_TIME UNBOUNDED;
29
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);
30
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);
31
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 (uncompress or zlib other options)
5. Enterprise Edition supports HashiCorp Vault
32
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)
33
Hash Joins
https://mysqlserverteam.com/hash-join-in-mysql-8/
34
8.0.20 added
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)
35
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
36
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.
37
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)
);
38
You can now check for required keys,
value types, and range check values in
your JSON documents!
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)
Dual Passwords – need to update the passwords on your applications?
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
39
8.0.16 – April 2019
1. The mysql_upgrade script runs automatically – no chance to forget it again!
2. Constraint checks – previously ignored
3. MySQL C API supports asynchronous, non blocking communications with server
4. EXPLAIN FORMAT=TREE
40
Constraint Checks
CREATE TABLE t1 ( CHECK (c1 <> c2),
c1 INT CHECK (c1 > 10),
c2 INT CONSTRAINT c2_positive CHECK (c2 > 0),
c3 INT CHECK (c3 < 100),
CONSTRAINT c1_nonzero CHECK (c1 <> 0),
CHECK (c1 > c3)
);
41
8.0.14/.15 – January/February 2019
1. Admin TCP/IP port (default 33062), no limit on number of connections, requires
SERVICE_CONNETION_ADMIN privilege
2. JSON_ARRAYAGG() and JSON_OBJECTAGG() added to Window Functions
3. SET PERSIST and SET PERSIST ONLY
4. LATERAL derived tables
42
Lateral Derived Tables – smarter sub queries
SELECT Name, Population, District, x.cc
FROM city,
LATERAL (SELECT Code AS cc FROM country
WHERE city.CountryCode = Code) AS x
WHERE District = 'Texas' ORDER BY name;
43
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
44
A Much Better product with more flexibility
▪ Better SQL
Windowing Functions
CTEs
Derived tables
Check Constraints
TABLE/ROW
▪ Better NoSQL
JSON validation
X DevAPI
JSON Support
JSON_TABLE for treating NoSQL data as SQL
Multi-Value Indexes
45
MySQL InnoDB Cluster
MySQL InnoDB cluster provides a complete
high availability solution for MySQL. 
MySQL Shell includes AdminAPI which
enables you to easily configure and
administer a group of at least three MySQL
server instances to function as an InnoDB
cluster.
Each MySQL server instance runs MySQL
Group Replication, which provides the
mechanism to replicate data within InnoDB
clusters, with built-in failover. 
46
MySQL InnoDB Replica Set
The basic idea for InnoDB ReplicaSet is to do the
same for classic MySQL Replication as InnoDB
Cluster did for Group Replication and provides an
easy-to-use AdminAPI for it in the MySQL Shell.
In just a few easy to use Shell commands, a MySQL
Replication database architecture can be
configured from scratch including:
• Data provisioning using MySQL CLONE,
• Setting up replication
• Performing manual switchover/failover
47
Clone Plug-in – Extremely fast way to get new instance online
The clone plugin permits cloning data locally or from a
remote MySQL server instance. Cloned data is a
physical snapshot of data stored in InnoDB that
includes schemas, tables, tablespaces, and data
dictionary metadata. The cloned data comprises a
fully functional data directory, which permits using the
clone plugin for MySQL server provisioning.
CLONE INSTANCE FROM 'user'@'host':port
IDENTIFIED BY 'password' [DATA
DIRECTORY [=] 'clone_dir'] [REQUIRE [NO]
SSL];
48
MySQL Shell
• Advanced Client and Code Editor
• Command Completion
• Extensive help support
• Three modes – SQL, Python, and JavaScript
• Admin for InnoDB Cluster and ReplicaSet Replication
• 5.7 to 8.0 upgrade checker
• Bulk loader
49
50
51
Loading JSON Files
Started with a Python script to read bulk files line by line
Next came a quick bulk loading utility
52
And then a parallel bulk loader for JSON, CSV, TSV files with 8.0.17!
$ mysqlsh mysql://root@localhost --ssl-mode=DISABLED -- util
import-table foo.csv --schema=test --table=foo
Importing from file 'foo.csv' to table `test`.`foo` in MySQL Server at
/var/lib/mysql/mysql.sock using 3 threads
[Worker000] test.foo: Records: 1496823  Deleted: 0  Skipped: 0  Warnings: 0
[Worker001] test.foo: Records: 4204841  Deleted: 0  Skipped: 0  Warnings: 0
[Worker002] test.foo: Records: 4298336  Deleted: 0  Skipped: 0  Warnings: 0
100% (117.80 MB / 117.80 MB), 490.81 KB/s
File 'foo.csv' (117.80 MB) was imported in 2 min 25.9817 sec at 806.94 KB/s
Total rows affected in test.foo: Records: 10000000  Deleted: 0  Skipped: 0  Warnings: 0
53
2020 -> 8.0.19, .20, .21, .22
So what do you want in the next releases?
54
Dave’s very unofficial private ideas of what you will see in the next
releases of MySQL in 2021/2022 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, NDB
4. More features in the new shell
5. Still a few mutexes to eliminate, better performance
6. More emphasis on Kuberneties-ish deployments despite not being a great database environment
7. DBAs are going to be harder to find, but scope of job will widen
8. Bad data architecture will start to be seen as a problem: Digital Data Landfill
9. ?
55
Follow us on Social Media
Copyright © 2020, Oracle and/or its affiliates
56
MySQLCommunity.slack.com
“We have saved around 40% of our
costs and are able to reinvest that
back into the business. And we are
scaling across EMEA, and that’s
basically all because of Oracle.”
—Asser Smidt
CEO and Cofounder, BotSupply
Startups get cloud credits and a 70%
discount for 2 years, global exposure
via marketing, events, digital promotion,
and media, plus access to mentorship,
capital and Oracle’s 430,000+
customers
Customers meet vetted startups in
transformative spaces that help them
stay ahead of their competition
Oracle stays at the competitive edge
of innovation with solutions that
complement its technology stack
Oracle for Startups - enroll at oracle.com/startup
A Virtuous Cycle of Innovation, Everybody Wins.
If you are using
JSON & MYSQL
then you
need this book!
The second edition is
now on sale at
Amazon
58
Thank you
slides -> slideshare.net/davestokes
Dave Stokes
MySQL Community Manager
MySQL
David.Stokes @ Oracle.com
@Stoker
59

More Related Content

What's hot

MySQL 5.5&5.6 new features summary
MySQL 5.5&5.6 new features summaryMySQL 5.5&5.6 new features summary
MySQL 5.5&5.6 new features summary
Louis liu
 

What's hot (20)

MySQL High Availability Solutions - Avoid loss of service by reducing the r...
MySQL High Availability Solutions  -  Avoid loss of service by reducing the r...MySQL High Availability Solutions  -  Avoid loss of service by reducing the r...
MySQL High Availability Solutions - Avoid loss of service by reducing the r...
 
MySQL For Oracle Developers
MySQL For Oracle DevelopersMySQL For Oracle Developers
MySQL For Oracle Developers
 
Case study on mysql in rdbms
Case study on mysql in rdbmsCase study on mysql in rdbms
Case study on mysql in rdbms
 
MySQL Utilities -- PyTexas 2015
MySQL Utilities -- PyTexas 2015MySQL Utilities -- PyTexas 2015
MySQL Utilities -- PyTexas 2015
 
MySQL Enterprise Edition
MySQL Enterprise EditionMySQL Enterprise Edition
MySQL Enterprise Edition
 
MySQL Utilities -- Cool Tools For You: PHP World Nov 16 2016
MySQL Utilities -- Cool Tools For You: PHP World Nov 16 2016MySQL Utilities -- Cool Tools For You: PHP World Nov 16 2016
MySQL Utilities -- Cool Tools For You: PHP World Nov 16 2016
 
MySQL Cluster 8.0 tutorial
MySQL Cluster 8.0 tutorialMySQL Cluster 8.0 tutorial
MySQL Cluster 8.0 tutorial
 
MySQL Database Service - 100% Developed, Managed and Supported by the MySQL Team
MySQL Database Service - 100% Developed, Managed and Supported by the MySQL TeamMySQL Database Service - 100% Developed, Managed and Supported by the MySQL Team
MySQL Database Service - 100% Developed, Managed and Supported by the MySQL Team
 
MySQL 8.0.22 - New Features Summary
MySQL 8.0.22 - New Features SummaryMySQL 8.0.22 - New Features Summary
MySQL 8.0.22 - New Features Summary
 
MySQL NDB Cluster 8.0
MySQL NDB Cluster 8.0MySQL NDB Cluster 8.0
MySQL NDB Cluster 8.0
 
Upgrade to MySQL 5.7 and latest news planned for MySQL 8
Upgrade to MySQL 5.7 and latest news planned for MySQL 8Upgrade to MySQL 5.7 and latest news planned for MySQL 8
Upgrade to MySQL 5.7 and latest news planned for MySQL 8
 
MySQL Performance - Best practices
MySQL Performance - Best practices MySQL Performance - Best practices
MySQL Performance - Best practices
 
MySQL 5.5&5.6 new features summary
MySQL 5.5&5.6 new features summaryMySQL 5.5&5.6 new features summary
MySQL 5.5&5.6 new features summary
 
MySQL 8.0.16 New Features Summary
MySQL 8.0.16 New Features SummaryMySQL 8.0.16 New Features Summary
MySQL 8.0.16 New Features Summary
 
01 upgrade to my sql8
01 upgrade to my sql8 01 upgrade to my sql8
01 upgrade to my sql8
 
My sql crashcourse_2012
My sql crashcourse_2012My sql crashcourse_2012
My sql crashcourse_2012
 
MySQL Group Replication - an Overview
MySQL Group Replication - an OverviewMySQL Group Replication - an Overview
MySQL Group Replication - an Overview
 
MySQL's NoSQL -- Texas Linuxfest August 22nd 2015
MySQL's NoSQL  -- Texas Linuxfest August 22nd 2015MySQL's NoSQL  -- Texas Linuxfest August 22nd 2015
MySQL's NoSQL -- Texas Linuxfest August 22nd 2015
 
My sql crashcourse_intro_kdl
My sql crashcourse_intro_kdlMy sql crashcourse_intro_kdl
My sql crashcourse_intro_kdl
 
MySQL 8.0.17 - New Features Summary
MySQL 8.0.17 - New Features SummaryMySQL 8.0.17 - New Features Summary
MySQL 8.0.17 - New Features Summary
 

Similar to Midwest PHP Presentation - New MSQL Features

Oracle Cloud DBA - OCP 2021 [1Z0-1093-21].pdf
Oracle Cloud DBA - OCP 2021 [1Z0-1093-21].pdfOracle Cloud DBA - OCP 2021 [1Z0-1093-21].pdf
Oracle Cloud DBA - OCP 2021 [1Z0-1093-21].pdf
MohamedHusseinEid
 
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
Geir Høydalsvik
 
MySQL Database Replication - A Guide by RapidValue Solutions
MySQL Database Replication - A Guide by RapidValue SolutionsMySQL Database Replication - A Guide by RapidValue Solutions
MySQL Database Replication - A Guide by RapidValue Solutions
RapidValue
 

Similar to Midwest PHP Presentation - New MSQL Features (20)

Automatic upgrade and new error logging in my sql 8.0 oct
Automatic upgrade and new error logging in my sql 8.0 octAutomatic upgrade and new error logging in my sql 8.0 oct
Automatic upgrade and new error logging in my sql 8.0 oct
 
Sql server 2019 New Features by Yevhen Nedaskivskyi
Sql server 2019 New Features by Yevhen NedaskivskyiSql server 2019 New Features by Yevhen Nedaskivskyi
Sql server 2019 New Features by Yevhen Nedaskivskyi
 
Oracle Cloud DBA - OCP 2021 [1Z0-1093-21].pdf
Oracle Cloud DBA - OCP 2021 [1Z0-1093-21].pdfOracle Cloud DBA - OCP 2021 [1Z0-1093-21].pdf
Oracle Cloud DBA - OCP 2021 [1Z0-1093-21].pdf
 
MySQL Cluster
MySQL ClusterMySQL Cluster
MySQL Cluster
 
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
 
NoSQL and MySQL: News about JSON
NoSQL and MySQL: News about JSONNoSQL and MySQL: News about JSON
NoSQL and MySQL: News about JSON
 
MySQL 8.0 Featured for Developers
MySQL 8.0 Featured for DevelopersMySQL 8.0 Featured for Developers
MySQL 8.0 Featured for Developers
 
Scaling MySQL -- Swanseacon.co.uk
Scaling MySQL -- Swanseacon.co.uk Scaling MySQL -- Swanseacon.co.uk
Scaling MySQL -- Swanseacon.co.uk
 
IUG ATL PC 9.5
IUG ATL PC 9.5IUG ATL PC 9.5
IUG ATL PC 9.5
 
Intro to Environment as a Service - Cloudify 5.0.5 Webinar
Intro to Environment as a Service - Cloudify 5.0.5 WebinarIntro to Environment as a Service - Cloudify 5.0.5 Webinar
Intro to Environment as a Service - Cloudify 5.0.5 Webinar
 
InnoDB Cluster Experience (MySQL User Camp)
InnoDB Cluster Experience (MySQL User Camp)InnoDB Cluster Experience (MySQL User Camp)
InnoDB Cluster Experience (MySQL User Camp)
 
Customer Experience: InnoDB Cluster Implementation by PR Karthik
Customer Experience: InnoDB Cluster Implementation by PR KarthikCustomer Experience: InnoDB Cluster Implementation by PR Karthik
Customer Experience: InnoDB Cluster Implementation by PR Karthik
 
MySQL Database Replication - A Guide by RapidValue Solutions
MySQL Database Replication - A Guide by RapidValue SolutionsMySQL Database Replication - A Guide by RapidValue Solutions
MySQL Database Replication - A Guide by RapidValue Solutions
 
SQL Server Clustering Part1
SQL Server Clustering Part1SQL Server Clustering Part1
SQL Server Clustering Part1
 
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
 
MySQL Operator for Kubernetes
MySQL Operator for KubernetesMySQL Operator for Kubernetes
MySQL Operator for Kubernetes
 
MySQL High Availability and Disaster Recovery with Continuent, a VMware company
MySQL High Availability and Disaster Recovery with Continuent, a VMware companyMySQL High Availability and Disaster Recovery with Continuent, a VMware company
MySQL High Availability and Disaster Recovery with Continuent, a VMware company
 
MIGRATION OF AN OLTP SYSTEM FROM ORACLE TO MYSQL AND COMPARATIVE PERFORMANCE ...
MIGRATION OF AN OLTP SYSTEM FROM ORACLE TO MYSQL AND COMPARATIVE PERFORMANCE ...MIGRATION OF AN OLTP SYSTEM FROM ORACLE TO MYSQL AND COMPARATIVE PERFORMANCE ...
MIGRATION OF AN OLTP SYSTEM FROM ORACLE TO MYSQL AND COMPARATIVE PERFORMANCE ...
 
Tungsten Webinar: v6 & v7 Release Recap, and Beyond
Tungsten Webinar: v6 & v7 Release Recap, and BeyondTungsten Webinar: v6 & v7 Release Recap, and Beyond
Tungsten Webinar: v6 & v7 Release Recap, and Beyond
 
MySQL Database Architectures - InnoDB ReplicaSet & Cluster
MySQL Database Architectures - InnoDB ReplicaSet & ClusterMySQL Database Architectures - InnoDB ReplicaSet & Cluster
MySQL Database Architectures - InnoDB ReplicaSet & Cluster
 

More from Dave Stokes

More from Dave Stokes (20)

Json within a relational database
Json within a relational databaseJson within a relational database
Json within a relational database
 
Database basics for new-ish developers -- All Things Open October 18th 2021
Database basics for new-ish developers  -- All Things Open October 18th 2021Database basics for new-ish developers  -- All Things Open October 18th 2021
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
Php &amp; my sql  - how do pdo, mysq-li, and x devapi do what they doPhp &amp; my sql  - how do pdo, mysq-li, and x devapi do what they do
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 ...
Longhorn PHP - MySQL Indexes, Histograms, Locking Options, and Other Ways to ...Longhorn PHP - MySQL Indexes, Histograms, Locking Options, and Other Ways to ...
Longhorn PHP - MySQL Indexes, Histograms, Locking Options, and Other Ways to ...
 
MySQL 8.0 New Features -- September 27th presentation for Open Source Summit
MySQL 8.0 New Features -- September 27th presentation for Open Source SummitMySQL 8.0 New Features -- September 27th presentation for Open Source Summit
MySQL 8.0 New Features -- September 27th presentation for Open Source Summit
 
JavaScript and Friends August 20th, 20201 -- MySQL Shell and JavaScript
JavaScript and Friends August 20th, 20201 -- MySQL Shell and JavaScriptJavaScript and Friends August 20th, 20201 -- MySQL Shell and JavaScript
JavaScript and Friends August 20th, 20201 -- MySQL Shell and JavaScript
 
Open Source World June '21 -- JSON Within a Relational Database
Open Source World June '21 -- JSON Within a Relational DatabaseOpen Source World June '21 -- JSON Within a Relational Database
Open Source World June '21 -- JSON Within a Relational Database
 
Dutch PHP Conference 2021 - MySQL Indexes and Histograms
Dutch PHP Conference 2021 - MySQL Indexes and HistogramsDutch PHP Conference 2021 - MySQL Indexes and Histograms
Dutch PHP Conference 2021 - MySQL Indexes and Histograms
 
Validating JSON -- Percona Live 2021 presentation
Validating JSON -- Percona Live 2021 presentationValidating JSON -- Percona Live 2021 presentation
Validating JSON -- Percona Live 2021 presentation
 
Data Love Conference - Window Functions for Database Analytics
Data Love Conference - Window Functions for Database AnalyticsData Love Conference - Window Functions for Database Analytics
Data Love Conference - Window Functions for Database Analytics
 
Open Source 1010 and Quest InSync presentations March 30th, 2021 on MySQL Ind...
Open Source 1010 and Quest InSync presentations March 30th, 2021 on MySQL Ind...Open Source 1010 and Quest InSync presentations March 30th, 2021 on MySQL Ind...
Open Source 1010 and Quest InSync presentations March 30th, 2021 on MySQL Ind...
 
Confoo 2021 - MySQL Indexes & Histograms
Confoo 2021 - MySQL Indexes & HistogramsConfoo 2021 - MySQL Indexes & Histograms
Confoo 2021 - MySQL Indexes & Histograms
 
Datacon LA - MySQL without the SQL - Oh my!
Datacon LA - MySQL without the SQL - Oh my! Datacon LA - MySQL without the SQL - Oh my!
Datacon LA - MySQL without the SQL - Oh my!
 
MySQL Replication Update - DEbconf 2020 presentation
MySQL Replication Update - DEbconf 2020 presentationMySQL Replication Update - DEbconf 2020 presentation
MySQL Replication Update - DEbconf 2020 presentation
 
MySQL 8.0 Operational Changes
MySQL 8.0 Operational ChangesMySQL 8.0 Operational Changes
MySQL 8.0 Operational Changes
 
cPanel now supports MySQL 8.0 - My Top Seven Features
cPanel now supports MySQL 8.0 - My Top Seven FeaturescPanel now supports MySQL 8.0 - My Top Seven Features
cPanel now supports MySQL 8.0 - My Top Seven Features
 
A Step by Step Introduction to the MySQL Document Store
A Step by Step Introduction to the MySQL Document StoreA Step by Step Introduction to the MySQL Document Store
A Step by Step Introduction to the MySQL Document Store
 
Discover The Power of NoSQL + MySQL with MySQL
Discover The Power of NoSQL + MySQL with MySQLDiscover The Power of NoSQL + MySQL with MySQL
Discover The Power of NoSQL + MySQL with MySQL
 
Discover the Power of the NoSQL + SQL with MySQL
Discover the Power of the NoSQL + SQL with MySQLDiscover the Power of the NoSQL + SQL with MySQL
Discover the Power of the NoSQL + SQL with MySQL
 
PHP UK 2020 Tutorial: MySQL Indexes, Histograms And other ways To Speed Up Yo...
PHP UK 2020 Tutorial: MySQL Indexes, Histograms And other ways To Speed Up Yo...PHP UK 2020 Tutorial: MySQL Indexes, Histograms And other ways To Speed Up Yo...
PHP UK 2020 Tutorial: MySQL Indexes, Histograms And other ways To Speed Up Yo...
 

Recently uploaded

Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
amitlee9823
 
Abortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Doha Qatar (+966572737505 ! Get CytotecAbortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Riyadh +966572737505 get cytotec
 
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
amitlee9823
 
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men 🔝Bangalore🔝 Esc...
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men  🔝Bangalore🔝   Esc...➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men  🔝Bangalore🔝   Esc...
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men 🔝Bangalore🔝 Esc...
amitlee9823
 
Call Girls Bannerghatta Road Just Call 👗 7737669865 👗 Top Class Call Girl Ser...
Call Girls Bannerghatta Road Just Call 👗 7737669865 👗 Top Class Call Girl Ser...Call Girls Bannerghatta Road Just Call 👗 7737669865 👗 Top Class Call Girl Ser...
Call Girls Bannerghatta Road Just Call 👗 7737669865 👗 Top Class Call Girl Ser...
amitlee9823
 
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
amitlee9823
 
Probability Grade 10 Third Quarter Lessons
Probability Grade 10 Third Quarter LessonsProbability Grade 10 Third Quarter Lessons
Probability Grade 10 Third Quarter Lessons
JoseMangaJr1
 
Call Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service BangaloreCall Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
amitlee9823
 
➥🔝 7737669865 🔝▻ Dindigul Call-girls in Women Seeking Men 🔝Dindigul🔝 Escor...
➥🔝 7737669865 🔝▻ Dindigul Call-girls in Women Seeking Men  🔝Dindigul🔝   Escor...➥🔝 7737669865 🔝▻ Dindigul Call-girls in Women Seeking Men  🔝Dindigul🔝   Escor...
➥🔝 7737669865 🔝▻ Dindigul Call-girls in Women Seeking Men 🔝Dindigul🔝 Escor...
amitlee9823
 
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
amitlee9823
 
Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...
Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...
Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...
amitlee9823
 
Call Girls In Nandini Layout ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Nandini Layout ☎ 7737669865 🥵 Book Your One night StandCall Girls In Nandini Layout ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Nandini Layout ☎ 7737669865 🥵 Book Your One night Stand
amitlee9823
 
➥🔝 7737669865 🔝▻ mahisagar Call-girls in Women Seeking Men 🔝mahisagar🔝 Esc...
➥🔝 7737669865 🔝▻ mahisagar Call-girls in Women Seeking Men  🔝mahisagar🔝   Esc...➥🔝 7737669865 🔝▻ mahisagar Call-girls in Women Seeking Men  🔝mahisagar🔝   Esc...
➥🔝 7737669865 🔝▻ mahisagar Call-girls in Women Seeking Men 🔝mahisagar🔝 Esc...
amitlee9823
 

Recently uploaded (20)

Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
 
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
 
Abortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Doha Qatar (+966572737505 ! Get CytotecAbortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Doha Qatar (+966572737505 ! Get Cytotec
 
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
 
DATA SUMMIT 24 Building Real-Time Pipelines With FLaNK
DATA SUMMIT 24  Building Real-Time Pipelines With FLaNKDATA SUMMIT 24  Building Real-Time Pipelines With FLaNK
DATA SUMMIT 24 Building Real-Time Pipelines With FLaNK
 
5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed
5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed
5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed
 
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men 🔝Bangalore🔝 Esc...
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men  🔝Bangalore🔝   Esc...➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men  🔝Bangalore🔝   Esc...
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men 🔝Bangalore🔝 Esc...
 
Call Girls Bannerghatta Road Just Call 👗 7737669865 👗 Top Class Call Girl Ser...
Call Girls Bannerghatta Road Just Call 👗 7737669865 👗 Top Class Call Girl Ser...Call Girls Bannerghatta Road Just Call 👗 7737669865 👗 Top Class Call Girl Ser...
Call Girls Bannerghatta Road Just Call 👗 7737669865 👗 Top Class Call Girl Ser...
 
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
 
Probability Grade 10 Third Quarter Lessons
Probability Grade 10 Third Quarter LessonsProbability Grade 10 Third Quarter Lessons
Probability Grade 10 Third Quarter Lessons
 
Call Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service BangaloreCall Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
 
➥🔝 7737669865 🔝▻ Dindigul Call-girls in Women Seeking Men 🔝Dindigul🔝 Escor...
➥🔝 7737669865 🔝▻ Dindigul Call-girls in Women Seeking Men  🔝Dindigul🔝   Escor...➥🔝 7737669865 🔝▻ Dindigul Call-girls in Women Seeking Men  🔝Dindigul🔝   Escor...
➥🔝 7737669865 🔝▻ Dindigul Call-girls in Women Seeking Men 🔝Dindigul🔝 Escor...
 
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
 
Anomaly detection and data imputation within time series
Anomaly detection and data imputation within time seriesAnomaly detection and data imputation within time series
Anomaly detection and data imputation within time series
 
Predicting Loan Approval: A Data Science Project
Predicting Loan Approval: A Data Science ProjectPredicting Loan Approval: A Data Science Project
Predicting Loan Approval: A Data Science Project
 
Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 night
Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 nightCheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 night
Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 night
 
Detecting Credit Card Fraud: A Machine Learning Approach
Detecting Credit Card Fraud: A Machine Learning ApproachDetecting Credit Card Fraud: A Machine Learning Approach
Detecting Credit Card Fraud: A Machine Learning Approach
 
Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...
Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...
Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...
 
Call Girls In Nandini Layout ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Nandini Layout ☎ 7737669865 🥵 Book Your One night StandCall Girls In Nandini Layout ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Nandini Layout ☎ 7737669865 🥵 Book Your One night Stand
 
➥🔝 7737669865 🔝▻ mahisagar Call-girls in Women Seeking Men 🔝mahisagar🔝 Esc...
➥🔝 7737669865 🔝▻ mahisagar Call-girls in Women Seeking Men  🔝mahisagar🔝   Esc...➥🔝 7737669865 🔝▻ mahisagar Call-girls in Women Seeking Men  🔝mahisagar🔝   Esc...
➥🔝 7737669865 🔝▻ mahisagar Call-girls in Women Seeking Men 🔝mahisagar🔝 Esc...
 

Midwest PHP Presentation - New MSQL Features

  • 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. February 2021 MySQL 5.6 End of Life is 3 WAS! Please upgrade ASAP to 5.7 or 8.0
  • 4. Me? ✔ Started using MySQL when it first was available ✔ Used in many projects -> Open Source, used due to low $ ✔ Joined MySQL AB as PHP Programmer on the Certification Team ✔ MySQL AB -> Sun Microsystems -> Oracle ✔ Calpont & InfiniDB ✔ MySQL Community Team ✔ MySQL 8.0 DBA & DEV Certified ✔ Live in Texas with required hound dog and pickup truck slides -> slideshare.net/davestokes 4
  • 5. Test Drive MySQL Database Service For Free Today Get $300 in credits and try MySQL Database Service free for 30 days. https://www.oracle.com/cloud/free/ Copyright © 2020, Oracle and/or its affiliates | Confidential: Internal/Restricted/Highly Restricted 5
  • 6. First topic Program agenda 1 2 3 4 5 Second topic Third topic Fourth topic Fifth topic 6 Please ask questions! Let us make this interactive (as possible)!! What do you want to see from MySQL in 2021/22?
  • 7. 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, Router) Faster to get tools into hands of customers Much better product Vastly superior engineering rigor – Q/A Reports 7
  • 8. No Wonder Which Version of What to Run – now all 8.0.24 ▪ In the past you had various versions for the server, the connectors, the tools, and etcetera. ▪ Now one release number for all products All tested together Pass Q/A Together ▪ MySQL Server – Community & Enterprise ▪ MySQL NDB Cluster ▪ MySQL Shell ▪ MySQL Workbench ▪ MySQL Router ▪ MySQL Connectors – C/C++, Java, .Net, Node.JS, ODBC, Python & PHP (MySQLnd & X DevAPI) 8
  • 9. Let’s Look At The MySQL Community Server Yes, still free! 9
  • 10. Working backwards in time ... 10
  • 11. 8.0.24 – April 2021 1. Connection management 2. Connection failure messages improved 3. Lots of bug features and libraries updates 11
  • 12. Connection Management Previously, if a client did not use the connection to the server within the period specified by the wait_timeout system variable and the server closed the connection, the client received no notification of the reason. Typically, the client would see Lost connection to MySQL server during query (CR_SERVER_LOST) or MySQL server has gone away (CR_SERVER_GONE_ERROR). In such cases, the server now writes the reason to the connection before closing it, and client receives a more informative error message, The client was disconnected by the server because of inactivity. See wait_timeout and interactive_timeout for configuring this behavior. (ER_CLIENT_INTERACTION_TIMEOUT). The previous behavior still applies for client connections to older servers and connections to the server by older clients. 12
  • 13. Connection Failure Message Client connection failure messages now include the port number. For example: Can't connect to MySQL server on '127.0.0.1:63333'. Thanks to Daniël van Eeden for the contribution. (Bug #30787660, Bug #98311) (very important for MySQL InnoDB cluster) 13
  • 14. 8.0.23 – January 2021 1. Invisible Columns 2. Optimize hash table in hash join 3. TLS endpoint for routing connections with MySQL Router 4. Replicate from GTID disabled master to GTID enabled slave directly 14
  • 15. Invisible Columns MySQL supports invisible columns as of MySQL 8.0.23. An invisible column is normally hidden to queries, but can be accessed if explicitly referenced. Prior to MySQL 8.0.23, all columns are visible. Suppose that an application uses SELECT * queries to access a table, and must continue to work without modification even if the table is altered to add a new column that the application does not expect to be there. In a SELECT * query, the * evaluates to all table columns, except those that are invisible, so the solution is to add the new column as an invisible column. The column remains “hidden” from SELECT * queries, and the application continues to work as previously. A newer version of the application can refer to the invisible column if necessary by explicitly referencing it. 15
  • 16. Replicate from GTID disabled master to GTID enabled slave directly This feature enables replication from a source that does not use GTID-based replication, to a replica that does. Great for migrations to cloud environments with Global Transactions IDs enabled. 16
  • 17. 8.0.22 – October 2020 1. A prepared statement is now prepared only once 2. The filesort algorithm now supports sorting a join on multiple tables, and not just a single table 3. An alternative SHOW PROCESSLIST implementation is now available 4. It is now possible to convert a TIMESTAMP column value from the system time zone to a UTC 5. New MySQL Server's new asynchronous connection failover mechanism 17
  • 18. A prepared statement is now prepared only once A prepared statement is now prepared only once, when first executing PREPARE, rather than once each time it is executed. This change enhances performance of such statements, since it avoids the added cost of repeated preparation and rollback of preparation structures, the latter being the source of several bugs. 18
  • 19. An alternative SHOW PROCESSLIST The SHOW PROCESSLIST statement provides process information by collecting thread data from all active threads from the thread manager. ● Because this implementation iterates across active threads from within the thread manager while holding a global mutex, it has negative performance consequences, particularly on busy systems. An alternative SHOW PROCESSLIST implementation is now available based on the new Performance Schema processlist table. ● This implementation queries active thread data from the Performance Schema rather than the thread manager and does not require a mutex! 19
  • 20. New Asynchronous Connection Failover Mechanism You can use MySQL Server's new asynchronous connection failover mechanism to automatically establish an asynchronous (source to replica) replication connection to a new source after an existing connection from a replica to its source fails. ● The asynchronous connection failover mechanism can be used to keep a replica synchronized with multiple MySQL servers or groups of servers that share data, including asynchronous replication from servers where Group Replication is in use. 20
  • 21. 8.0.21 – July 2020 1. User details for accounts 2. JSON_VALUE() 3. REDO logging can be turned on and off 4. MySQL Server Docker containers now support server restart within a client session 5. Group Replication auto-rejoin feature is now activated by default 6. Mysqlsh util.dumpSchemas(), util.dumpInstance(), util.dumpTables() and util.loadDump() 21
  • 22. User Details CREATE USER 'bill'@'localhost' COMMENT 'Bill Johnson room 114, x 1234'; select User_attributes from mysql.user where User='bill'G *************************** 1. row *************************** User_attributes: {"metadata": {"comment": "Bill Johnson room 114, x 1234"}} ALTER USER 'mary'@'localhost' ATTRIBUTE '{"email":"mary.wu@example.com"}'; select User_attributes from mysql.user where User='mary'G *************************** 1. row *************************** User_attributes: {"metadata": {"email": "mary.wu@example.com", "comment": "Mary Wu room 141, x 2234"}} 22
  • 23. JSON_VALUE SELECT doc->"$.Name" FROM countryinfo WHERE JSON_VALUE(doc, "$.demographics.LifeExpectancy" RETURNING DECIMAL(6,3)) > 80.1; +---------------+ | doc->"$.Name" | +---------------+ | "Andorra" | | "Japan" | | "Macao" | | "San Marino" | +---------------+ 23
  • 24. REDO Logging on/off Redo logging can now be enabled and disabled using ALTER INSTANCE {ENABLE|DISABLE} INNODB REDO_LOG syntax. This functionality is intended for loading data into a new MySQL instance. Disabling redo logging helps speed up data loading by avoiding redo log writes. 24
  • 25. Mysqlsh util.dumpSchemas(), util.dumpInstance(), util.dumpTables() and util.loadDump() These support the export of all schemas or a selected schema from an on-premise MySQL instance into an Oracle Cloud Infrastructure Object Storage bucket or a set of local files And they provide parallel dumping with multiple threads and file compression, which are not provided by mysqldump. Progress information is displayed during the dump. 25
  • 26. 8.0.20 – April 2020 1. Hash joins are now used any time a nested block loop would be employed. This means that hash joins can be used for the following types of queries: ● Inner non-equi-joins ● Semi joins ● Anti joins ● Left outer joins ● Right outer joins 2. Binary log transaction compression 3. Contention-Aware Transaction Scheduling (CATS) algorithm improved 26
  • 27. Binary log transaction compression When binary log transaction compression is enabled, transaction payloads are compressed using the zstd algorithm, and then written to the server's binary log file as a single event (a Transaction_payload_event). Compressed transaction payloads remain in a compressed state while they are sent in the replication stream to replication slaves, other Group Replication group members, or clients such as mysqlbinlog. They are not decompressed by receiver threads, and are written to the relay log still in their compressed state. Binary log transaction compression therefore saves storage space both on the originator of the transaction and on the recipient (and for their backups), and saves network bandwidth when the transactions are sent between server instances. 27
  • 28. 8.0.19 – January 2020 1. Too many login attempts – lock account temporarily 2. The table Statement along with row 3. LIMITs in recursive Common Table Expressions 4. Alias on DUPLICATE KEY statements 28
  • 29. Failed Login Attempts CREATE USER 'u1'@'localhost' IDENTIFIED BY 'password‘ FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 3; -- lock time in days! ALTER USER 'u2'@'localhost' FAILED_LOGIN_ATTEMPTS 4 PASSWORD_LOCK_TIME UNBOUNDED; 29
  • 30. 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); 30 MySQL now supports explicit table clauses and table value constructors according to the SQL standard
  • 31. 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); 31
  • 32. 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 (uncompress or zlib other options) 5. Enterprise Edition supports HashiCorp Vault 32
  • 33. 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) 33
  • 35. 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) 35
  • 36. 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 36
  • 37. 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. 37
  • 38. 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) ); 38 You can now check for required keys, value types, and range check values in your JSON documents! 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)
  • 39. Dual Passwords – need to update the passwords on your applications? 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 39
  • 40. 8.0.16 – April 2019 1. The mysql_upgrade script runs automatically – no chance to forget it again! 2. Constraint checks – previously ignored 3. MySQL C API supports asynchronous, non blocking communications with server 4. EXPLAIN FORMAT=TREE 40
  • 41. Constraint Checks CREATE TABLE t1 ( CHECK (c1 <> c2), c1 INT CHECK (c1 > 10), c2 INT CONSTRAINT c2_positive CHECK (c2 > 0), c3 INT CHECK (c3 < 100), CONSTRAINT c1_nonzero CHECK (c1 <> 0), CHECK (c1 > c3) ); 41
  • 42. 8.0.14/.15 – January/February 2019 1. Admin TCP/IP port (default 33062), no limit on number of connections, requires SERVICE_CONNETION_ADMIN privilege 2. JSON_ARRAYAGG() and JSON_OBJECTAGG() added to Window Functions 3. SET PERSIST and SET PERSIST ONLY 4. LATERAL derived tables 42
  • 43. Lateral Derived Tables – smarter sub queries SELECT Name, Population, District, x.cc FROM city, LATERAL (SELECT Code AS cc FROM country WHERE city.CountryCode = Code) AS x WHERE District = 'Texas' ORDER BY name; 43
  • 44. 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 44
  • 45. A Much Better product with more flexibility ▪ Better SQL Windowing Functions CTEs Derived tables Check Constraints TABLE/ROW ▪ Better NoSQL JSON validation X DevAPI JSON Support JSON_TABLE for treating NoSQL data as SQL Multi-Value Indexes 45
  • 46. MySQL InnoDB Cluster MySQL InnoDB cluster provides a complete high availability solution for MySQL.  MySQL Shell includes AdminAPI which enables you to easily configure and administer a group of at least three MySQL server instances to function as an InnoDB cluster. Each MySQL server instance runs MySQL Group Replication, which provides the mechanism to replicate data within InnoDB clusters, with built-in failover.  46
  • 47. MySQL InnoDB Replica Set The basic idea for InnoDB ReplicaSet is to do the same for classic MySQL Replication as InnoDB Cluster did for Group Replication and provides an easy-to-use AdminAPI for it in the MySQL Shell. In just a few easy to use Shell commands, a MySQL Replication database architecture can be configured from scratch including: • Data provisioning using MySQL CLONE, • Setting up replication • Performing manual switchover/failover 47
  • 48. Clone Plug-in – Extremely fast way to get new instance online The clone plugin permits cloning data locally or from a remote MySQL server instance. Cloned data is a physical snapshot of data stored in InnoDB that includes schemas, tables, tablespaces, and data dictionary metadata. The cloned data comprises a fully functional data directory, which permits using the clone plugin for MySQL server provisioning. CLONE INSTANCE FROM 'user'@'host':port IDENTIFIED BY 'password' [DATA DIRECTORY [=] 'clone_dir'] [REQUIRE [NO] SSL]; 48
  • 49. MySQL Shell • Advanced Client and Code Editor • Command Completion • Extensive help support • Three modes – SQL, Python, and JavaScript • Admin for InnoDB Cluster and ReplicaSet Replication • 5.7 to 8.0 upgrade checker • Bulk loader 49
  • 50. 50
  • 51. 51
  • 52. Loading JSON Files Started with a Python script to read bulk files line by line Next came a quick bulk loading utility 52
  • 53. And then a parallel bulk loader for JSON, CSV, TSV files with 8.0.17! $ mysqlsh mysql://root@localhost --ssl-mode=DISABLED -- util import-table foo.csv --schema=test --table=foo Importing from file 'foo.csv' to table `test`.`foo` in MySQL Server at /var/lib/mysql/mysql.sock using 3 threads [Worker000] test.foo: Records: 1496823  Deleted: 0  Skipped: 0  Warnings: 0 [Worker001] test.foo: Records: 4204841  Deleted: 0  Skipped: 0  Warnings: 0 [Worker002] test.foo: Records: 4298336  Deleted: 0  Skipped: 0  Warnings: 0 100% (117.80 MB / 117.80 MB), 490.81 KB/s File 'foo.csv' (117.80 MB) was imported in 2 min 25.9817 sec at 806.94 KB/s Total rows affected in test.foo: Records: 10000000  Deleted: 0  Skipped: 0  Warnings: 0 53
  • 54. 2020 -> 8.0.19, .20, .21, .22 So what do you want in the next releases? 54
  • 55. Dave’s very unofficial private ideas of what you will see in the next releases of MySQL in 2021/2022 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, NDB 4. More features in the new shell 5. Still a few mutexes to eliminate, better performance 6. More emphasis on Kuberneties-ish deployments despite not being a great database environment 7. DBAs are going to be harder to find, but scope of job will widen 8. Bad data architecture will start to be seen as a problem: Digital Data Landfill 9. ? 55
  • 56. Follow us on Social Media Copyright © 2020, Oracle and/or its affiliates 56 MySQLCommunity.slack.com
  • 57. “We have saved around 40% of our costs and are able to reinvest that back into the business. And we are scaling across EMEA, and that’s basically all because of Oracle.” —Asser Smidt CEO and Cofounder, BotSupply Startups get cloud credits and a 70% discount for 2 years, global exposure via marketing, events, digital promotion, and media, plus access to mentorship, capital and Oracle’s 430,000+ customers Customers meet vetted startups in transformative spaces that help them stay ahead of their competition Oracle stays at the competitive edge of innovation with solutions that complement its technology stack Oracle for Startups - enroll at oracle.com/startup A Virtuous Cycle of Innovation, Everybody Wins.
  • 58. If you are using JSON & MYSQL then you need this book! The second edition is now on sale at Amazon 58
  • 59. Thank you slides -> slideshare.net/davestokes Dave Stokes MySQL Community Manager MySQL David.Stokes @ Oracle.com @Stoker 59