SlideShare a Scribd company logo
Oracle OpenWorld 2019
S A N F R A N C I S C O
Copyright © 2019 Oracle and/or its affiliates.
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.
Statements in this presentation relating to Oracle’s future plans, expectations, beliefs, intentions and
prospects are “forward-looking statements” and are subject to material risks and uncertainties. A detailed
discussion of these factors and other risks that affect our business is contained in Oracle’s Securities and
Exchange Commission (SEC) filings, including our most recent reports on Form 10-K and Form 10-Q
under the heading “Risk Factors.” These filings are available on the SEC’s website or on Oracle’s website
at http://www.oracle.com/investor. All information in this presentation is current as of September 2019
and Oracle undertakes no duty to update any statement in light of new information or future events.
Safe Harbor
Copyright © 2019 Oracle and/or its affiliates.
State of the Dolphin
During the MySQL keynote at Oracle OpenWorld and Oracle Code One 2019, Rich Mason, general manager of MySQL at
Oracle; Tomas Ulin, VP of MySQL Engineering at Oracle; and Nipun Agarwal, VP, Oracle Labs discuss Oracle’s latest
MySQL innovations and plans. In addition, some key MySQL customers present how MySQL powers their mission-critical
applications.
SPEAKERS
• Rich Mason, SVP & GM MySQL GBU, Oracle
• Tomas Ulin, Vice President, MySQL Engineering, Oracle
• Nipun Agarwal, Vice President, Oracle Labs, Oracle
Code One Tracks: Database, MySQL
Session Type: Product Overview and Roadmap Session
Monday, September 16, 01:30 PM - 03:30 PM
Moscone South - Room 207/208
Copyright © 2019 Oracle and/or its affiliates.
MySQL 8.0 Features for Developers
Dave Stokes
Community Manager
MySQL
Copyright © 2019 Oracle and/or its affiliates.
Community Edition!!
We will mainly be discussing the
COMMUNITY EDITION of MySQL and I
will try to point out any differences with
the ENTERPRISE EDITION.
Copyright © 2019 Oracle and/or its affiliates.
MySQL News
24 years old! Oracle owned for nine years!
MySQL 8.0 is the current Generally Available release
Document Store or MySQL w/o the SQL
Group Replication
We’re Hiring
Copyright © 2019 Oracle and/or its affiliates.
MySQL 8.0
What happened to
MySQL 6 and MySQL 7??
Copyright © 2019 Oracle and/or its affiliates.
MySQL 8?
• Previous GA is 5.7 (October 2015)
• MySQL Cluster is 7.6.9
• There was a MySQL 6 in the pre-Sun days, kind of like the PHP
6 that nobody really talks about except in hushed tones and
with great sadness
• Engineering thought the new data dictionary and other new
features justified the new major release number.
Copyright © 2019 Oracle and/or its affiliates.
1. Data Dictionary
Copyright © 2019 Oracle and/or its affiliates.
Data Dictionary
• Before MySQL 8 -- Meta Data Stored in files!
• You have had a plethora of files out there -- .FRM .MYD .MYI
.OPT and many more just waiting for something to go bad --
now relevant information is stored in the data dictionary!
Copyright © 2019 Oracle and/or its affiliates.
Data Dictionary
• This means you are no longer dependent in the number of
inodes on your system, somebody rm-ing the files at just the
wrong time, and a whole host of other problems.
• InnoDB is robust enough to rebuild all information to a point in
time in case of problems. So now we keep EVERYTHING in
internal data structures. And that leads to transactional ALTER
TABLE commands.
Copyright © 2019 Oracle and/or its affiliates.
The good news?
You can now have millions of tables in a schema
The bad news?
You can now have millions of tables in a schema
Copyright © 2019 Oracle and/or its affiliates.
2. Common Table Expressions &
Windowing Functions
Copyright © 2019 Oracle and/or its affiliates.
CTEs & Windowing Functions
• Long requested, Common Table Expression and Windowing
Functions have a wide variety of uses.
CTEs are handy for subquery-like statements often used in quick calculations
Windowing Functions are great for iterating over a selected set of rows for things like
statistical calculations
Copyright © 2019 Oracle and/or its affiliates.
Windowing Functions
• Traditionally you could use aggregate functions to on rows or
columns.
• WFs allow you to group rows (department, dates, etc) of like
data
Copyright © 2019 Oracle and/or its affiliates.
Windowing Functions -
The key word is OVER
SELECT name,
department_id,
salary,
SUM(salary)
OVER
(PARTITION BY department_id) AS department_total
FROM employee
ORDER BY department_id, name
Copyright © 2019 Oracle and/or its affiliates.
Windowing Functions -
Great with dates
SELECT date, amount,
sum(amount)
OVER w AS ‘sum’
FROM payments
WINDOW w AS
(ORDER BY date
RANGE BETWEEN
INTERVAL 1 WEEK PRECEDING
AND CURRENT ROW)
ORDER BY date;
Copyright © 2019 Oracle and/or its affiliates.
Common Table Expression –
The Keyword is WITH
WITH qn AS
(SELECT t1, t2, t3 FROM mytable)
SELECT t3, t1 FROM qn.
Copyright © 2019 Oracle and/or its affiliates.
CTEs – can be JOINed
WITH
cte1 AS (SELECT a, b FROM table1),
cte2 AS (SELECT c, d FROM table2)
SELECT b, d FROM cte1 JOIN cte2
WHERE cte1.a = cte2.c;
Copyright © 2019 Oracle and/or its affiliates.
CTEs – can be recursive
WITH RECURSIVE my_cte AS
(
SELECT 1 AS n
UNION ALL
SELECT 1+n FROM my_cte WHERE n<10
)
SELECT * FROM my_cte;
Copyright © 2019 Oracle and/or its affiliates.
+------+
| n |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+------+
10 rows in set (0,00 sec)
Lateral Derived Tables
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;
Copyright © 2019 Oracle and/or its affiliates.
3. Optimizer & Parser
Copyright © 2019 Oracle and/or its affiliates.
Optimizer Changes
• Descending indexes are really descending
• Optimizer trace output now includes more
information about filesort operations, such as key
and payload size and why addon fields are not
packed.
• The optimizer now supports hints that enable
specifying the order in which to join tables.
Copyright © 2019 Oracle and/or its affiliates.
Optimizer Changes
• New sys variable to include estimates for delete
marked records includes delete marked records in
calculation of table and index statistics. This work
was done to overcome a problem with "wrong"
statistics where an uncommitted transaction has
deleted all rows in the table.
• Index and Join Order Hints -- User controls order
• NOWAIT and SKIPPED LOCKED to bypass locked
records
Copyright © 2019 Oracle and/or its affiliates.
8.0.18 this month!
HASH JOINS
EXPLAIN ANALYSE
Random Passwords
Copyright © 2019 Oracle and/or its affiliates.
EXPLAIN format = JSON
{
"query_block": {
"select_id": 1,
"cost_info": {
"query_cost": "443.80"
},
"table": {
"table_name": "city",
"access_type": "ALL",
"rows_examined_per_scan": 4188,
"rows_produced_per_join": 418,
"filtered": "10.00",
"cost_info": {
"read_cost": "401.92",
"eval_cost": "41.88",
"prefix_cost": "443.80",
"data_read_per_join": "29K"
},
"used_columns": [
"ID",
"Name",
"CountryCode",
"District",
"Population"
],
"attached_condition": "(`world`.`city`.`Name` = 'Dallas')"
}
}
}
Copyright © 2019 Oracle and/or its affiliates.
Locking Changes
START TRANSACTION;
SELECT * FROM seats WHERE seat_rows.row_no
BETWEEN 2 AND 3 AND booked = 'NO'
FOR UPDATE SKIP LOCKED;
...
COMMIT;
START TRANSACTION
SELECT seat_no
FROM seats JOIN seat_rows USING ( row_no )
WHERE seat_no IN (3,4) AND seat_rows.row_no
IN (12)
AND booked = 'NO'
FOR UPDATE OF seats SKIP LOCKED
FOR SHARE OF seat_rows NOWAIT;
Copyright © 2019 Oracle and/or its affiliates.
Contention-Aware Transaction Scheduling CATS
The CATS algorithm is based on a simple
intuition: not all transactions are equal,
and not all objects are equal. When a
transaction already has a lock on many
popular objects, it should get priority when
it requests a new lock. In other words,
unblocking such a transaction will indirectly
contribute to unblocking many more
transactions in the system, which means
higher throughput and lower latency overall.
CATS knows how to handle hot rows/columns
Copyright © 2019 Oracle and/or its affiliates.
4. Roles
Copyright © 2019 Oracle and/or its affiliates.
Roles
• MySQL now supports roles, which are named
collections of privileges. Roles can be created and
dropped. Roles can have privileges granted to and
revoked from them. Roles can be granted to and
revoked from user accounts. The active applicable
roles for an account can be selected from among
those granted to the account, and can be changed
during sessions for that account.
• Set up and account for a certain function and then
assign users who need that function.
Copyright © 2019 Oracle and/or its affiliates.
5. Character Sets
MySQL 8.0
IS by default
UTF8MB4
Copyright © 2019 Oracle and/or its affiliates.
Before MySQL 8.0
• Previously UTF8 was actually UTF8MB3
• 3 bytes, no emojis
• Supplementary multilingual plane support limited
• No CJK Unified Ideographs Extension B are in
supplementary ideographic plane
• Upgrade problem expected!
• Still support GB18030 character set!
Copyright © 2019 Oracle and/or its affiliates.
Default Character Set for MySQL 8.0
• utf8mb4_0900_ai_ci:
• 0900 refers to Unicode Collation Algorithm version.
• ai refers to accent insensitive.
• ci refers to case insensitive.
Copyright © 2019 Oracle and/or its affiliates.
Why all this effort?
Copyright © 2019 Oracle and/or its affiliates.
6. Invisible & Functional Indexes
Copyright © 2019 Oracle and/or its affiliates.
What is an invisible index?
An invisible index is not used by the optimizer at all,
but is otherwise maintained normally. Indexes are
visible by default.
Invisible indexes make it possible to test the effect of
removing an index on query performance, without
making a destructive change that must be undone
should the index turn out to be required
Copyright © 2019 Oracle and/or its affiliates.
Setting/Unsetting Invisible Indexes
ALTER TABLE t1 ALTER INDEX i_idx INVISIBLE;
ALTER TABLE t1 ALTER INDEX i_idx VISIBLE;
Copyright © 2019 Oracle and/or its affiliates.
Functional Indexes – a calculated value
CREATE TABLE t1 (
col1 INT, col2 INT,
INDEX func_index ((ABS(col1)))
);
CREATE INDEX idx1 ON t1 ((col1 + col2));
ALTER TABLE t1 ADD INDEX ((col1 * 40) DESC);
Copyright © 2019 Oracle and/or its affiliates.
7. Set Persist
Copyright © 2019 Oracle and/or its affiliates.
SET PERSIST
mysql> SET PERSIST innodb_buffer_pool_size = 512 * 1024 * 1024;
Query OK, 0 rows affected (0.01 sec)
Copyright © 2019 Oracle and/or its affiliates.
Why Set Persist?
MySQL server can be configured and managed over a SQL
connection thus removing manual file operations (on
configuration files) to be done by DBAs. This feature addresses
the usability issues described above, and allows MySQL to be
more easily deployed and configured on cloud platforms.
The file mysqld-auto.cnf is created the first time a SET
PERSIST statement is executed. Further SET PERSIST
statement executions will append the contents to this file. This
file is in JSON format and can be parsed using json parser.
Timestamp & User recorded
Copyright © 2019 Oracle and/or its affiliates.
8. 3D Geometry
“GIS is a form of digital
mapping technology. Kind of
like Google Earth but better.”
-- Arnold Schwarzenegger
Governor of California
Copyright © 2019 Oracle and/or its affiliates.
Better GIS Support
• World can now be flat or ellipsoidal
• Coordinate system wrap around
• Boost.Geometry & Open GID
• Code related to geometry parsing, computing
bounding boxes and operations on them, from the
InnoDB layer to the Server layer so that geographic
R-trees can be supported easily in the future
without having to change anything in InnoDB
Copyright © 2019 Oracle and/or its affiliates.
9. JSON
Copyright © 2019 Oracle and/or its affiliates.
Why use JSON?
We can use a JSON field to eliminate one of the
issues of traditional database solutions: many-to-
many-joins
This allows more freedom to store unstructured data
(data with pieces missing or rapidly mutating)
Copyright © 2019 Oracle and/or its affiliates.
Why use JSON?
You still use SQL to work with the data via a database
connector but the JSON documents in the table can be
manipulated directly in code.
Joins can be expensive. Reducing how many places you
need to join data can help speed up your
queries. Removing joins may result in some level of
denormalization but can result in fast access to the data.
Copyright © 2019 Oracle and/or its affiliates.
Why use JSON?
You still use SQL to work with the data via a database
connector but the JSON documents in the table can be
manipulated directly in code.
Joins can be expensive. Reducing how many places you
need to join data can help speed up your
queries. Removing joins may result in some level of
denormalization but can result in fast access to the data.
Copyright © 2019 Oracle and/or its affiliates.
Why use JSON?
Schemaless designs are focused on mutability. Build
your applications with the ability to modify the
document as needed (and within reason)
Copyright © 2019 Oracle and/or its affiliates.
Why use JSON?
Remove Many-to-Many Relationships
Use embedded arrays and lists to store relationships
among documents. This can be as simple as embedding
the data in the document or embedding an array of
document ids in the document.
In the first case data is available as soon as you can read
the document and in the second it only takes one
additional step to retrieve the data. In cases of seldom
read (used) relationships, having the data linked with an
array of ids can be more efficient (less data to read on the
first pass)
Copyright © 2019 Oracle and/or its affiliates.
New: The ->> Operator
The following three expressions are equivalent:
• JSON_UNQUOTE( JSON_EXTRACT(mycol, "$.mypath") )
• JSON_UNQUOTE(mycol->"$.mypath")
• mycol->>"$.mypath"
Copyright © 2019 Oracle and/or its affiliates.
New: JSON_PRETTY
mysql> SELECT JSON_PRETTY(doc) FROM countryinfo LIMIT 1;
{
"GNP": 828,
"_id": "ABW",
"Name": "Aruba",
"IndepYear": null,
"geography": {
"Region": "Caribbean",
"Continent": "North America",
"SurfaceArea": 193
},
"government": {
"HeadOfState": "Beatrix",
"GovernmentForm": "Nonmetropolitan Territory of The Netherlands"
},
"demographics": {
"Population": 103000,
"LifeExpectancy": 78.4000015258789
}
}
Copyright © 2019 Oracle and/or its affiliates.
JSON_TABLE – Structure your unstructured Data
mysql> select country_name, IndyYear
from countryinfo,
JSON_TABLE(doc,"$" columns (
country_name char(20) path "$.Name",
IndyYear int path "$.IndepYear")
) as stuff
where IndyYear > 1992;
+----------------+----------+
| country_name | IndyYear |
+----------------+----------+
| Czech Republic | 1993 |
| Eritrea | 1993 |
| Palau | 1994 |
| Slovakia | 1993 |
+----------------+----------+
Copyright © 2019 Oracle and/or its affiliates.
JSON_TABLE – Structure your unstructured Data
mysql> select aaaa.name, aaaa.ordinal, aaaa.Grading
FROM restaurants,
JSON_TABE(doc, "$" COLUMNS(
name char(50) path "$.name",
style varchar(50) path "$.cuisine",
NESTED PATH '$.grades[*]'
COLUMNS (
ordinal FOR ORDINALITY,
Grading char(10) path "$.grade",
Score INT path "$.score"))
)
as aaaa limit 5;
+--------------------------------+---------+---------+
| name | ordinal | Grading |
+--------------------------------+---------+---------+
| Morris Park Bake Shop | 1 | A |
| Morris Park Bake Shop | 2 | A |
| Morris Park Bake Shop | 3 | A |
| Morris Park Bake Shop | 4 | A |
| Morris Park Bake Shop | 5 | B |
Copyright © 2019 Oracle and/or its affiliates.
MySQL Document Store
Relational databases such as MySQL usually required a
document schema to be defined before documents can be
stored.
A new plug-in enables you to use MySQL as a document store,
which is a schema-less, and therefore schema-flexible, storage
system for documents.
When using MySQL as a document store, to create documents
describing products you do not need to know and define all
possible attributes of any products before storing them and
operating with them.
Copyright © 2019 Oracle and/or its affiliates.
10. Resource Groups
Copyright © 2019 Oracle and/or its affiliates.
INSERT /*+ RESOURCE_GROUP(Batch) */ INTO t2 VALUES(2);
Groups can be established so that threads execute according to the resources
available to the group. Group attributes enable control over its resources, to enable
MySQL supports creation and management of resource groups, and permits
assigning threads running within the server to particular group or restrict resource
consumption by threads in the group. DBAs can modify these attributes as
appropriate for different workloads.
For example, to manage execution of batch jobs that need not execute with high
priority, a DBA can create a Batch resource group, and adjust its priority up or down
depending on how busy the server is. (Perhaps batch jobs assigned to the group
should run at lower priority during the day and at higher priority during the night.)
The DBA can also adjust the set of CPUs available to the group.
CREATE RESOURCE GROUP Batch
TYPE = USER
VCPU = 2-3 -- assumes a system with at least 4 CPUs
THREAD_PRIORITY = 10;
Copyright © 2019 Oracle and/or its affiliates.
11. Histograms
Copyright © 2019 Oracle and/or its affiliates.
11. Histograms
Relational databases such as MySQL usually
required a document schema to be defined before
documents can be stored.
A new plug-in enables you to use MySQL as a
document store, which is a schema-less, and
therefore schema-flexible, storage system for
documents.
A histogram is an approximation of the data
distribution for a column. It can tell you with a
reasonably accuracy whether your data is skewed
or not, which in turn will help the database server
understand the nature of data it contains.
Copyright © 2019 Oracle and/or its affiliates.
11. Histograms
Histograms comes in many different flavors, and in MySQL we
have chosen to support two different types: The “singleton”
histogram and the “equi-height” histogram. Common for all
histogram types is that they split the data set into a set of
“buckets”, and MySQL automatically divides the values into
buckets, and will also automatically decide what type of
histogram to create.
Note that the number of buckets must be specified, and can
be in the range from 1 to 1024. How many buckets you should
choose for your data set depends on several factors; how
many distinct values do you have, how skewed is your data
set, how high accuracy do you need etc. However, after a
certain amount of buckets the increased accuracy is rather
low. So we suggest to start at a lower number such as 32, and
increase it if you see that it doesn’t fit your needs.
Copyright © 2019 Oracle and/or its affiliates.
Creating a Histogram
mysql> ANALYZE TABLE customer UPDATE HISTOGRAM ON c_mktsegment WITH 1024 BUCKETS;
+---------------+-----------+----------+---------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+---------------+-----------+----------+---------------------------------------------------------+
| dbt3.customer | histogram | status | Histogram statistics created for column 'c_mktsegment'. |
+---------------+-----------+----------+---------------------------------------------------------+
Copyright © 2019 Oracle and/or its affiliates.
Two Reasons to Use Histograms
1. Maintaining an index has a cost. If you have an index, every
INSERT/UPDATE/DELETE causes the index to be updated.
This is not free, and will have an impact on your performance.
A histogram on the other hand is created once and never updated
unless you explicitly ask for it.
It will thus not hurt your INSERT/UPDATE/DELETE-performance.
Copyright © 2019 Oracle and/or its affiliates.
Two Reasons to Use Histograms
2. If you have an index, the optimizer will do what we call “index
dives” to estimate the number of records in a given range.
This also has a certain cost, and it might become too costly if you
have for instance very long IN-lists in your query.
Histogram statistics are much cheaper in this case, and might thus
be more suitable.
Copyright © 2019 Oracle and/or its affiliates.
12. X DevAPI
Copyright © 2019 Oracle and/or its affiliates.
X DevAPI or MySQL w/o
SQL!
• MySQL Document Store allows developers to work with SQL relational tables and
schema-less JSON collections.
• To make that possible MySQL has created the X Dev API which puts a strong focus
on CRUD by providing a fluent API allowing you to work with JSON documents in a
natural way.
• The X Protocol is a highly extensible and is optimized for CRUD as well as SQL API
operations.
•
Copyright © 2019 Oracle and/or its affiliates.
SQL + NoSQL
1GB documents versus Mongo’s 16MB!
Schema-less NoSQL JSON Document Store with ACID
compliance. And you can also access relational data!
Copyright © 2019 Oracle and/or its affiliates.
MySQL without the SQL!
$res = $coll->modify('name like :name')
->arrayInsert('job[0]', ‘DBA')
->bind(['name' => 'ENTITY'])
->execute();
Copyright © 2019 Oracle and/or its affiliates.
MySQL without the SQL!
$res = $table->delete()
->orderby('age desc')
->where('age < 20 and age > 12 and name != :name')
->bind(['name' => 'Tierney'])
->limit(2)
->execute();
Copyright © 2019 Oracle and/or its affiliates.
http://www.unofficialmysqlguide.com/
Copyright © 2019 Oracle and/or its affiliates.
Subqueries
CTEs and Views
Joins
Aggregation
Sorting
Partitioning
Query Rewrite
Invisible Indexes
Profiling Queries
JSON and Generated
Columns
Character Sets
Server Architecture
B+tree indexes
Explain
Optimizer Trace
Logical Transformations
Example Transformations
Cost-based Optimization
Hints
Comparing Plans
Composite Indexes
Covering Indexes
InnoDB Cluster
Highly Available MySQL
Server Clusters that can scale
from one to N servers
seamlessly!
Copyright © 2019 Oracle and/or its affiliates.
Copyright © 2019 Oracle and/or its affiliates.
MySQL & JSON – A Practical
Programming Guide
Lots of example code
A guide for those wanting to use MySQL’s JSON data type
Copyright © 2019 Oracle and/or its affiliates.
Thanks!
Slides will be on the OOW/CodeOne website or
https://slideshare.net/davidmstokes
David.Stokes@Oracle.com
Copyright © 2019 Oracle and/or its affiliates.

More Related Content

What's hot

MySQL without the SQL -- Cascadia PHP
MySQL without the SQL -- Cascadia PHPMySQL without the SQL -- Cascadia PHP
MySQL without the SQL -- Cascadia PHP
Dave Stokes
 
MySQL Indexes and Histograms - RMOUG Training Days 2022
MySQL Indexes and Histograms - RMOUG Training Days 2022MySQL Indexes and Histograms - RMOUG Training Days 2022
MySQL Indexes and Histograms - RMOUG Training Days 2022
Dave Stokes
 
Confoo 2021 -- MySQL New Features
Confoo 2021 -- MySQL New FeaturesConfoo 2021 -- MySQL New Features
Confoo 2021 -- MySQL New Features
Dave Stokes
 
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
Dave Stokes
 
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...
Dave Stokes
 
Scaling MySQL -- Swanseacon.co.uk
Scaling MySQL -- Swanseacon.co.uk Scaling MySQL -- Swanseacon.co.uk
Scaling MySQL -- Swanseacon.co.uk
Dave Stokes
 
Adding Value to HBase with IBM InfoSphere BigInsights and BigSQL
Adding Value to HBase with IBM InfoSphere BigInsights and BigSQLAdding Value to HBase with IBM InfoSphere BigInsights and BigSQL
Adding Value to HBase with IBM InfoSphere BigInsights and BigSQL
Piotr Pruski
 
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...
Dave Stokes
 
Taming Big Data with Big SQL 3.0
Taming Big Data with Big SQL 3.0Taming Big Data with Big SQL 3.0
Taming Big Data with Big SQL 3.0
Nicolas Morales
 
Big Data: Big SQL and HBase
Big Data:  Big SQL and HBase Big Data:  Big SQL and HBase
Big Data: Big SQL and HBase
Cynthia Saracco
 
Json within a relational database
Json within a relational databaseJson within a relational database
Json within a relational database
Dave Stokes
 
MYSQL-Database
MYSQL-DatabaseMYSQL-Database
MySQL ppt
MySQL ppt MySQL ppt
MySQL ppt
AtharvaSawant10
 
Big SQL 3.0 - Toronto Meetup -- May 2014
Big SQL 3.0 - Toronto Meetup -- May 2014Big SQL 3.0 - Toronto Meetup -- May 2014
Big SQL 3.0 - Toronto Meetup -- May 2014
Nicolas Morales
 
Big SQL 3.0: Datawarehouse-grade Performance on Hadoop - At last!
Big SQL 3.0: Datawarehouse-grade Performance on Hadoop - At last!Big SQL 3.0: Datawarehouse-grade Performance on Hadoop - At last!
Big SQL 3.0: Datawarehouse-grade Performance on Hadoop - At last!
Nicolas Morales
 
Oracle vs. MS SQL Server
Oracle vs. MS SQL ServerOracle vs. MS SQL Server
Oracle vs. MS SQL Server
Teresa Rothaar
 
MySQL 8.0 Featured for Developers
MySQL 8.0 Featured for DevelopersMySQL 8.0 Featured for Developers
MySQL 8.0 Featured for Developers
Dave Stokes
 
Hands-on-Lab: Adding Value to HBase with IBM InfoSphere BigInsights and BigSQL
Hands-on-Lab: Adding Value to HBase with IBM InfoSphere BigInsights and BigSQLHands-on-Lab: Adding Value to HBase with IBM InfoSphere BigInsights and BigSQL
Hands-on-Lab: Adding Value to HBase with IBM InfoSphere BigInsights and BigSQL
Piotr Pruski
 
Oracle 12.2 sharded database management
Oracle 12.2 sharded database managementOracle 12.2 sharded database management
Oracle 12.2 sharded database management
Leyi (Kamus) Zhang
 

What's hot (19)

MySQL without the SQL -- Cascadia PHP
MySQL without the SQL -- Cascadia PHPMySQL without the SQL -- Cascadia PHP
MySQL without the SQL -- Cascadia PHP
 
MySQL Indexes and Histograms - RMOUG Training Days 2022
MySQL Indexes and Histograms - RMOUG Training Days 2022MySQL Indexes and Histograms - RMOUG Training Days 2022
MySQL Indexes and Histograms - RMOUG Training Days 2022
 
Confoo 2021 -- MySQL New Features
Confoo 2021 -- MySQL New FeaturesConfoo 2021 -- MySQL New Features
Confoo 2021 -- MySQL New Features
 
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
 
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...
 
Scaling MySQL -- Swanseacon.co.uk
Scaling MySQL -- Swanseacon.co.uk Scaling MySQL -- Swanseacon.co.uk
Scaling MySQL -- Swanseacon.co.uk
 
Adding Value to HBase with IBM InfoSphere BigInsights and BigSQL
Adding Value to HBase with IBM InfoSphere BigInsights and BigSQLAdding Value to HBase with IBM InfoSphere BigInsights and BigSQL
Adding Value to HBase with IBM InfoSphere BigInsights and BigSQL
 
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...
 
Taming Big Data with Big SQL 3.0
Taming Big Data with Big SQL 3.0Taming Big Data with Big SQL 3.0
Taming Big Data with Big SQL 3.0
 
Big Data: Big SQL and HBase
Big Data:  Big SQL and HBase Big Data:  Big SQL and HBase
Big Data: Big SQL and HBase
 
Json within a relational database
Json within a relational databaseJson within a relational database
Json within a relational database
 
MYSQL-Database
MYSQL-DatabaseMYSQL-Database
MYSQL-Database
 
MySQL ppt
MySQL ppt MySQL ppt
MySQL ppt
 
Big SQL 3.0 - Toronto Meetup -- May 2014
Big SQL 3.0 - Toronto Meetup -- May 2014Big SQL 3.0 - Toronto Meetup -- May 2014
Big SQL 3.0 - Toronto Meetup -- May 2014
 
Big SQL 3.0: Datawarehouse-grade Performance on Hadoop - At last!
Big SQL 3.0: Datawarehouse-grade Performance on Hadoop - At last!Big SQL 3.0: Datawarehouse-grade Performance on Hadoop - At last!
Big SQL 3.0: Datawarehouse-grade Performance on Hadoop - At last!
 
Oracle vs. MS SQL Server
Oracle vs. MS SQL ServerOracle vs. MS SQL Server
Oracle vs. MS SQL Server
 
MySQL 8.0 Featured for Developers
MySQL 8.0 Featured for DevelopersMySQL 8.0 Featured for Developers
MySQL 8.0 Featured for Developers
 
Hands-on-Lab: Adding Value to HBase with IBM InfoSphere BigInsights and BigSQL
Hands-on-Lab: Adding Value to HBase with IBM InfoSphere BigInsights and BigSQLHands-on-Lab: Adding Value to HBase with IBM InfoSphere BigInsights and BigSQL
Hands-on-Lab: Adding Value to HBase with IBM InfoSphere BigInsights and BigSQL
 
Oracle 12.2 sharded database management
Oracle 12.2 sharded database managementOracle 12.2 sharded database management
Oracle 12.2 sharded database management
 

Similar to MySQL 8.0 Features -- Oracle CodeOne 2019, All Things Open 2019

Oracle CodeOne Foreign Keys Support in MySQL 8.0
Oracle CodeOne Foreign Keys Support in MySQL 8.0Oracle CodeOne Foreign Keys Support in MySQL 8.0
Oracle CodeOne Foreign Keys Support in MySQL 8.0
Dave Stokes
 
APEX Boston Meetup - October 1st, 2019
APEX Boston Meetup - October 1st, 2019APEX Boston Meetup - October 1st, 2019
APEX Boston Meetup - October 1st, 2019
msewtz
 
MySQL Performance Tuning: The Perfect Scalability (OOW2019)
MySQL Performance Tuning: The Perfect Scalability (OOW2019)MySQL Performance Tuning: The Perfect Scalability (OOW2019)
MySQL Performance Tuning: The Perfect Scalability (OOW2019)
Mirko Ortensi
 
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
Dave Stokes
 
Confoo 202 - MySQL Group Replication and ReplicaSet
Confoo 202 - MySQL Group Replication and ReplicaSetConfoo 202 - MySQL Group Replication and ReplicaSet
Confoo 202 - MySQL Group Replication and ReplicaSet
Dave Stokes
 
Make Your Application “Oracle RAC Ready” & Test For It
Make Your Application “Oracle RAC Ready” & Test For ItMake Your Application “Oracle RAC Ready” & Test For It
Make Your Application “Oracle RAC Ready” & Test For It
Markus Michalewicz
 
MySQL : State of the Dolphin May 2019
MySQL : State of the Dolphin May 2019MySQL : State of the Dolphin May 2019
MySQL : State of the Dolphin May 2019
Frederic Descamps
 
MySQL 8.0 Introduction to NoSQL + SQL
MySQL 8.0 Introduction to NoSQL + SQLMySQL 8.0 Introduction to NoSQL + SQL
MySQL 8.0 Introduction to NoSQL + SQL
Manuel Contreras
 
UNYOUG - APEX 19.2 New Features
UNYOUG - APEX 19.2 New FeaturesUNYOUG - APEX 19.2 New Features
UNYOUG - APEX 19.2 New Features
msewtz
 
2019 dev-marc sewtz-session-keynote-oracle_apex_19__neue_features_und_roadmap...
2019 dev-marc sewtz-session-keynote-oracle_apex_19__neue_features_und_roadmap...2019 dev-marc sewtz-session-keynote-oracle_apex_19__neue_features_und_roadmap...
2019 dev-marc sewtz-session-keynote-oracle_apex_19__neue_features_und_roadmap...
Mohamedcpcbma
 
Database@Home : The Future is Data Driven
Database@Home : The Future is Data DrivenDatabase@Home : The Future is Data Driven
Database@Home : The Future is Data Driven
Tammy Bednar
 
MySQL InnoDB Cluster: Management and Troubleshooting with MySQL Shell
MySQL InnoDB Cluster: Management and Troubleshooting with MySQL ShellMySQL InnoDB Cluster: Management and Troubleshooting with MySQL Shell
MySQL InnoDB Cluster: Management and Troubleshooting with MySQL Shell
Miguel Araújo
 
(Oracle) DBA and Other Skills Needed in 2020
(Oracle) DBA and Other Skills Needed in 2020(Oracle) DBA and Other Skills Needed in 2020
(Oracle) DBA and Other Skills Needed in 2020
Markus Michalewicz
 
Oracle NoSQL
Oracle NoSQLOracle NoSQL
Oracle NoSQL
Oracle Korea
 
MySQL 8.0 Released Update
MySQL 8.0 Released UpdateMySQL 8.0 Released Update
MySQL 8.0 Released Update
Keith Hollman
 
Oracle Autonomous Database - introducción técnica y hands on lab
Oracle Autonomous Database  - introducción técnica y hands on labOracle Autonomous Database  - introducción técnica y hands on lab
Oracle Autonomous Database - introducción técnica y hands on lab
"Diego \"Perico\"" Sanchez
 
Why Use an Oracle Database?
Why Use an Oracle Database?Why Use an Oracle Database?
Why Use an Oracle Database?
Markus Michalewicz
 
MySQL Performance Schema in MySQL 8.0
MySQL Performance Schema in MySQL 8.0MySQL Performance Schema in MySQL 8.0
MySQL Performance Schema in MySQL 8.0
Mayank Prasad
 
はじめてのOracle Cloud Infrastructure(Oracle Cloudウェビナーシリーズ: 2020年6月24日)
はじめてのOracle Cloud Infrastructure(Oracle Cloudウェビナーシリーズ: 2020年6月24日)はじめてのOracle Cloud Infrastructure(Oracle Cloudウェビナーシリーズ: 2020年6月24日)
はじめてのOracle Cloud Infrastructure(Oracle Cloudウェビナーシリーズ: 2020年6月24日)
オラクルエンジニア通信
 
Beginner's Guide to APEX
Beginner's Guide to APEXBeginner's Guide to APEX
Beginner's Guide to APEX
Anthony Rayner
 

Similar to MySQL 8.0 Features -- Oracle CodeOne 2019, All Things Open 2019 (20)

Oracle CodeOne Foreign Keys Support in MySQL 8.0
Oracle CodeOne Foreign Keys Support in MySQL 8.0Oracle CodeOne Foreign Keys Support in MySQL 8.0
Oracle CodeOne Foreign Keys Support in MySQL 8.0
 
APEX Boston Meetup - October 1st, 2019
APEX Boston Meetup - October 1st, 2019APEX Boston Meetup - October 1st, 2019
APEX Boston Meetup - October 1st, 2019
 
MySQL Performance Tuning: The Perfect Scalability (OOW2019)
MySQL Performance Tuning: The Perfect Scalability (OOW2019)MySQL Performance Tuning: The Perfect Scalability (OOW2019)
MySQL Performance Tuning: The Perfect Scalability (OOW2019)
 
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
 
Confoo 202 - MySQL Group Replication and ReplicaSet
Confoo 202 - MySQL Group Replication and ReplicaSetConfoo 202 - MySQL Group Replication and ReplicaSet
Confoo 202 - MySQL Group Replication and ReplicaSet
 
Make Your Application “Oracle RAC Ready” & Test For It
Make Your Application “Oracle RAC Ready” & Test For ItMake Your Application “Oracle RAC Ready” & Test For It
Make Your Application “Oracle RAC Ready” & Test For It
 
MySQL : State of the Dolphin May 2019
MySQL : State of the Dolphin May 2019MySQL : State of the Dolphin May 2019
MySQL : State of the Dolphin May 2019
 
MySQL 8.0 Introduction to NoSQL + SQL
MySQL 8.0 Introduction to NoSQL + SQLMySQL 8.0 Introduction to NoSQL + SQL
MySQL 8.0 Introduction to NoSQL + SQL
 
UNYOUG - APEX 19.2 New Features
UNYOUG - APEX 19.2 New FeaturesUNYOUG - APEX 19.2 New Features
UNYOUG - APEX 19.2 New Features
 
2019 dev-marc sewtz-session-keynote-oracle_apex_19__neue_features_und_roadmap...
2019 dev-marc sewtz-session-keynote-oracle_apex_19__neue_features_und_roadmap...2019 dev-marc sewtz-session-keynote-oracle_apex_19__neue_features_und_roadmap...
2019 dev-marc sewtz-session-keynote-oracle_apex_19__neue_features_und_roadmap...
 
Database@Home : The Future is Data Driven
Database@Home : The Future is Data DrivenDatabase@Home : The Future is Data Driven
Database@Home : The Future is Data Driven
 
MySQL InnoDB Cluster: Management and Troubleshooting with MySQL Shell
MySQL InnoDB Cluster: Management and Troubleshooting with MySQL ShellMySQL InnoDB Cluster: Management and Troubleshooting with MySQL Shell
MySQL InnoDB Cluster: Management and Troubleshooting with MySQL Shell
 
(Oracle) DBA and Other Skills Needed in 2020
(Oracle) DBA and Other Skills Needed in 2020(Oracle) DBA and Other Skills Needed in 2020
(Oracle) DBA and Other Skills Needed in 2020
 
Oracle NoSQL
Oracle NoSQLOracle NoSQL
Oracle NoSQL
 
MySQL 8.0 Released Update
MySQL 8.0 Released UpdateMySQL 8.0 Released Update
MySQL 8.0 Released Update
 
Oracle Autonomous Database - introducción técnica y hands on lab
Oracle Autonomous Database  - introducción técnica y hands on labOracle Autonomous Database  - introducción técnica y hands on lab
Oracle Autonomous Database - introducción técnica y hands on lab
 
Why Use an Oracle Database?
Why Use an Oracle Database?Why Use an Oracle Database?
Why Use an Oracle Database?
 
MySQL Performance Schema in MySQL 8.0
MySQL Performance Schema in MySQL 8.0MySQL Performance Schema in MySQL 8.0
MySQL Performance Schema in MySQL 8.0
 
はじめてのOracle Cloud Infrastructure(Oracle Cloudウェビナーシリーズ: 2020年6月24日)
はじめてのOracle Cloud Infrastructure(Oracle Cloudウェビナーシリーズ: 2020年6月24日)はじめてのOracle Cloud Infrastructure(Oracle Cloudウェビナーシリーズ: 2020年6月24日)
はじめてのOracle Cloud Infrastructure(Oracle Cloudウェビナーシリーズ: 2020年6月24日)
 
Beginner's Guide to APEX
Beginner's Guide to APEXBeginner's Guide to APEX
Beginner's Guide to APEX
 

More from Dave Stokes

Locking Down Your MySQL Database.pptx
Locking Down Your MySQL Database.pptxLocking Down Your MySQL Database.pptx
Locking Down Your MySQL Database.pptx
Dave Stokes
 
Linuxfest Northwest 2022 - MySQL 8.0 Nre Features
Linuxfest Northwest 2022 - MySQL 8.0 Nre FeaturesLinuxfest Northwest 2022 - MySQL 8.0 Nre Features
Linuxfest Northwest 2022 - MySQL 8.0 Nre Features
Dave Stokes
 
Windowing Functions - Little Rock Tech fest 2019
Windowing Functions - Little Rock Tech fest 2019Windowing Functions - Little Rock Tech fest 2019
Windowing Functions - Little Rock Tech fest 2019
Dave Stokes
 
The Proper Care and Feeding of MySQL Databases
The Proper Care and Feeding of MySQL DatabasesThe Proper Care and Feeding of MySQL Databases
The Proper Care and Feeding of MySQL Databases
Dave Stokes
 
MySQL Without The SQL -- Oh My! PHP[Tek] June 2018
MySQL Without The SQL -- Oh My! PHP[Tek] June 2018MySQL Without The SQL -- Oh My! PHP[Tek] June 2018
MySQL Without The SQL -- Oh My! PHP[Tek] June 2018
Dave Stokes
 
Presentation Skills for Open Source Folks
Presentation Skills for Open Source FolksPresentation Skills for Open Source Folks
Presentation Skills for Open Source Folks
Dave Stokes
 
MySQL Without the SQL -- Oh My! Longhorn PHP Conference
MySQL Without the SQL -- Oh My!  Longhorn PHP ConferenceMySQL Without the SQL -- Oh My!  Longhorn PHP Conference
MySQL Without the SQL -- Oh My! Longhorn PHP Conference
Dave Stokes
 
ConFoo MySQL Replication Evolution : From Simple to Group Replication
ConFoo  MySQL Replication Evolution : From Simple to Group ReplicationConFoo  MySQL Replication Evolution : From Simple to Group Replication
ConFoo MySQL Replication Evolution : From Simple to Group Replication
Dave Stokes
 
Advanced MySQL Query Optimizations
Advanced MySQL Query OptimizationsAdvanced MySQL Query Optimizations
Advanced MySQL Query Optimizations
Dave Stokes
 
Making MySQL Agile-ish
Making MySQL Agile-ishMaking MySQL Agile-ish
Making MySQL Agile-ish
Dave Stokes
 
PHP Database Programming Basics -- Northeast PHP
PHP Database Programming Basics -- Northeast PHPPHP Database Programming Basics -- Northeast PHP
PHP Database Programming Basics -- Northeast PHP
Dave Stokes
 
MySQL 101 PHPTek 2017
MySQL 101 PHPTek 2017MySQL 101 PHPTek 2017
MySQL 101 PHPTek 2017
Dave Stokes
 
MySQL Replication Evolution -- Confoo Montreal 2017
MySQL Replication Evolution -- Confoo Montreal 2017MySQL Replication Evolution -- Confoo Montreal 2017
MySQL Replication Evolution -- Confoo Montreal 2017
Dave Stokes
 
MySQL's JSON Data Type and Document Store
MySQL's JSON Data Type and Document StoreMySQL's JSON Data Type and Document Store
MySQL's JSON Data Type and Document Store
Dave Stokes
 
Five Database Mistakes and how to fix them -- Confoo Vancouver
Five Database Mistakes and how to fix them -- Confoo VancouverFive Database Mistakes and how to fix them -- Confoo Vancouver
Five Database Mistakes and how to fix them -- Confoo Vancouver
Dave Stokes
 
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
Dave Stokes
 
Why Your Database Queries Stink -SeaGl.org November 11th, 2016
Why Your Database Queries Stink -SeaGl.org November 11th, 2016Why Your Database Queries Stink -SeaGl.org November 11th, 2016
Why Your Database Queries Stink -SeaGl.org November 11th, 2016
Dave Stokes
 
All Things Open 2016 -- Database Programming for Newbies
All Things Open 2016 -- Database Programming for NewbiesAll Things Open 2016 -- Database Programming for Newbies
All Things Open 2016 -- Database Programming for Newbies
Dave Stokes
 
MySQL as a Document Store
MySQL as a Document StoreMySQL as a Document Store
MySQL as a Document Store
Dave Stokes
 
MySQL Replication Update -- Zendcon 2016
MySQL Replication Update -- Zendcon 2016MySQL Replication Update -- Zendcon 2016
MySQL Replication Update -- Zendcon 2016
Dave Stokes
 

More from Dave Stokes (20)

Locking Down Your MySQL Database.pptx
Locking Down Your MySQL Database.pptxLocking Down Your MySQL Database.pptx
Locking Down Your MySQL Database.pptx
 
Linuxfest Northwest 2022 - MySQL 8.0 Nre Features
Linuxfest Northwest 2022 - MySQL 8.0 Nre FeaturesLinuxfest Northwest 2022 - MySQL 8.0 Nre Features
Linuxfest Northwest 2022 - MySQL 8.0 Nre Features
 
Windowing Functions - Little Rock Tech fest 2019
Windowing Functions - Little Rock Tech fest 2019Windowing Functions - Little Rock Tech fest 2019
Windowing Functions - Little Rock Tech fest 2019
 
The Proper Care and Feeding of MySQL Databases
The Proper Care and Feeding of MySQL DatabasesThe Proper Care and Feeding of MySQL Databases
The Proper Care and Feeding of MySQL Databases
 
MySQL Without The SQL -- Oh My! PHP[Tek] June 2018
MySQL Without The SQL -- Oh My! PHP[Tek] June 2018MySQL Without The SQL -- Oh My! PHP[Tek] June 2018
MySQL Without The SQL -- Oh My! PHP[Tek] June 2018
 
Presentation Skills for Open Source Folks
Presentation Skills for Open Source FolksPresentation Skills for Open Source Folks
Presentation Skills for Open Source Folks
 
MySQL Without the SQL -- Oh My! Longhorn PHP Conference
MySQL Without the SQL -- Oh My!  Longhorn PHP ConferenceMySQL Without the SQL -- Oh My!  Longhorn PHP Conference
MySQL Without the SQL -- Oh My! Longhorn PHP Conference
 
ConFoo MySQL Replication Evolution : From Simple to Group Replication
ConFoo  MySQL Replication Evolution : From Simple to Group ReplicationConFoo  MySQL Replication Evolution : From Simple to Group Replication
ConFoo MySQL Replication Evolution : From Simple to Group Replication
 
Advanced MySQL Query Optimizations
Advanced MySQL Query OptimizationsAdvanced MySQL Query Optimizations
Advanced MySQL Query Optimizations
 
Making MySQL Agile-ish
Making MySQL Agile-ishMaking MySQL Agile-ish
Making MySQL Agile-ish
 
PHP Database Programming Basics -- Northeast PHP
PHP Database Programming Basics -- Northeast PHPPHP Database Programming Basics -- Northeast PHP
PHP Database Programming Basics -- Northeast PHP
 
MySQL 101 PHPTek 2017
MySQL 101 PHPTek 2017MySQL 101 PHPTek 2017
MySQL 101 PHPTek 2017
 
MySQL Replication Evolution -- Confoo Montreal 2017
MySQL Replication Evolution -- Confoo Montreal 2017MySQL Replication Evolution -- Confoo Montreal 2017
MySQL Replication Evolution -- Confoo Montreal 2017
 
MySQL's JSON Data Type and Document Store
MySQL's JSON Data Type and Document StoreMySQL's JSON Data Type and Document Store
MySQL's JSON Data Type and Document Store
 
Five Database Mistakes and how to fix them -- Confoo Vancouver
Five Database Mistakes and how to fix them -- Confoo VancouverFive Database Mistakes and how to fix them -- Confoo Vancouver
Five Database Mistakes and how to fix them -- Confoo Vancouver
 
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
 
Why Your Database Queries Stink -SeaGl.org November 11th, 2016
Why Your Database Queries Stink -SeaGl.org November 11th, 2016Why Your Database Queries Stink -SeaGl.org November 11th, 2016
Why Your Database Queries Stink -SeaGl.org November 11th, 2016
 
All Things Open 2016 -- Database Programming for Newbies
All Things Open 2016 -- Database Programming for NewbiesAll Things Open 2016 -- Database Programming for Newbies
All Things Open 2016 -- Database Programming for Newbies
 
MySQL as a Document Store
MySQL as a Document StoreMySQL as a Document Store
MySQL as a Document Store
 
MySQL Replication Update -- Zendcon 2016
MySQL Replication Update -- Zendcon 2016MySQL Replication Update -- Zendcon 2016
MySQL Replication Update -- Zendcon 2016
 

Recently uploaded

APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
eutxy
 
test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
Arif0071
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
3ipehhoa
 
How to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptxHow to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptx
Gal Baras
 
BASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptxBASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptx
natyesu
 
This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!
nirahealhty
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Brad Spiegel Macon GA
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
3ipehhoa
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
keoku
 
Internet-Security-Safeguarding-Your-Digital-World (1).pptx
Internet-Security-Safeguarding-Your-Digital-World (1).pptxInternet-Security-Safeguarding-Your-Digital-World (1).pptx
Internet-Security-Safeguarding-Your-Digital-World (1).pptx
VivekSinghShekhawat2
 
Latest trends in computer networking.pptx
Latest trends in computer networking.pptxLatest trends in computer networking.pptx
Latest trends in computer networking.pptx
JungkooksNonexistent
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
ufdana
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
Javier Lasa
 
Comptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guideComptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guide
GTProductions1
 
1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...
JeyaPerumal1
 
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shopHistory+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
laozhuseo02
 
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesMulti-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Sanjeev Rampal
 
The+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptxThe+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptx
laozhuseo02
 
guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...
Rogerio Filho
 

Recently uploaded (20)

APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
 
test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
 
How to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptxHow to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptx
 
BASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptxBASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptx
 
This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
 
Internet-Security-Safeguarding-Your-Digital-World (1).pptx
Internet-Security-Safeguarding-Your-Digital-World (1).pptxInternet-Security-Safeguarding-Your-Digital-World (1).pptx
Internet-Security-Safeguarding-Your-Digital-World (1).pptx
 
Latest trends in computer networking.pptx
Latest trends in computer networking.pptxLatest trends in computer networking.pptx
Latest trends in computer networking.pptx
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
 
Comptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guideComptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guide
 
1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...
 
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shopHistory+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
 
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesMulti-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
 
The+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptxThe+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptx
 
guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...
 

MySQL 8.0 Features -- Oracle CodeOne 2019, All Things Open 2019

  • 1. Oracle OpenWorld 2019 S A N F R A N C I S C O Copyright © 2019 Oracle and/or its affiliates.
  • 2. 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. Statements in this presentation relating to Oracle’s future plans, expectations, beliefs, intentions and prospects are “forward-looking statements” and are subject to material risks and uncertainties. A detailed discussion of these factors and other risks that affect our business is contained in Oracle’s Securities and Exchange Commission (SEC) filings, including our most recent reports on Form 10-K and Form 10-Q under the heading “Risk Factors.” These filings are available on the SEC’s website or on Oracle’s website at http://www.oracle.com/investor. All information in this presentation is current as of September 2019 and Oracle undertakes no duty to update any statement in light of new information or future events. Safe Harbor Copyright © 2019 Oracle and/or its affiliates.
  • 3. State of the Dolphin During the MySQL keynote at Oracle OpenWorld and Oracle Code One 2019, Rich Mason, general manager of MySQL at Oracle; Tomas Ulin, VP of MySQL Engineering at Oracle; and Nipun Agarwal, VP, Oracle Labs discuss Oracle’s latest MySQL innovations and plans. In addition, some key MySQL customers present how MySQL powers their mission-critical applications. SPEAKERS • Rich Mason, SVP & GM MySQL GBU, Oracle • Tomas Ulin, Vice President, MySQL Engineering, Oracle • Nipun Agarwal, Vice President, Oracle Labs, Oracle Code One Tracks: Database, MySQL Session Type: Product Overview and Roadmap Session Monday, September 16, 01:30 PM - 03:30 PM Moscone South - Room 207/208 Copyright © 2019 Oracle and/or its affiliates.
  • 4. MySQL 8.0 Features for Developers Dave Stokes Community Manager MySQL Copyright © 2019 Oracle and/or its affiliates.
  • 5. Community Edition!! We will mainly be discussing the COMMUNITY EDITION of MySQL and I will try to point out any differences with the ENTERPRISE EDITION. Copyright © 2019 Oracle and/or its affiliates.
  • 6. MySQL News 24 years old! Oracle owned for nine years! MySQL 8.0 is the current Generally Available release Document Store or MySQL w/o the SQL Group Replication We’re Hiring Copyright © 2019 Oracle and/or its affiliates.
  • 7. MySQL 8.0 What happened to MySQL 6 and MySQL 7?? Copyright © 2019 Oracle and/or its affiliates.
  • 8. MySQL 8? • Previous GA is 5.7 (October 2015) • MySQL Cluster is 7.6.9 • There was a MySQL 6 in the pre-Sun days, kind of like the PHP 6 that nobody really talks about except in hushed tones and with great sadness • Engineering thought the new data dictionary and other new features justified the new major release number. Copyright © 2019 Oracle and/or its affiliates.
  • 9. 1. Data Dictionary Copyright © 2019 Oracle and/or its affiliates.
  • 10. Data Dictionary • Before MySQL 8 -- Meta Data Stored in files! • You have had a plethora of files out there -- .FRM .MYD .MYI .OPT and many more just waiting for something to go bad -- now relevant information is stored in the data dictionary! Copyright © 2019 Oracle and/or its affiliates.
  • 11. Data Dictionary • This means you are no longer dependent in the number of inodes on your system, somebody rm-ing the files at just the wrong time, and a whole host of other problems. • InnoDB is robust enough to rebuild all information to a point in time in case of problems. So now we keep EVERYTHING in internal data structures. And that leads to transactional ALTER TABLE commands. Copyright © 2019 Oracle and/or its affiliates.
  • 12. The good news? You can now have millions of tables in a schema The bad news? You can now have millions of tables in a schema Copyright © 2019 Oracle and/or its affiliates.
  • 13. 2. Common Table Expressions & Windowing Functions Copyright © 2019 Oracle and/or its affiliates.
  • 14. CTEs & Windowing Functions • Long requested, Common Table Expression and Windowing Functions have a wide variety of uses. CTEs are handy for subquery-like statements often used in quick calculations Windowing Functions are great for iterating over a selected set of rows for things like statistical calculations Copyright © 2019 Oracle and/or its affiliates.
  • 15. Windowing Functions • Traditionally you could use aggregate functions to on rows or columns. • WFs allow you to group rows (department, dates, etc) of like data Copyright © 2019 Oracle and/or its affiliates.
  • 16. Windowing Functions - The key word is OVER SELECT name, department_id, salary, SUM(salary) OVER (PARTITION BY department_id) AS department_total FROM employee ORDER BY department_id, name Copyright © 2019 Oracle and/or its affiliates.
  • 17. Windowing Functions - Great with dates SELECT date, amount, sum(amount) OVER w AS ‘sum’ FROM payments WINDOW w AS (ORDER BY date RANGE BETWEEN INTERVAL 1 WEEK PRECEDING AND CURRENT ROW) ORDER BY date; Copyright © 2019 Oracle and/or its affiliates.
  • 18. Common Table Expression – The Keyword is WITH WITH qn AS (SELECT t1, t2, t3 FROM mytable) SELECT t3, t1 FROM qn. Copyright © 2019 Oracle and/or its affiliates.
  • 19. CTEs – can be JOINed WITH cte1 AS (SELECT a, b FROM table1), cte2 AS (SELECT c, d FROM table2) SELECT b, d FROM cte1 JOIN cte2 WHERE cte1.a = cte2.c; Copyright © 2019 Oracle and/or its affiliates.
  • 20. CTEs – can be recursive WITH RECURSIVE my_cte AS ( SELECT 1 AS n UNION ALL SELECT 1+n FROM my_cte WHERE n<10 ) SELECT * FROM my_cte; Copyright © 2019 Oracle and/or its affiliates. +------+ | n | +------+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | +------+ 10 rows in set (0,00 sec)
  • 21. Lateral Derived Tables 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; Copyright © 2019 Oracle and/or its affiliates.
  • 22. 3. Optimizer & Parser Copyright © 2019 Oracle and/or its affiliates.
  • 23. Optimizer Changes • Descending indexes are really descending • Optimizer trace output now includes more information about filesort operations, such as key and payload size and why addon fields are not packed. • The optimizer now supports hints that enable specifying the order in which to join tables. Copyright © 2019 Oracle and/or its affiliates.
  • 24. Optimizer Changes • New sys variable to include estimates for delete marked records includes delete marked records in calculation of table and index statistics. This work was done to overcome a problem with "wrong" statistics where an uncommitted transaction has deleted all rows in the table. • Index and Join Order Hints -- User controls order • NOWAIT and SKIPPED LOCKED to bypass locked records Copyright © 2019 Oracle and/or its affiliates.
  • 25. 8.0.18 this month! HASH JOINS EXPLAIN ANALYSE Random Passwords Copyright © 2019 Oracle and/or its affiliates.
  • 26. EXPLAIN format = JSON { "query_block": { "select_id": 1, "cost_info": { "query_cost": "443.80" }, "table": { "table_name": "city", "access_type": "ALL", "rows_examined_per_scan": 4188, "rows_produced_per_join": 418, "filtered": "10.00", "cost_info": { "read_cost": "401.92", "eval_cost": "41.88", "prefix_cost": "443.80", "data_read_per_join": "29K" }, "used_columns": [ "ID", "Name", "CountryCode", "District", "Population" ], "attached_condition": "(`world`.`city`.`Name` = 'Dallas')" } } } Copyright © 2019 Oracle and/or its affiliates.
  • 27. Locking Changes START TRANSACTION; SELECT * FROM seats WHERE seat_rows.row_no BETWEEN 2 AND 3 AND booked = 'NO' FOR UPDATE SKIP LOCKED; ... COMMIT; START TRANSACTION SELECT seat_no FROM seats JOIN seat_rows USING ( row_no ) WHERE seat_no IN (3,4) AND seat_rows.row_no IN (12) AND booked = 'NO' FOR UPDATE OF seats SKIP LOCKED FOR SHARE OF seat_rows NOWAIT; Copyright © 2019 Oracle and/or its affiliates.
  • 28. Contention-Aware Transaction Scheduling CATS The CATS algorithm is based on a simple intuition: not all transactions are equal, and not all objects are equal. When a transaction already has a lock on many popular objects, it should get priority when it requests a new lock. In other words, unblocking such a transaction will indirectly contribute to unblocking many more transactions in the system, which means higher throughput and lower latency overall. CATS knows how to handle hot rows/columns Copyright © 2019 Oracle and/or its affiliates.
  • 29. 4. Roles Copyright © 2019 Oracle and/or its affiliates.
  • 30. Roles • MySQL now supports roles, which are named collections of privileges. Roles can be created and dropped. Roles can have privileges granted to and revoked from them. Roles can be granted to and revoked from user accounts. The active applicable roles for an account can be selected from among those granted to the account, and can be changed during sessions for that account. • Set up and account for a certain function and then assign users who need that function. Copyright © 2019 Oracle and/or its affiliates.
  • 31. 5. Character Sets MySQL 8.0 IS by default UTF8MB4 Copyright © 2019 Oracle and/or its affiliates.
  • 32. Before MySQL 8.0 • Previously UTF8 was actually UTF8MB3 • 3 bytes, no emojis • Supplementary multilingual plane support limited • No CJK Unified Ideographs Extension B are in supplementary ideographic plane • Upgrade problem expected! • Still support GB18030 character set! Copyright © 2019 Oracle and/or its affiliates.
  • 33. Default Character Set for MySQL 8.0 • utf8mb4_0900_ai_ci: • 0900 refers to Unicode Collation Algorithm version. • ai refers to accent insensitive. • ci refers to case insensitive. Copyright © 2019 Oracle and/or its affiliates.
  • 34. Why all this effort? Copyright © 2019 Oracle and/or its affiliates.
  • 35. 6. Invisible & Functional Indexes Copyright © 2019 Oracle and/or its affiliates.
  • 36. What is an invisible index? An invisible index is not used by the optimizer at all, but is otherwise maintained normally. Indexes are visible by default. Invisible indexes make it possible to test the effect of removing an index on query performance, without making a destructive change that must be undone should the index turn out to be required Copyright © 2019 Oracle and/or its affiliates.
  • 37. Setting/Unsetting Invisible Indexes ALTER TABLE t1 ALTER INDEX i_idx INVISIBLE; ALTER TABLE t1 ALTER INDEX i_idx VISIBLE; Copyright © 2019 Oracle and/or its affiliates.
  • 38. Functional Indexes – a calculated value CREATE TABLE t1 ( col1 INT, col2 INT, INDEX func_index ((ABS(col1))) ); CREATE INDEX idx1 ON t1 ((col1 + col2)); ALTER TABLE t1 ADD INDEX ((col1 * 40) DESC); Copyright © 2019 Oracle and/or its affiliates.
  • 39. 7. Set Persist Copyright © 2019 Oracle and/or its affiliates.
  • 40. SET PERSIST mysql> SET PERSIST innodb_buffer_pool_size = 512 * 1024 * 1024; Query OK, 0 rows affected (0.01 sec) Copyright © 2019 Oracle and/or its affiliates.
  • 41. Why Set Persist? MySQL server can be configured and managed over a SQL connection thus removing manual file operations (on configuration files) to be done by DBAs. This feature addresses the usability issues described above, and allows MySQL to be more easily deployed and configured on cloud platforms. The file mysqld-auto.cnf is created the first time a SET PERSIST statement is executed. Further SET PERSIST statement executions will append the contents to this file. This file is in JSON format and can be parsed using json parser. Timestamp & User recorded Copyright © 2019 Oracle and/or its affiliates.
  • 42. 8. 3D Geometry “GIS is a form of digital mapping technology. Kind of like Google Earth but better.” -- Arnold Schwarzenegger Governor of California Copyright © 2019 Oracle and/or its affiliates.
  • 43. Better GIS Support • World can now be flat or ellipsoidal • Coordinate system wrap around • Boost.Geometry & Open GID • Code related to geometry parsing, computing bounding boxes and operations on them, from the InnoDB layer to the Server layer so that geographic R-trees can be supported easily in the future without having to change anything in InnoDB Copyright © 2019 Oracle and/or its affiliates.
  • 44. 9. JSON Copyright © 2019 Oracle and/or its affiliates.
  • 45. Why use JSON? We can use a JSON field to eliminate one of the issues of traditional database solutions: many-to- many-joins This allows more freedom to store unstructured data (data with pieces missing or rapidly mutating) Copyright © 2019 Oracle and/or its affiliates.
  • 46. Why use JSON? You still use SQL to work with the data via a database connector but the JSON documents in the table can be manipulated directly in code. Joins can be expensive. Reducing how many places you need to join data can help speed up your queries. Removing joins may result in some level of denormalization but can result in fast access to the data. Copyright © 2019 Oracle and/or its affiliates.
  • 47. Why use JSON? You still use SQL to work with the data via a database connector but the JSON documents in the table can be manipulated directly in code. Joins can be expensive. Reducing how many places you need to join data can help speed up your queries. Removing joins may result in some level of denormalization but can result in fast access to the data. Copyright © 2019 Oracle and/or its affiliates.
  • 48. Why use JSON? Schemaless designs are focused on mutability. Build your applications with the ability to modify the document as needed (and within reason) Copyright © 2019 Oracle and/or its affiliates.
  • 49. Why use JSON? Remove Many-to-Many Relationships Use embedded arrays and lists to store relationships among documents. This can be as simple as embedding the data in the document or embedding an array of document ids in the document. In the first case data is available as soon as you can read the document and in the second it only takes one additional step to retrieve the data. In cases of seldom read (used) relationships, having the data linked with an array of ids can be more efficient (less data to read on the first pass) Copyright © 2019 Oracle and/or its affiliates.
  • 50. New: The ->> Operator The following three expressions are equivalent: • JSON_UNQUOTE( JSON_EXTRACT(mycol, "$.mypath") ) • JSON_UNQUOTE(mycol->"$.mypath") • mycol->>"$.mypath" Copyright © 2019 Oracle and/or its affiliates.
  • 51. New: JSON_PRETTY mysql> SELECT JSON_PRETTY(doc) FROM countryinfo LIMIT 1; { "GNP": 828, "_id": "ABW", "Name": "Aruba", "IndepYear": null, "geography": { "Region": "Caribbean", "Continent": "North America", "SurfaceArea": 193 }, "government": { "HeadOfState": "Beatrix", "GovernmentForm": "Nonmetropolitan Territory of The Netherlands" }, "demographics": { "Population": 103000, "LifeExpectancy": 78.4000015258789 } } Copyright © 2019 Oracle and/or its affiliates.
  • 52. JSON_TABLE – Structure your unstructured Data mysql> select country_name, IndyYear from countryinfo, JSON_TABLE(doc,"$" columns ( country_name char(20) path "$.Name", IndyYear int path "$.IndepYear") ) as stuff where IndyYear > 1992; +----------------+----------+ | country_name | IndyYear | +----------------+----------+ | Czech Republic | 1993 | | Eritrea | 1993 | | Palau | 1994 | | Slovakia | 1993 | +----------------+----------+ Copyright © 2019 Oracle and/or its affiliates.
  • 53. JSON_TABLE – Structure your unstructured Data mysql> select aaaa.name, aaaa.ordinal, aaaa.Grading FROM restaurants, JSON_TABE(doc, "$" COLUMNS( name char(50) path "$.name", style varchar(50) path "$.cuisine", NESTED PATH '$.grades[*]' COLUMNS ( ordinal FOR ORDINALITY, Grading char(10) path "$.grade", Score INT path "$.score")) ) as aaaa limit 5; +--------------------------------+---------+---------+ | name | ordinal | Grading | +--------------------------------+---------+---------+ | Morris Park Bake Shop | 1 | A | | Morris Park Bake Shop | 2 | A | | Morris Park Bake Shop | 3 | A | | Morris Park Bake Shop | 4 | A | | Morris Park Bake Shop | 5 | B | Copyright © 2019 Oracle and/or its affiliates.
  • 54. MySQL Document Store Relational databases such as MySQL usually required a document schema to be defined before documents can be stored. A new plug-in enables you to use MySQL as a document store, which is a schema-less, and therefore schema-flexible, storage system for documents. When using MySQL as a document store, to create documents describing products you do not need to know and define all possible attributes of any products before storing them and operating with them. Copyright © 2019 Oracle and/or its affiliates.
  • 55. 10. Resource Groups Copyright © 2019 Oracle and/or its affiliates.
  • 56. INSERT /*+ RESOURCE_GROUP(Batch) */ INTO t2 VALUES(2); Groups can be established so that threads execute according to the resources available to the group. Group attributes enable control over its resources, to enable MySQL supports creation and management of resource groups, and permits assigning threads running within the server to particular group or restrict resource consumption by threads in the group. DBAs can modify these attributes as appropriate for different workloads. For example, to manage execution of batch jobs that need not execute with high priority, a DBA can create a Batch resource group, and adjust its priority up or down depending on how busy the server is. (Perhaps batch jobs assigned to the group should run at lower priority during the day and at higher priority during the night.) The DBA can also adjust the set of CPUs available to the group. CREATE RESOURCE GROUP Batch TYPE = USER VCPU = 2-3 -- assumes a system with at least 4 CPUs THREAD_PRIORITY = 10; Copyright © 2019 Oracle and/or its affiliates.
  • 57. 11. Histograms Copyright © 2019 Oracle and/or its affiliates.
  • 58. 11. Histograms Relational databases such as MySQL usually required a document schema to be defined before documents can be stored. A new plug-in enables you to use MySQL as a document store, which is a schema-less, and therefore schema-flexible, storage system for documents. A histogram is an approximation of the data distribution for a column. It can tell you with a reasonably accuracy whether your data is skewed or not, which in turn will help the database server understand the nature of data it contains. Copyright © 2019 Oracle and/or its affiliates.
  • 59. 11. Histograms Histograms comes in many different flavors, and in MySQL we have chosen to support two different types: The “singleton” histogram and the “equi-height” histogram. Common for all histogram types is that they split the data set into a set of “buckets”, and MySQL automatically divides the values into buckets, and will also automatically decide what type of histogram to create. Note that the number of buckets must be specified, and can be in the range from 1 to 1024. How many buckets you should choose for your data set depends on several factors; how many distinct values do you have, how skewed is your data set, how high accuracy do you need etc. However, after a certain amount of buckets the increased accuracy is rather low. So we suggest to start at a lower number such as 32, and increase it if you see that it doesn’t fit your needs. Copyright © 2019 Oracle and/or its affiliates.
  • 60. Creating a Histogram mysql> ANALYZE TABLE customer UPDATE HISTOGRAM ON c_mktsegment WITH 1024 BUCKETS; +---------------+-----------+----------+---------------------------------------------------------+ | Table | Op | Msg_type | Msg_text | +---------------+-----------+----------+---------------------------------------------------------+ | dbt3.customer | histogram | status | Histogram statistics created for column 'c_mktsegment'. | +---------------+-----------+----------+---------------------------------------------------------+ Copyright © 2019 Oracle and/or its affiliates.
  • 61. Two Reasons to Use Histograms 1. Maintaining an index has a cost. If you have an index, every INSERT/UPDATE/DELETE causes the index to be updated. This is not free, and will have an impact on your performance. A histogram on the other hand is created once and never updated unless you explicitly ask for it. It will thus not hurt your INSERT/UPDATE/DELETE-performance. Copyright © 2019 Oracle and/or its affiliates.
  • 62. Two Reasons to Use Histograms 2. If you have an index, the optimizer will do what we call “index dives” to estimate the number of records in a given range. This also has a certain cost, and it might become too costly if you have for instance very long IN-lists in your query. Histogram statistics are much cheaper in this case, and might thus be more suitable. Copyright © 2019 Oracle and/or its affiliates.
  • 63. 12. X DevAPI Copyright © 2019 Oracle and/or its affiliates.
  • 64. X DevAPI or MySQL w/o SQL! • MySQL Document Store allows developers to work with SQL relational tables and schema-less JSON collections. • To make that possible MySQL has created the X Dev API which puts a strong focus on CRUD by providing a fluent API allowing you to work with JSON documents in a natural way. • The X Protocol is a highly extensible and is optimized for CRUD as well as SQL API operations. • Copyright © 2019 Oracle and/or its affiliates.
  • 65. SQL + NoSQL 1GB documents versus Mongo’s 16MB! Schema-less NoSQL JSON Document Store with ACID compliance. And you can also access relational data! Copyright © 2019 Oracle and/or its affiliates.
  • 66. MySQL without the SQL! $res = $coll->modify('name like :name') ->arrayInsert('job[0]', ‘DBA') ->bind(['name' => 'ENTITY']) ->execute(); Copyright © 2019 Oracle and/or its affiliates.
  • 67. MySQL without the SQL! $res = $table->delete() ->orderby('age desc') ->where('age < 20 and age > 12 and name != :name') ->bind(['name' => 'Tierney']) ->limit(2) ->execute(); Copyright © 2019 Oracle and/or its affiliates.
  • 68. http://www.unofficialmysqlguide.com/ Copyright © 2019 Oracle and/or its affiliates. Subqueries CTEs and Views Joins Aggregation Sorting Partitioning Query Rewrite Invisible Indexes Profiling Queries JSON and Generated Columns Character Sets Server Architecture B+tree indexes Explain Optimizer Trace Logical Transformations Example Transformations Cost-based Optimization Hints Comparing Plans Composite Indexes Covering Indexes
  • 69. InnoDB Cluster Highly Available MySQL Server Clusters that can scale from one to N servers seamlessly! Copyright © 2019 Oracle and/or its affiliates.
  • 70. Copyright © 2019 Oracle and/or its affiliates.
  • 71. MySQL & JSON – A Practical Programming Guide Lots of example code A guide for those wanting to use MySQL’s JSON data type Copyright © 2019 Oracle and/or its affiliates.
  • 72. Thanks! Slides will be on the OOW/CodeOne website or https://slideshare.net/davidmstokes David.Stokes@Oracle.com Copyright © 2019 Oracle and/or its affiliates.