0% found this document useful (0 votes)
130 views25 pages

MariaDB 10.4 New Features at DOAG K+A 2019

MariaDB 10.4 became General Available this summer. So it is time to look at the new Features in MariaDB 10.4. We look for the reason of broad usage of MariaDB nowadays. Most important improvements where in User Authentication, InnoDB improvements, and Optimizer enhancements. A completely New Feature is Application-Time Period Tables. Backup got a new Locking behaviour so LVM snapshots are possible and officially supported now. And last but not least MariaDB 10.4 comes with Galera 4.

Uploaded by

Oli Sennhauser
Copyright
© Attribution (BY)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
130 views25 pages

MariaDB 10.4 New Features at DOAG K+A 2019

MariaDB 10.4 became General Available this summer. So it is time to look at the new Features in MariaDB 10.4. We look for the reason of broad usage of MariaDB nowadays. Most important improvements where in User Authentication, InnoDB improvements, and Optimizer enhancements. A completely New Feature is Application-Time Period Tables. Backup got a new Locking behaviour so LVM snapshots are possible and officially supported now. And last but not least MariaDB 10.4 comes with Galera 4.

Uploaded by

Oli Sennhauser
Copyright
© Attribution (BY)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 25

www.fromdual.

com

MariaDB 10.4
New Features

DOAG K&A 2019, Nürnberg (Germany)

Oli Sennhauser
Senior MariaDB and MySQL Consultant at FromDual GmbH

https://www.fromdual.com/presentations

1 / 25
About FromDual GmbH www.fromdual.com

Enterprise Support

Consulting
Training

remote-DBA

2 / 25
Contents www.fromdual.com

HA Solutions
MariaDB 10.4 – New Features

Branches
Read scale-out
and Forks

Replication
MariaDB andset-up
Linuxfor
Distributions
HA

Active/passive fail-over
Authentication

MySQL Cluster
InnoDB

Replication
MariaDB Optimizer
Cluster

Storage-Engine-Replication
Application-Time Period Tables

General Stuff

Backup Stage

Galera 4

Outlook MariaDB 10.5

3 / 25
Branches and Forks www.fromdual.com


MariaDB and MySQL are Open Source (GPL v2)

This means everybody is allowed to DiY

→ Branches and Forks
5.1 2008

Branch (“Drop-in-Replacement”)

MariaDB 5.5 MySQL


2010
10.0, 2014 5.6, 2013
10.1, 2015
5.7, 2015
10.2, 2017
10.3, 2018 Fork (“Compatible”) 8.0, 2018
10.4, 2019
10.5, 2020


Who uses a MariaDB/MySQL in here?

Chaos will happen! :-(

See Sybase ASE vs. MicroSoft SQL Server (1995(v6.0)-2005)

Examples: GTID, Protocol X, MariaDB CS, Virtual Columns,
JSON, User Management, Group Replication, PL/SQL, etc.
4 / 25
MariaDB and Linux Distros www.fromdual.com


Redhat/CentOS:

6 → MySQL 5.1

7 → MariaDB 5.5

8 → MariaDB 10.3, MySQL 8.0

Ubuntu:

16.04 → MySQL 5.7

18.04 → MySQL 5.7 (MariaDB 10.1)

20.04 → ? (Ubuntu 19.10: MySQL 8.0 (MariaDB 10.3))

Debian:

8 → MySQL 5.5

9 → MariaDB 10.1

10 → MariaDB 10.3

SuSE SLE / OpenSuSE:

12 → MariaDB 10.0

15 → MariaDB 10.2

Leap 42 → MariaDB 10.0, Leap 15, → MariaDB 10.2
5 / 25
MariaDB IPO www.fromdual.com

IPO 2020 ???

6 / 25
Retrospect MariaDB 10.3 www.fromdual.com


GA May 2018

Invisible Columns

System-versioned Tables

Instant ADD COLUMN

Storage Engine independent Column Compression

Semi-synchronous Replication Built-in (before Plug-in)

PROXY Protocol Support (Galera/HAproxy)

Optimizer Improvements (SQL Performance)

Aggregate Stored Functions (DWH, MariaDB Column Store)

Oracle Compatibility (sql_mode = ORACLE)

Oracle PL/SQL Packages, Oracle Style Sequences

and many, many more...
7 / 25
MariaDB 10.4 - Overview www.fromdual.com


GA June 2019 (10.4.6)

→ wait 6 – 12 months for production (mid 2020)!

Still very poor quality (especially Galera 4!)

Regression in 10.4.9 (5. 11. 2019)

Remember MySQL IPO plan 2005: 5.0 was
“worst release ever”

Cloud… (IPO?)

Standard compliant (IPO?)

More feature complete
8 / 25
Authentication www.fromdual.com


unix_socket authentication is default!

Access if O/S user = DB user

New DB user: mysql

User Password Expiry:
ALTER USER 'oli'@'localhost'
PASSWORD EXPIRE INTERVAL 90 DAY;

Account Locking:
ALTER USER 'oli'@'localhost' ACCOUNT LOCK;

Table mysql.user is retired!!!

→ Can break Admin Applications...

New: mysql.global_priv Table

More than 1 authentication plugin possible

→ slowly migrate users to more secure authentication
● CREATE USER admin@localhost IDENTIFIED VIA unix_socket OR
mysql_native_password USING 'secret';
9 / 25
InnoDB www.fromdual.com


Instant DROP COLUMN operation

Changing of column order

More Instant operations (VARCHAR, collation and character set)

Improvements in Index DDL
● RENAME INDEX

Merge InnoDB changes from “upstream”

InnoDB row length count fixed (10.4.7)

Leads to errors:
[Warning] InnoDB: Cannot add field `thumbnails` in
table `test`.`products` because after adding it,
the row size is 8702 which is greater than maximum
allowed size (8126) for a record on index leaf
page.

10 / 25
InnoDB Instant DDL www.fromdual.com

ALTER TABLE test


ADD COLUMN d BIGINT
/*!100400 , ALGORITHM=INSTANT */;
Query OK, 0 rows affected (0.247 sec)

ALTER TABLE test MODIFY COLUMN


c BIGINT(20) DEFAULT NULL AFTER d
/*!100400 , ALGORITHM=INSTANT */;
Query OK, 0 rows affected (0.072 sec)

11 / 25
Optimizer www.fromdual.com


Optimizer Trace:
● SET SESSION optimizer_trace=’enabled=on’;
● I_S.optimizer_trace

SE Independent Table Statistics

Histogram collection by default

Improved Condition Pushdown Optimization
● SELECT … WHERE xxx AND ... IN (<subquery>)

Automatic optimized use of Join Buffer

Exists since 5.3.0 but was disabled :-(

Rowid Filtering Optimization
● WHERE a.date BETWEEN '2018-01-01' AND '2018-01-31'
AND b.price between 200000 and 230000;

But...
12 / 25
Optimizer – Query Runtime www.fromdual.com

5.5.41 10.0.28 10.1.29 10.2.14 10.3.18 10.4.8


Query 1 3.03 3.17 3.36 3.29 3.38 3.57
Query 2 0.20 0.20 0.20 0.19 0.19 0.21
Query 3 2.41 2.40 2.51 3.27 3.92 4.44

MariaDB Optimizer - Over time


4.5

3.5
5.5.41
3 10.0.28
10.1.29
2.5
10.2.14
2 10.3.18
10.4.8
1.5

0.5

0
Query 1 Query 2 Query 3

13 / 25
Optimizer Trace www.fromdual.com

SQL> SET SESSION optimizer_trace=’enabled=on’;


SQL> EXPLAIN SELECT * FROM test WHERE id <10;
SQL> SELECT trace
FROM information_schema.optimizer_trace;

"steps": [
{
"condition_processing": {
"condition": "WHERE",
"original_condition": "test.`id` < 10",
"steps": [
{
"transformation": "equality_propagation",
"resulting_condition": "test.`id` < 10"
},
{
"transformation": "constant_propagation",
"resulting_condition": "test.`id` < 10"
},
{
"transformation": "trivial_condition_removal",
"resulting_condition": "test.`id` < 10"
}
]
}
},

14 / 25
Application-Time Period Tables www.fromdual.com


ISO/IEC 9075, SQL:2011 Part 2

MariaDB 10.3: System Versioned Tables

Journal/Tracking of an Item.
CREATE TABLE employee (
ID INT UNSIGNED NOT NULL
, Start DATE
, End DATE
, Department VARCHAR(32)
, Position VARCHAR(32)
, PRIMARY KEY (ID, Start, End)
, PERIOD FOR Period (Start, End)
);

AUTO_INCREMENT ID is NO good plan!
15 / 25
Lend Employee www.fromdual.com

UPDATE employee
FOR PORTION OF Period
FROM '2018-03-15' TO '2018-07-15'
SET Department = 'Development'
, Position = 'DBA'
WHERE ID = 12345
;
Query OK, 1 row affected (0.000 sec)
Rows matched: 1 Changed: 1 Inserted: 2 Warnings: 0

SELECT * FROM employee ORDER BY Start;


+-------+------------+------------+-------------+------------+
| ID | Start | End | Department | Position |
+-------+------------+------------+-------------+------------+
| 12345 | 2017-01-01 | 2018-03-15 | Engineering | Junior DBA |
| 12345 | 2018-03-15 | 2018-07-15 | Development | DBA |
| 12345 | 2018-07-15 | 9999-12-31 | Engineering | Junior DBA |
+-------+------------+------------+-------------+------------+

16 / 25
Upgrade Employee www.fromdual.com

UPDATE employee
FOR PORTION OF Period
FROM '2018-07-15'
TO '9999-12-31'
SET Position = 'DBA'
WHERE ID = 12345
;
+-------+------------+------------+-------------+------------+
| ID | Start | End | Department | Position |
+-------+------------+------------+-------------+------------+
| 12345 | 2017-01-01 | 2018-03-15 | Engineering | Junior DBA |
| 12345 | 2018-03-15 | 2018-07-15 | Development | DBA |
| 12345 | 2018-07-15 | 9999-12-31 | Engineering | DBA |
+-------+------------+------------+-------------+------------+

17 / 25
1 year vacation (unpaid) www.fromdual.com

DELETE FROM employee


FOR PORTION OF Period
FROM '2018-09-30' -- !?!
TO '2019-10-01' -- !?!
WHERE ID = 12345
;
+-------+------------+------------+-------------+------------+
| ID | Start | End | Department | Position |
+-------+------------+------------+-------------+------------+
| 12345 | 2017-01-01 | 2018-03-15 | Engineering | Junior DBA |
| 12345 | 2018-03-15 | 2018-07-15 | Development | DBA |
| 12345 | 2018-07-15 | 2018-09-30 | Engineering | DBA |
| 12345 | 2019-10-01 | 9999-12-31 | Engineering | DBA |
+-------+------------+------------+-------------+------------+

18 / 25
Querying www.fromdual.com

What is valid now?

SELECT *
FROM employee
WHERE Start <= CURRENT_DATE()
AND End > CURRENT_DATE()
;

What was valid during last year?

SELECT *
FROM employee
WHERE End >= '2018-01-01'
AND Start <= '2018-12-31'
;
19 / 25
Syntax – Variables – Replication www.fromdual.com


Bitemporal Tables is also possible

Combination of system versioned and application-time
periods
● SQL> FLUSH SSL;

Dynamically exchange servers TLS certificates
● SQL> INSTALL/UNINSTALL IF [NOT] EXISTS
PLUGIN ...

Variables: Some minor changes...

Replication:

GTID clean-up (gtid_cleanup_batch_size)

Binary Log Rotation speed up
● SQL> SHUTDOWN WAIT FOR ALL SLAVES;
20 / 25
General www.fromdual.com


System Tables (mysql.*) Crash-safe Aria!

Commands mysql* → mariadb*

Expected but breaks with many applications! :-(

Performance improvements for Unicode collations

User data type plugin (work in progress)

Oracle TYPE … TABLE OF, … AS OBJECT OF

Much faster privilege checks (Cloud)

Many users accounts or database grants

MS SQL Server compatibility: sql_mode = MSSQL

“For the moment MSSQL mode only has limited functionality,
but we plan to add more later according to demand.”

JSON: JSON_MERGE_PATCH and JSON_MERGE_PRESERVE
21 / 25
BACKUP STAGE www.fromdual.com


Differences between MariaDB Community and
Enterprise Server :-(

More efficient Backup Locks for Storage
Snapshots:
SQL> BACKUP STAGE START;
SQL> BACKUP STAGE BLOCK_COMMIT;

SQL> system lvcreate --size 1G --snapshot \


--name snapshot /dev/vg/snapshots

SQL> BACKUP STAGE END;



Now officially supported (thanks to Cloud)!

Better than FLUSH TABLES WITH READ LOCK;
22 / 25
Galera 4 www.fromdual.com


Galera ready by default since MariaDB 10.1

New Galera Tables
● mysql.wsrep_{cluster,cluster_members,streaming_log}

Streaming Replication

Transactions of unlimitted size

Replicates gradually in small fragments

Dynamically per session: wsrep_trx_fragment_size = <n>

Usefull size ~10k rows

Degrades transaction throughput!!!

Conflicts with LOAD DATA splitting (wsrep_load_data_splitting)

Rolling Upgrade from Galera 3 to 4 is supported

Completely not mature yet (10.4.10) also w/o Streaming Repl!

23 / 25
Outlook MariaDB 10.5 www.fromdual.com

● INSERT/REPLACE … RETURNING

S3 Storage Engine (Archive in the Cloud)

Aria SE improvements (for S3 SE?)

Thread Pool Statistics (Cloud?)

InnoDB clean-up

MySQL extended Binlog Metadata from Upstream

INFORMATION_SCHEMA improvements

Perl Scripts from DBD::mysql → DBD::MariaDB

→ a bit too quite IMHO atm

24 / 25
Q&A www.fromdual.com

Questions ?

Discussion?

We have time for some face-to-face talks...


FromDual provides neutral and independent:

Consulting

Training

Remote-DBA

Support for MariaDB, Galera Cluster and MySQL
25 / 25

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy