SlideShare a Scribd company logo
1 of 40
Download to read offline
What’s New in
MariaDB Server 10.2
Rasmus Johansson
VP Engineering
What’s New in
MariaDB
Server 10.2
MariaDB Server 10.2
Analytics SQL
Window Functions
Window Functions
•  Window functions were introduced in SQL:2003. The
last expansion was in the latest version of the standard,
SQL:2011.
•  A window function looks at “windows” of your data while
processing it, which improves the efficiency of query
execution.
•  Identified by the OVER clause
•  Window functions
–  can help eliminate expensive subqueries
–  can help eliminate self-joins
–  make queries more readable
–  make queries faster
More efficient and readable
queries, especially powerful
when analyzing data
Window Functions
Data Series Example
SELECT
time, value
FROM data_points
ORDER BY time;
Window Functions
Data Series Example
SELECT
time, value
FROM data_points
ORDER BY time;
SELECT
time, value,
avg(value) over (ORDER BY time
ROWS BETWEEN 6 PRECEDING
AND 6 FOLLOWING)
FROM data_points
ORDER BY time;
Window Functions
Data Series Example
SELECT timestamp, transaction_id, customer_id,
amount, (SELECT sum(amount)
FROM transactions AS t2
WHERE t2.customer_id = t1.customer_id AND
t2.timestamp <= t1.timestamp) AS
balance FROM transactions AS t1
ORDER BY customer_id, timestamp;
SELECT	
  timestamp,	
  transaction_id,	
  customer_id,	
  amount,
	
  	
  	
  	
  	
  	
  	
  sum(amount)	
  OVER	
  (PARTITION	
  BY	
  customer_id
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ORDER	
  BY	
  timestamp
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ROWS	
  BETWEEN	
  UNBOUNDED	
  
PRECEDING	
  AND	
  CURRENT	
  ROW)	
  AS	
  balance
FROM	
  transactions	
  AS	
  t1
ORDER	
  BY	
  customer_id,	
  timestamp;
Query using Window
function
Query without
Window function
Window Functions
Example:
Given a set of bank
transactions,
compute the account balance
after each transaction
*Test done in a developer environment
#Rows Regular SQL
(seconds)
Regular SQL +
Index (seconds)
Window
Functions
(seconds)
10 000 0.29 0.01
0.02
100 000 2.91
0.09 0.16
1 000 000 29.1 2.86
3.04
10 000 000 346.3 90.97 43.17
100 000 000 4357.2 813.2 514.24
Window Functions
•  MariaDB supports
–  ROWS and RANGE-type frames
–  "Streamable" window functions: ROW_NUMBER, RANK,
DENSE_RANK
–  Window functions that can be streamed once the number of
rows in partition is known: PERCENT_RANK,
CUME_DIST, NTILE
–  Aggregate functions that are currently supported as window
functions are: COUNT, SUM, AVG, BIT_OR, BIT_AND,
BIT_XOR.
–  Aggregate functions with the DISTINCT specifier (e.g.
COUNT( DISTINCT x)) are not supported as window
functions.
Supported Functions
Analytics SQL
Common Table Expressions (CTE)
CTE
•  Hierarchical and recursive queries for SQL were
introduced in SQL:1999 and were implemented as
common table expressions (CTEs)
•  A Common Table Expression is basically a temporary and
named result set, derived from a simple query
•  A CTE
–  is identified by a WITH clause
–  Similar to derived tables in the FROM clause
–  More expressive and provide cleaner code
–  Can produce more efficient query plans
–  Can be used with SELECT and EXPLAIN
Refer to a subquery
expression many times in a
query. A temporary table that
only exists for the duration of
a query.
Common Table Expression
Example
WITH sales_product_year AS (
SELECT
product,
year(ship_date) as year,
SUM(price) as total_amt
FROM
item_sales
GROUP BY
product, year
)
SELECT	
  *	
  
FROM
	
  	
  sales_product_year	
  CUR,	
  
	
  	
  sales_product_year	
  PREV,
WHERE
	
  	
  CUR.product	
  =	
  PREV.product	
  AND
	
  	
  CUR.year	
  =	
  PREV.year	
  +	
  1	
  AND
	
  	
  CUR.total_amt	
  >	
  PREV.total_amt;
Use CTE
Define CTE
JSON
JSON & GeoJSON Functions
JSON
•  JSON (Java Script Object Notation), a text based and
platform independent data exchange format
•  MariaDB Server provides
–  JSON functions which gives users the highest flexibility to
work with JSON based data
–  stored in string based data types like VARCHAR.
•  Storing JSON data in MariaDB Server is combining
relational data with the world of NoSQL
•  MariaDB Server currently supports 24 JSON functions to
evaluate, query and modify JSON formatted strings
JSON- and GeoJSON
Functions for MariaDB
JSON Example
Working with JSON Data
CREATE TABLE jsontable (
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
jsonfield VARCHAR(1024),
category VARCHAR(20) as
(JSON_VALUE(jsonfield,'$.category')),
KEY jsonkey (category),
CHECK (JSON_VALID(jsonfield)));
Field for JSON Data
Virtual column for
Index on JSON key
Constraint to
validate JSON
format
JSON Example
Insert JSON Data
INSERT INTO jsontable (id,jsonfield) VALUES(NULL,
'{"category": "Software","product": "MaxScale",
"version": "2.0.0"}');
INSERT INTO jsontable (id,jsonfield) VALUES(NULL,
'{"category": "Service","service_type": "Training",
"class": "DBA"}');
SELECT * FROM jsontableG
******************* 1. row ***********************
id: 1
jsonfield: {"category": "Software","product":
"MaxScale", "version": "2.0.0"}
category: Software
Insert like a string
JSON_VALUE based
Virtual Column
entry
JSON Example
Validating JSON Format
INSERT INTO jsontable (id,jsonfield) VALUES(NULL,
'{"category" - "Software","product": "MaxScale",
"version": "2.0.0"}');
ERROR 4025 (23000): CONSTRAINT `CONSTRAINT_1`
failed for `test`.`jsontable`
Insert non JSON
format
Validation
JSON_VALID fails
JSON Function Examples
SELECT JSON_ARRAY(56, 3.1416, 'My name is "Foo"', NULL);
+--------------------------------------------------+
| Json_Array(56, 3.1416, 'My name is "Foo"', NULL) |
+--------------------------------------------------+
| [56, 3.1416, "My name is "Foo"", null] |
+--------------------------------------------------+
SELECT JSON_OBJECT("id", 1, "name", "Monty");
+---------------------------------------+
| JSON_OBJECT("id", 1, "name", "Monty") |
+---------------------------------------+
| {"id": 1, "name": "Monty"} |
+---------------------------------------+
JSON array from
listed values
JSON object from
key,value pairs
JSON Function Examples
SELECT json_query('{"key1":123, "key1": [1,2,3]}',
'$.key1');
+-------------------------------------------------------+
| json_query('{"key1":123, "key1": [1,2,3]}', '$.key1') |
+-------------------------------------------------------+
| [1,2,3] |
+-------------------------------------------------------+
select json_query('{"key1":{"a":1, "b":[1,2]}}', '$.key1');
+-----------------------------------------------------+
| json_query('{"key1":{"a":1, "b":[1,2]}}', '$.key1') |
+-----------------------------------------------------+
| {"a":1, "b":[1,2]} |
+-----------------------------------------------------+
query JSON array
query JSON object
GeoJSON
•  With MariaDB Server 10.2 GeoJSON functions have been
added to the existing functions used to work with spatial
data types, like POINT, LINESTRING, POLYGON
•  ST_AsGeoJSON is used to convert a geometric data type
into a GeoJSON format
•  ST_GeomFromGeoJSON is used to convert a GeoJSON
based description into a geometric format
•  The GeoJSON format follows the open standard for
encoding geometric features - http://geojson.org
GeoJSON functions for
converting a geometry to a
GeoJSON element or vise
versa
JSON Function
Examples
SELECT ST_AsGeoJSON(ST_GeomFromText('POINT(5.3 7.2)'));
+-------------------------------------------------+
| ST_AsGeoJSON(ST_GeomFromText('POINT(5.3 7.2)')) |
+-------------------------------------------------+
| {"type": "Point", "coordinates": [5.3, 7.2]} |
+-------------------------------------------------+
SET @j = '{ "type": "Point", "coordinates": [5.3, 15.0]}';
SELECT ST_AsText(ST_GeomFromGeoJSON(@j));
+-----------------------------------+
| ST_AsText(ST_GeomFromGeoJSON(@j)) |
+-----------------------------------+
| POINT(5.3 15) |
+-----------------------------------+
ST_AsGeoJSON
returns the given
geometry as a
GeoJSON element
ST_GeomFromGeoJSON
given a GeoJSON input,
returns a geometry
object:
Replication
Delayed Replication & more
New Replication
Features
•  Delayed Replication
–  allows specifying a slave to lag behind the master
–  CHANGE MASTER TO master_delay=3600;
•  Restrict the speed of reading binlog from Master
–  The option read_binlog_speed_limit can be used to
restrict the speed to read the binlog from the master
–  Reduces the load on the master when slaves need to
catch up
•  Compressed Binary Log
–  Reduced Binary Log size and network traffic
–  Binary Log events are compressed on the master
–  The slave IO thread is uncompressing them before writing
them into the Relay Log
–  Compression is controlled by log_bin_compress and
log_bin_compress_min_len
New Replication Features
help to reduce load on Master,
disk space, network
bandwidth usage
Database Compatibility
Database
Compatibility
•  Multi-Trigger Support per Type
–  Beginning with MariaDB Server 10.2, multiple triggers
of the same type (BEFORE, AFTER) can be created per
table
–  The CREATE TRIGGER Statement now allows to define
–  [{ FOLLOWS | PRECEDES } other_trigger_name ]
–  when creating a trigger
•  CHECK constraints allow data validation per column
–  Check constraints helps a DBA to enforce data consistency
on the database server level without the need to implement
triggers
•  EXECUTE IMMEDIATE for dynamic SQL combines
prepare, execute and deallocate prepare into one
action
•  DECIMAL increased from 30 to 38 digits
•  Support of expressions for DEFAULT
Increased Database
Compatibility by reducing
limitation based workflows
can now be built based on
triggers
CHECK Constraints
Examples
CREATE TABLE t1 (a INT CHECK (a>2), b INT CHECK (b>2),
CONSTRAINT a_greater CHECK (a>b));
CREATE TABLE t2 (name VARCHAR(30) CHECK
(CHAR_LENGTH(name)>2), start_date DATE,
end_date DATE CHECK (start_date IS NULL OR end_date IS
NULL OR start_date<end_date));
CREATE TABLE jsontable (
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
jsonfield VARCHAR(1024),
category VARCHAR(20) as
(JSON_VALUE(jsonfield,'$.category')),
KEY jsonkey (category),
CHECK (JSON_VALID(jsonfield)));
Numeric constraints
and comparisons
Date comparisons and
character length
Validation by using
functions
Storage Engine Enhancements
Enhancements
from MySQL
InnoDB 5.7
•  Some of the InnoDB 5.7 enhancements are:
–  Indexes for spatial data types
–  VARCHAR size can be increased using an in-place
ALTER TABLE, if the length stays between 0 and 255 or
higher than 255
–  improved DDL performance for InnoDB temporary
tables
–  InnoDB internal improvements and better control via
parameters
–  On Fusion-io Non-Volatile Memory (NVM) file systems
the doublewrite buffer is automatically disabled for
system tablespace files
–  Optimized crash recovery (tablespace discovery)
MySQL Server 5.7 has
introduced
enhancements to
InnoDB, some selected
changes have been
merged to MariaDB
Server
MyRocks Storage
Engine
•  For workloads requiring higher compression and IO
efficiency
•  Higher performance for web scale type applications
•  LSM (Log-structured merge) architecture allows very
efficient data ingestion
•  Extract of the available features
–  Column Families
–  Transactions and WriteBatchWithIndex
–  Backup and Checkpoints
–  Merge Operators
–  Manual Compactions Run in Parallel with Automatic
Compactions
–  Persistent Cache
–  Bulk loading
–  Delete files in range
–  Pin iterator key/value
MyRocks in MariaDB,
compression and IO
efficiency based on
Facebook’s MyRocks.
Performance
Performance
Optimizations
•  Enhanced Performance for creating Connections
–  The way to create new connections has been optimized
–  This is especially good for applications, which are using
non-persistent connections
•  Indexes for Virtual Columns
–  Before MariaDB Server 10.2 indexes could not be defined
for virtual columns
–  With supporting indexes, virtual columns also can be used
efficiently for searching
•  New Option to define a directory for InnoDB temporary
files
–  By using a separate directory for InnoDB temporary files
separate disks and types of disks can be used, which is
reducing IO waits
Several changes have
been added to
MariaDB Server to
improve
Performance
Security
New Security
related User
options
•  Per User Server Load Limitations
–  Limit to the number of queries, updates or
connections the user can place or make per hour.
–  Limit to the number of simultaneous connections
that the user can hold
•  Enforced TLS connections
–  SSL/TLS encryption options have been introduced
for users, permitting only encrypted connections for a
user
–  CREATE and ALTER USER now include the optional
parameters SSL, X509, ISSUER, SUBJECT, CIPHER
Limit the load a user
can add to the server;
enforce secure
connections
Security Syntax Enhancements
Examples
CREATE USER foo
WITH MAX_QUERIES_PER_HOUR 10
MAX_UPDATES_PER_HOUR 20
MAX_CONNECTIONS_PER_HOUR 30
MAX_USER_CONNECTIONS 40;
CREATE USER 'foo4'@'test'
REQUIRE ISSUER 'foo_issuer'
SUBJECT 'foo_subject'
CIPHER 'text;
Per User Server Load
Limitation
Enforced TLS
Connections
Administration
New options for
DBAs
•  New functions for User Management
–  ALTER USER
–  SHOW CREATE USER
•  Enhanced Informations from EXPLAIN
–  EXPLAIN FORMAT=JSON for detailed information on
sort_key an outer_ref_condition
•  User defined variables added to Information Schema
–  Information schema plugin to report all user defined
variables via the Information Schema
USER_VARIABLES Table
•  Binary Log based Flashback
–  The MariaDB Flashback feature allows DBAs to roll back
instances, databases or tables to a given timestamp
Summary - What’s New
Analytics SQL ●  Window Functions
●  Common Table Expressions (CTE)
JSON ●  JSON Functions
●  GeoJSON Functions
Replication ●  Delayed Replication
●  Restrict the speed of reading binlog from Master
●  Compressed Binary Log
Database Compatibility ●  Multi-Trigger Support
●  CHECK Constraint Expression Support
●  EXECUTE IMMEDIATE statement
●  Support for DEFAULT with expressions
●  DECIMAL increased from 30 to 38 digits
Storage Engine
Enhancements
●  New Storage Engine MyRocks based on RocksDB from Facebook
●  Enhancements from MySQL InnoDB 5.7
●  Enable InnoDB NUMA interleave for InnoDB
Summary - What’s New
Security ●  Per User Server Load Limitations
●  Enforced TLS Connections
Administration ●  New functions for User Management
●  Enhanced Informations from EXPLAIN
●  User defined variables added to Information Schema
●  Binary Log based Flashback
Performance ●  Enhanced Performance for creating Connections
●  Indexes for Virtual Columns
●  New Option to define a directory for InnoDB temporary files
Server-Internal
Optimisations
●  Internal Use of MariaDB Connector/C
●  Optimizer Enhancements
●  Non-Locking ANALYZE TABLE
Other Enhancements ●  Lifted limitations for Virtual Computed Columns
●  Subquery-Support for Views
●  Multiple Use of Temporary Tables in Query
Thank you

More Related Content

What's hot

Mysqlconf2013 mariadb-cassandra-interoperability
Mysqlconf2013 mariadb-cassandra-interoperabilityMysqlconf2013 mariadb-cassandra-interoperability
Mysqlconf2013 mariadb-cassandra-interoperability
Sergey Petrunya
 
New features-in-mariadb-and-mysql-optimizers
New features-in-mariadb-and-mysql-optimizersNew features-in-mariadb-and-mysql-optimizers
New features-in-mariadb-and-mysql-optimizers
Sergey Petrunya
 

What's hot (20)

The State of the GeoServer project
The State of the GeoServer projectThe State of the GeoServer project
The State of the GeoServer project
 
Oracle Database Advanced Querying (2016)
Oracle Database Advanced Querying (2016)Oracle Database Advanced Querying (2016)
Oracle Database Advanced Querying (2016)
 
The art of querying – newest and advanced SQL techniques
The art of querying – newest and advanced SQL techniquesThe art of querying – newest and advanced SQL techniques
The art of querying – newest and advanced SQL techniques
 
The Ring programming language version 1.5.2 book - Part 27 of 181
The Ring programming language version 1.5.2 book - Part 27 of 181The Ring programming language version 1.5.2 book - Part 27 of 181
The Ring programming language version 1.5.2 book - Part 27 of 181
 
Mysqlconf2013 mariadb-cassandra-interoperability
Mysqlconf2013 mariadb-cassandra-interoperabilityMysqlconf2013 mariadb-cassandra-interoperability
Mysqlconf2013 mariadb-cassandra-interoperability
 
0888 learning-mysql
0888 learning-mysql0888 learning-mysql
0888 learning-mysql
 
Exploring Advanced SQL Techniques Using Analytic Functions
Exploring Advanced SQL Techniques Using Analytic FunctionsExploring Advanced SQL Techniques Using Analytic Functions
Exploring Advanced SQL Techniques Using Analytic Functions
 
Oracle Database Advanced Querying
Oracle Database Advanced QueryingOracle Database Advanced Querying
Oracle Database Advanced Querying
 
The Ring programming language version 1.2 book - Part 17 of 84
The Ring programming language version 1.2 book - Part 17 of 84The Ring programming language version 1.2 book - Part 17 of 84
The Ring programming language version 1.2 book - Part 17 of 84
 
The Ring programming language version 1.6 book - Part 30 of 189
The Ring programming language version 1.6 book - Part 30 of 189The Ring programming language version 1.6 book - Part 30 of 189
The Ring programming language version 1.6 book - Part 30 of 189
 
M|18 Understanding the Query Optimizer
M|18 Understanding the Query OptimizerM|18 Understanding the Query Optimizer
M|18 Understanding the Query Optimizer
 
New features-in-mariadb-and-mysql-optimizers
New features-in-mariadb-and-mysql-optimizersNew features-in-mariadb-and-mysql-optimizers
New features-in-mariadb-and-mysql-optimizers
 
CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...
CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...
CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...
 
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
 
PL/SQL New and Advanced Features for Extreme Performance
PL/SQL New and Advanced Features for Extreme PerformancePL/SQL New and Advanced Features for Extreme Performance
PL/SQL New and Advanced Features for Extreme Performance
 
The Ring programming language version 1.3 book - Part 19 of 88
The Ring programming language version 1.3 book - Part 19 of 88The Ring programming language version 1.3 book - Part 19 of 88
The Ring programming language version 1.3 book - Part 19 of 88
 
JSON improvements in MySQL 8.0
JSON improvements in MySQL 8.0JSON improvements in MySQL 8.0
JSON improvements in MySQL 8.0
 
Common Table Expressions in MariaDB 10.2
Common Table Expressions in MariaDB 10.2Common Table Expressions in MariaDB 10.2
Common Table Expressions in MariaDB 10.2
 
Changing your huge table's data types in production
Changing your huge table's data types in productionChanging your huge table's data types in production
Changing your huge table's data types in production
 
MySQL Built-In Functions
MySQL Built-In FunctionsMySQL Built-In Functions
MySQL Built-In Functions
 

Similar to What’s New in MariaDB Server 10.2

Similar to What’s New in MariaDB Server 10.2 (20)

Die Neuheiten in MariaDB 10.2 und MaxScale 2.1
Die Neuheiten in MariaDB 10.2 und MaxScale 2.1Die Neuheiten in MariaDB 10.2 und MaxScale 2.1
Die Neuheiten in MariaDB 10.2 und MaxScale 2.1
 
What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1
What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1
What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1
 
MySQL 5.7 in a Nutshell
MySQL 5.7 in a NutshellMySQL 5.7 in a Nutshell
MySQL 5.7 in a Nutshell
 
2011 Collaborate IOUG Presentation
2011 Collaborate IOUG Presentation2011 Collaborate IOUG Presentation
2011 Collaborate IOUG Presentation
 
MySQL 开发
MySQL 开发MySQL 开发
MySQL 开发
 
Oracle Query Optimizer - An Introduction
Oracle Query Optimizer - An IntroductionOracle Query Optimizer - An Introduction
Oracle Query Optimizer - An Introduction
 
5_MariaDB_What's New in MariaDB Server 10.2 and Big Data Analytics with Maria...
5_MariaDB_What's New in MariaDB Server 10.2 and Big Data Analytics with Maria...5_MariaDB_What's New in MariaDB Server 10.2 and Big Data Analytics with Maria...
5_MariaDB_What's New in MariaDB Server 10.2 and Big Data Analytics with Maria...
 
Big Data Analytics with MariaDB ColumnStore
Big Data Analytics with MariaDB ColumnStoreBig Data Analytics with MariaDB ColumnStore
Big Data Analytics with MariaDB ColumnStore
 
2016 feb-23 pyugre-py_mongo
2016 feb-23 pyugre-py_mongo2016 feb-23 pyugre-py_mongo
2016 feb-23 pyugre-py_mongo
 
Using MongoDB and Python
Using MongoDB and PythonUsing MongoDB and Python
Using MongoDB and Python
 
Couchbas for dummies
Couchbas for dummiesCouchbas for dummies
Couchbas for dummies
 
What’s new in MariaDB ColumnStore
What’s new in MariaDB ColumnStoreWhat’s new in MariaDB ColumnStore
What’s new in MariaDB ColumnStore
 
10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQL10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQL
 
Analytics Metrics delivery and ML Feature visualization: Evolution of Data Pl...
Analytics Metrics delivery and ML Feature visualization: Evolution of Data Pl...Analytics Metrics delivery and ML Feature visualization: Evolution of Data Pl...
Analytics Metrics delivery and ML Feature visualization: Evolution of Data Pl...
 
MySQL 5.7 Tutorial Dutch PHP Conference 2015
MySQL 5.7 Tutorial Dutch PHP Conference 2015MySQL 5.7 Tutorial Dutch PHP Conference 2015
MySQL 5.7 Tutorial Dutch PHP Conference 2015
 
MySQL 5.7. Tutorial - Dutch PHP Conference 2015
MySQL 5.7. Tutorial - Dutch PHP Conference 2015MySQL 5.7. Tutorial - Dutch PHP Conference 2015
MySQL 5.7. Tutorial - Dutch PHP Conference 2015
 
MySQL 5.7 - What's new, How to upgrade and Document Store
MySQL 5.7 - What's new, How to upgrade and Document StoreMySQL 5.7 - What's new, How to upgrade and Document Store
MySQL 5.7 - What's new, How to upgrade and Document Store
 
query_tuning.pdf
query_tuning.pdfquery_tuning.pdf
query_tuning.pdf
 
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
 
Aioug vizag oracle12c_new_features
Aioug vizag oracle12c_new_featuresAioug vizag oracle12c_new_features
Aioug vizag oracle12c_new_features
 

More from MariaDB plc

More from MariaDB plc (20)

MariaDB Paris Workshop 2023 - MaxScale 23.02.x
MariaDB Paris Workshop 2023 - MaxScale 23.02.xMariaDB Paris Workshop 2023 - MaxScale 23.02.x
MariaDB Paris Workshop 2023 - MaxScale 23.02.x
 
MariaDB Paris Workshop 2023 - Newpharma
MariaDB Paris Workshop 2023 - NewpharmaMariaDB Paris Workshop 2023 - Newpharma
MariaDB Paris Workshop 2023 - Newpharma
 
MariaDB Paris Workshop 2023 - Cloud
MariaDB Paris Workshop 2023 - CloudMariaDB Paris Workshop 2023 - Cloud
MariaDB Paris Workshop 2023 - Cloud
 
MariaDB Paris Workshop 2023 - MariaDB Enterprise
MariaDB Paris Workshop 2023 - MariaDB EnterpriseMariaDB Paris Workshop 2023 - MariaDB Enterprise
MariaDB Paris Workshop 2023 - MariaDB Enterprise
 
MariaDB Paris Workshop 2023 - Performance Optimization
MariaDB Paris Workshop 2023 - Performance OptimizationMariaDB Paris Workshop 2023 - Performance Optimization
MariaDB Paris Workshop 2023 - Performance Optimization
 
MariaDB Paris Workshop 2023 - MaxScale
MariaDB Paris Workshop 2023 - MaxScale MariaDB Paris Workshop 2023 - MaxScale
MariaDB Paris Workshop 2023 - MaxScale
 
MariaDB Paris Workshop 2023 - novadys presentation
MariaDB Paris Workshop 2023 - novadys presentationMariaDB Paris Workshop 2023 - novadys presentation
MariaDB Paris Workshop 2023 - novadys presentation
 
MariaDB Paris Workshop 2023 - DARVA presentation
MariaDB Paris Workshop 2023 - DARVA presentationMariaDB Paris Workshop 2023 - DARVA presentation
MariaDB Paris Workshop 2023 - DARVA presentation
 
MariaDB Tech und Business Update Hamburg 2023 - MariaDB Enterprise Server
MariaDB Tech und Business Update Hamburg 2023 - MariaDB Enterprise Server MariaDB Tech und Business Update Hamburg 2023 - MariaDB Enterprise Server
MariaDB Tech und Business Update Hamburg 2023 - MariaDB Enterprise Server
 
MariaDB SkySQL Autonome Skalierung, Observability, Cloud-Backup
MariaDB SkySQL Autonome Skalierung, Observability, Cloud-BackupMariaDB SkySQL Autonome Skalierung, Observability, Cloud-Backup
MariaDB SkySQL Autonome Skalierung, Observability, Cloud-Backup
 
Einführung : MariaDB Tech und Business Update Hamburg 2023
Einführung : MariaDB Tech und Business Update Hamburg 2023Einführung : MariaDB Tech und Business Update Hamburg 2023
Einführung : MariaDB Tech und Business Update Hamburg 2023
 
Hochverfügbarkeitslösungen mit MariaDB
Hochverfügbarkeitslösungen mit MariaDBHochverfügbarkeitslösungen mit MariaDB
Hochverfügbarkeitslösungen mit MariaDB
 
Die Neuheiten in MariaDB Enterprise Server
Die Neuheiten in MariaDB Enterprise ServerDie Neuheiten in MariaDB Enterprise Server
Die Neuheiten in MariaDB Enterprise Server
 
Global Data Replication with Galera for Ansell Guardian®
Global Data Replication with Galera for Ansell Guardian®Global Data Replication with Galera for Ansell Guardian®
Global Data Replication with Galera for Ansell Guardian®
 
Introducing workload analysis
Introducing workload analysisIntroducing workload analysis
Introducing workload analysis
 
Under the hood: SkySQL monitoring
Under the hood: SkySQL monitoringUnder the hood: SkySQL monitoring
Under the hood: SkySQL monitoring
 
Introducing the R2DBC async Java connector
Introducing the R2DBC async Java connectorIntroducing the R2DBC async Java connector
Introducing the R2DBC async Java connector
 
MariaDB Enterprise Tools introduction
MariaDB Enterprise Tools introductionMariaDB Enterprise Tools introduction
MariaDB Enterprise Tools introduction
 
Faster, better, stronger: The new InnoDB
Faster, better, stronger: The new InnoDBFaster, better, stronger: The new InnoDB
Faster, better, stronger: The new InnoDB
 
The architecture of SkySQL
The architecture of SkySQLThe architecture of SkySQL
The architecture of SkySQL
 

Recently uploaded

Recently uploaded (20)

What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...
WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...
WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of TransformationWSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and ApplicationsWSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
WSO2Con2024 - Organization Management: The Revolution in B2B CIAM
WSO2Con2024 - Organization Management: The Revolution in B2B CIAMWSO2Con2024 - Organization Management: The Revolution in B2B CIAM
WSO2Con2024 - Organization Management: The Revolution in B2B CIAM
 
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 

What’s New in MariaDB Server 10.2

  • 1. What’s New in MariaDB Server 10.2 Rasmus Johansson VP Engineering
  • 5. Window Functions •  Window functions were introduced in SQL:2003. The last expansion was in the latest version of the standard, SQL:2011. •  A window function looks at “windows” of your data while processing it, which improves the efficiency of query execution. •  Identified by the OVER clause •  Window functions –  can help eliminate expensive subqueries –  can help eliminate self-joins –  make queries more readable –  make queries faster More efficient and readable queries, especially powerful when analyzing data
  • 6. Window Functions Data Series Example SELECT time, value FROM data_points ORDER BY time;
  • 7. Window Functions Data Series Example SELECT time, value FROM data_points ORDER BY time; SELECT time, value, avg(value) over (ORDER BY time ROWS BETWEEN 6 PRECEDING AND 6 FOLLOWING) FROM data_points ORDER BY time;
  • 8. Window Functions Data Series Example SELECT timestamp, transaction_id, customer_id, amount, (SELECT sum(amount) FROM transactions AS t2 WHERE t2.customer_id = t1.customer_id AND t2.timestamp <= t1.timestamp) AS balance FROM transactions AS t1 ORDER BY customer_id, timestamp; SELECT  timestamp,  transaction_id,  customer_id,  amount,              sum(amount)  OVER  (PARTITION  BY  customer_id                                                  ORDER  BY  timestamp                                                  ROWS  BETWEEN  UNBOUNDED   PRECEDING  AND  CURRENT  ROW)  AS  balance FROM  transactions  AS  t1 ORDER  BY  customer_id,  timestamp; Query using Window function Query without Window function
  • 9. Window Functions Example: Given a set of bank transactions, compute the account balance after each transaction *Test done in a developer environment #Rows Regular SQL (seconds) Regular SQL + Index (seconds) Window Functions (seconds) 10 000 0.29 0.01 0.02 100 000 2.91 0.09 0.16 1 000 000 29.1 2.86 3.04 10 000 000 346.3 90.97 43.17 100 000 000 4357.2 813.2 514.24
  • 10. Window Functions •  MariaDB supports –  ROWS and RANGE-type frames –  "Streamable" window functions: ROW_NUMBER, RANK, DENSE_RANK –  Window functions that can be streamed once the number of rows in partition is known: PERCENT_RANK, CUME_DIST, NTILE –  Aggregate functions that are currently supported as window functions are: COUNT, SUM, AVG, BIT_OR, BIT_AND, BIT_XOR. –  Aggregate functions with the DISTINCT specifier (e.g. COUNT( DISTINCT x)) are not supported as window functions. Supported Functions
  • 11. Analytics SQL Common Table Expressions (CTE)
  • 12. CTE •  Hierarchical and recursive queries for SQL were introduced in SQL:1999 and were implemented as common table expressions (CTEs) •  A Common Table Expression is basically a temporary and named result set, derived from a simple query •  A CTE –  is identified by a WITH clause –  Similar to derived tables in the FROM clause –  More expressive and provide cleaner code –  Can produce more efficient query plans –  Can be used with SELECT and EXPLAIN Refer to a subquery expression many times in a query. A temporary table that only exists for the duration of a query.
  • 13. Common Table Expression Example WITH sales_product_year AS ( SELECT product, year(ship_date) as year, SUM(price) as total_amt FROM item_sales GROUP BY product, year ) SELECT  *   FROM    sales_product_year  CUR,      sales_product_year  PREV, WHERE    CUR.product  =  PREV.product  AND    CUR.year  =  PREV.year  +  1  AND    CUR.total_amt  >  PREV.total_amt; Use CTE Define CTE
  • 14. JSON JSON & GeoJSON Functions
  • 15. JSON •  JSON (Java Script Object Notation), a text based and platform independent data exchange format •  MariaDB Server provides –  JSON functions which gives users the highest flexibility to work with JSON based data –  stored in string based data types like VARCHAR. •  Storing JSON data in MariaDB Server is combining relational data with the world of NoSQL •  MariaDB Server currently supports 24 JSON functions to evaluate, query and modify JSON formatted strings JSON- and GeoJSON Functions for MariaDB
  • 16. JSON Example Working with JSON Data CREATE TABLE jsontable ( id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, jsonfield VARCHAR(1024), category VARCHAR(20) as (JSON_VALUE(jsonfield,'$.category')), KEY jsonkey (category), CHECK (JSON_VALID(jsonfield))); Field for JSON Data Virtual column for Index on JSON key Constraint to validate JSON format
  • 17. JSON Example Insert JSON Data INSERT INTO jsontable (id,jsonfield) VALUES(NULL, '{"category": "Software","product": "MaxScale", "version": "2.0.0"}'); INSERT INTO jsontable (id,jsonfield) VALUES(NULL, '{"category": "Service","service_type": "Training", "class": "DBA"}'); SELECT * FROM jsontableG ******************* 1. row *********************** id: 1 jsonfield: {"category": "Software","product": "MaxScale", "version": "2.0.0"} category: Software Insert like a string JSON_VALUE based Virtual Column entry
  • 18. JSON Example Validating JSON Format INSERT INTO jsontable (id,jsonfield) VALUES(NULL, '{"category" - "Software","product": "MaxScale", "version": "2.0.0"}'); ERROR 4025 (23000): CONSTRAINT `CONSTRAINT_1` failed for `test`.`jsontable` Insert non JSON format Validation JSON_VALID fails
  • 19. JSON Function Examples SELECT JSON_ARRAY(56, 3.1416, 'My name is "Foo"', NULL); +--------------------------------------------------+ | Json_Array(56, 3.1416, 'My name is "Foo"', NULL) | +--------------------------------------------------+ | [56, 3.1416, "My name is "Foo"", null] | +--------------------------------------------------+ SELECT JSON_OBJECT("id", 1, "name", "Monty"); +---------------------------------------+ | JSON_OBJECT("id", 1, "name", "Monty") | +---------------------------------------+ | {"id": 1, "name": "Monty"} | +---------------------------------------+ JSON array from listed values JSON object from key,value pairs
  • 20. JSON Function Examples SELECT json_query('{"key1":123, "key1": [1,2,3]}', '$.key1'); +-------------------------------------------------------+ | json_query('{"key1":123, "key1": [1,2,3]}', '$.key1') | +-------------------------------------------------------+ | [1,2,3] | +-------------------------------------------------------+ select json_query('{"key1":{"a":1, "b":[1,2]}}', '$.key1'); +-----------------------------------------------------+ | json_query('{"key1":{"a":1, "b":[1,2]}}', '$.key1') | +-----------------------------------------------------+ | {"a":1, "b":[1,2]} | +-----------------------------------------------------+ query JSON array query JSON object
  • 21. GeoJSON •  With MariaDB Server 10.2 GeoJSON functions have been added to the existing functions used to work with spatial data types, like POINT, LINESTRING, POLYGON •  ST_AsGeoJSON is used to convert a geometric data type into a GeoJSON format •  ST_GeomFromGeoJSON is used to convert a GeoJSON based description into a geometric format •  The GeoJSON format follows the open standard for encoding geometric features - http://geojson.org GeoJSON functions for converting a geometry to a GeoJSON element or vise versa
  • 22. JSON Function Examples SELECT ST_AsGeoJSON(ST_GeomFromText('POINT(5.3 7.2)')); +-------------------------------------------------+ | ST_AsGeoJSON(ST_GeomFromText('POINT(5.3 7.2)')) | +-------------------------------------------------+ | {"type": "Point", "coordinates": [5.3, 7.2]} | +-------------------------------------------------+ SET @j = '{ "type": "Point", "coordinates": [5.3, 15.0]}'; SELECT ST_AsText(ST_GeomFromGeoJSON(@j)); +-----------------------------------+ | ST_AsText(ST_GeomFromGeoJSON(@j)) | +-----------------------------------+ | POINT(5.3 15) | +-----------------------------------+ ST_AsGeoJSON returns the given geometry as a GeoJSON element ST_GeomFromGeoJSON given a GeoJSON input, returns a geometry object:
  • 24. New Replication Features •  Delayed Replication –  allows specifying a slave to lag behind the master –  CHANGE MASTER TO master_delay=3600; •  Restrict the speed of reading binlog from Master –  The option read_binlog_speed_limit can be used to restrict the speed to read the binlog from the master –  Reduces the load on the master when slaves need to catch up •  Compressed Binary Log –  Reduced Binary Log size and network traffic –  Binary Log events are compressed on the master –  The slave IO thread is uncompressing them before writing them into the Relay Log –  Compression is controlled by log_bin_compress and log_bin_compress_min_len New Replication Features help to reduce load on Master, disk space, network bandwidth usage
  • 26. Database Compatibility •  Multi-Trigger Support per Type –  Beginning with MariaDB Server 10.2, multiple triggers of the same type (BEFORE, AFTER) can be created per table –  The CREATE TRIGGER Statement now allows to define –  [{ FOLLOWS | PRECEDES } other_trigger_name ] –  when creating a trigger •  CHECK constraints allow data validation per column –  Check constraints helps a DBA to enforce data consistency on the database server level without the need to implement triggers •  EXECUTE IMMEDIATE for dynamic SQL combines prepare, execute and deallocate prepare into one action •  DECIMAL increased from 30 to 38 digits •  Support of expressions for DEFAULT Increased Database Compatibility by reducing limitation based workflows can now be built based on triggers
  • 27. CHECK Constraints Examples CREATE TABLE t1 (a INT CHECK (a>2), b INT CHECK (b>2), CONSTRAINT a_greater CHECK (a>b)); CREATE TABLE t2 (name VARCHAR(30) CHECK (CHAR_LENGTH(name)>2), start_date DATE, end_date DATE CHECK (start_date IS NULL OR end_date IS NULL OR start_date<end_date)); CREATE TABLE jsontable ( id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, jsonfield VARCHAR(1024), category VARCHAR(20) as (JSON_VALUE(jsonfield,'$.category')), KEY jsonkey (category), CHECK (JSON_VALID(jsonfield))); Numeric constraints and comparisons Date comparisons and character length Validation by using functions
  • 29. Enhancements from MySQL InnoDB 5.7 •  Some of the InnoDB 5.7 enhancements are: –  Indexes for spatial data types –  VARCHAR size can be increased using an in-place ALTER TABLE, if the length stays between 0 and 255 or higher than 255 –  improved DDL performance for InnoDB temporary tables –  InnoDB internal improvements and better control via parameters –  On Fusion-io Non-Volatile Memory (NVM) file systems the doublewrite buffer is automatically disabled for system tablespace files –  Optimized crash recovery (tablespace discovery) MySQL Server 5.7 has introduced enhancements to InnoDB, some selected changes have been merged to MariaDB Server
  • 30. MyRocks Storage Engine •  For workloads requiring higher compression and IO efficiency •  Higher performance for web scale type applications •  LSM (Log-structured merge) architecture allows very efficient data ingestion •  Extract of the available features –  Column Families –  Transactions and WriteBatchWithIndex –  Backup and Checkpoints –  Merge Operators –  Manual Compactions Run in Parallel with Automatic Compactions –  Persistent Cache –  Bulk loading –  Delete files in range –  Pin iterator key/value MyRocks in MariaDB, compression and IO efficiency based on Facebook’s MyRocks.
  • 32. Performance Optimizations •  Enhanced Performance for creating Connections –  The way to create new connections has been optimized –  This is especially good for applications, which are using non-persistent connections •  Indexes for Virtual Columns –  Before MariaDB Server 10.2 indexes could not be defined for virtual columns –  With supporting indexes, virtual columns also can be used efficiently for searching •  New Option to define a directory for InnoDB temporary files –  By using a separate directory for InnoDB temporary files separate disks and types of disks can be used, which is reducing IO waits Several changes have been added to MariaDB Server to improve Performance
  • 34. New Security related User options •  Per User Server Load Limitations –  Limit to the number of queries, updates or connections the user can place or make per hour. –  Limit to the number of simultaneous connections that the user can hold •  Enforced TLS connections –  SSL/TLS encryption options have been introduced for users, permitting only encrypted connections for a user –  CREATE and ALTER USER now include the optional parameters SSL, X509, ISSUER, SUBJECT, CIPHER Limit the load a user can add to the server; enforce secure connections
  • 35. Security Syntax Enhancements Examples CREATE USER foo WITH MAX_QUERIES_PER_HOUR 10 MAX_UPDATES_PER_HOUR 20 MAX_CONNECTIONS_PER_HOUR 30 MAX_USER_CONNECTIONS 40; CREATE USER 'foo4'@'test' REQUIRE ISSUER 'foo_issuer' SUBJECT 'foo_subject' CIPHER 'text; Per User Server Load Limitation Enforced TLS Connections
  • 37. New options for DBAs •  New functions for User Management –  ALTER USER –  SHOW CREATE USER •  Enhanced Informations from EXPLAIN –  EXPLAIN FORMAT=JSON for detailed information on sort_key an outer_ref_condition •  User defined variables added to Information Schema –  Information schema plugin to report all user defined variables via the Information Schema USER_VARIABLES Table •  Binary Log based Flashback –  The MariaDB Flashback feature allows DBAs to roll back instances, databases or tables to a given timestamp
  • 38. Summary - What’s New Analytics SQL ●  Window Functions ●  Common Table Expressions (CTE) JSON ●  JSON Functions ●  GeoJSON Functions Replication ●  Delayed Replication ●  Restrict the speed of reading binlog from Master ●  Compressed Binary Log Database Compatibility ●  Multi-Trigger Support ●  CHECK Constraint Expression Support ●  EXECUTE IMMEDIATE statement ●  Support for DEFAULT with expressions ●  DECIMAL increased from 30 to 38 digits Storage Engine Enhancements ●  New Storage Engine MyRocks based on RocksDB from Facebook ●  Enhancements from MySQL InnoDB 5.7 ●  Enable InnoDB NUMA interleave for InnoDB
  • 39. Summary - What’s New Security ●  Per User Server Load Limitations ●  Enforced TLS Connections Administration ●  New functions for User Management ●  Enhanced Informations from EXPLAIN ●  User defined variables added to Information Schema ●  Binary Log based Flashback Performance ●  Enhanced Performance for creating Connections ●  Indexes for Virtual Columns ●  New Option to define a directory for InnoDB temporary files Server-Internal Optimisations ●  Internal Use of MariaDB Connector/C ●  Optimizer Enhancements ●  Non-Locking ANALYZE TABLE Other Enhancements ●  Lifted limitations for Virtual Computed Columns ●  Subquery-Support for Views ●  Multiple Use of Temporary Tables in Query