SlideShare a Scribd company logo
1 of 42
Download to read offline
1
MariaDB 10.1
что нового
Сергей Петруня, MariaDB
'2016
2
Стабильные релизы MySQL/MariaDB
• MySQL 5.7: 21 октября 2015
• MariaDB 10.1: 17 октября 2015
• MariaDB 10.0: 31 марта 2014
• MySQL 5.6: 5 февраля 2013
3
Основные фичи в MariaDB 10.1
• Встроенный Galera Cluster
• Шифрование данных
• Улучшения в Roles
• Оптимизатор
– EXPLAIN и ANALYZE
– Другие улучшения
• Оптимистичная параллельная репликация
4
Встроенный Galera Cluster
• MariaDB 5.5, 10.0: -galera дерево
• MariaDB 10.1
– Поддержка Galera в главном дереве
– Собранные Galera packages.
5
Главные фичи в MariaDB 10.1
• Встроенный Galera Cluster
• Шифрование данных
• Улучшения в Roles
• Оптимизатор
– EXPLAIN и ANALYZE
– Другие улучшения
• Оптимистичная параллельная репликация
6
Шифрование в MariaDB
• Основано на
– патче от Google
– Патче от Eperi
• “Data-at-rest encryption”
7
Сервер с данными
SQL
OC
ibdata binlog tmpXX
error
log
slow
log
Диск
RAM
Сервер
8
SQL
OC
ibdata binlog tmpXX
error
log
slow
log
Диск
RAM
Сервер
Прослушивание сети
9
SQL
OC
ibdata binlog tmpXX
error
log
slow
log
Диск
RAM
Сервер
SSL-шифрование трафика
SSL
10
SQL
OC
ibdata binlog tmpXX
Диск
RAM
Сервер
Data-at-rest encryption
error
log
slow
log
• Шифруем всё, что на диске.
11
Data-at-rest encryption
• Защищает от
– Копирования или
кражи диска
– Не-root доступа к
серверу
• Не защищает от
– SQL-иньекций
– Взлома приложения (wordpress'a и тд)
– Взлома сервера с получением root'a.
12
Ключи шифрования
• File key management plugin
– Поставляется с MariaDB
– Ключ в файле, в открытом виде
– /dev/shm...
• AWS key management plugin
– Исходники – в MariaDB
– Пакеты? Только MariaDB Enterprise
• Eperi Gateway for Databases
– Коммерческий продукт c закрытым кодом
– Eperi.de
13
AWS Key Management Plugin
• AWS Key Management Service
– Генерирует и хранит ключи
– Выдает приложениям по требованию
– Лог выдачи
– Отзыв права получить ключ
– ...
• Доступ ко ключам
– В ЕС2 – Amazon знает, кто вы
– Вне EC2: надо аутентифицироваться в Amazon Identity
Service.
14
А что у Oracle?
• Шифрование появилось в MySQL 5.7.11
– Выпущено 5 февраля 2016 (?)
• Ключами управляют
– MySQL Community: плагин keyring_file
– MySQL Enterprise Edition: Oracle Key Vault.
15
Шифрование - выводы
• Защищает от копирования/кражи диска
– Полезно для security compliance
– Не защищает от других атак
• Key Management
– Ключ из файла
– Ключ из AWS Key Management Service
– Ключ из Eperi Gateway
16
Основные фичи в MariaDB 10.1
• Встроенный Galera Cluster
• Шифрование данных
• Улучшения в Roles
• Оптимизатор
– EXPLAIN и ANALYZE
– Другие улучшения
• Оптимистичная параллельная репликация
17
Роли в MariaDB 10.0
root> CREATE ROLE developer;
root> GRANT ... TO developer;
root> GRANT developer TO 'user1'@'host';
user
table1
table2
role
...
user1> SET ROLE developer;
user1> DELETE FROM table1; ...
root> CREATE ROLE developer;
root> GRANT ... TO developer;
root> GRANT developer TO 'user1'@'host';
Обязательно!
В каждом connection!
18
MariaDB 10.1: роль по умолчанию
• SET ROLE не требуется!
• Несколько ролей по умолчанию?
– GRANT role1 TO user1_default_role
GRANT role2 TO user1_default_role
SET DEFAULT ROLE user1_default_role FOR user1@host
root> SET DEFAULT ROLE developer FOR 'user1'@'host';
user1> connect
user1> DELETE FROM table1;
19
Роли - выводы
• Роли появились в MariaDB 10.0
• MariaDB 10.1 – роль по умолчанию
– Роли теперь прозрачны для приложений.
20
Основные фичи в MariaDB 10.1
• Встроенный Galera Cluster
• Шифрование данных
• Улучшения в Roles
• Оптимизатор
– EXPLAIN и ANALYZE
– Другие улучшения
• Оптимистичная параллельная репликация
21
EXPLAIN FORMAT=JSON
• Появился в MySQL 5.6
• Имел явные недостатки
Bug#69567: EXPLAIN FORMAT=JSON lists subquery in optimized_away_subqueries, but it is run
Bug#69795: EXPLAIN FORMAT=JSON doesn't show Using filesort for UNION
Bug#74462: EXPLAIN FORMAT=JSON produces ordering_operation when no ordering takes place
Bug#74661: EXPLAIN FORMAT=JSON says two temptables are used, execution shows just one
Bug#74744: EXPLAIN FORMAT=JSON produces duplicates_removal where there is none
[no bug#]: EXPLAIN FORMAT=JSON shows the same subquery as two different subqueries
...
• В MariaDB переписали
– Показывает правду
– Больше информации, чем в 5.6
– Читабельнее
22
ANALYZE для команд
• EXPLAIN показывает план запроса
+----+-----------+--------+----+-------------+-------+-------+-----------------+-------+-----------+
|id |select_type|table |type|possible_keys|key |key_len|ref |rows |Extra |
+----+-----------+--------+----+-------------+-------+-------+-----------------+-------+-----------+
| 1|SIMPLE |orders |ALL |PRIMARY,... |NULL |NULL |NULL |1507320|Using where|
| 1|SIMPLE |lineitem|ref |PRIMARY,... |PRIMARY|4 |orders.o_orderkey| 1|Using where|
+----+-----------+--------+----+-------------+-------+-------+-----------------+-------+-----------+
• А что было в реальности ?
23
EXPLAIN и выполнение
• Slow query log: Rows_examined
• SHOW STATUS LIKE 'Handler%'
• SHOW (TABLE|INDEX)_STATISTICS
• performance_schema.table_io_waits_summary_by_table
+--+-----------+--------+------+-------------+---------+-------+-------------------+----+----------------------------+
|id|select_type|table |type |possible_keys|key |key_len|ref |rows|Extra |
+--+-----------+--------+------+-------------+---------+-------+-------------------+----+----------------------------+
|1 |PRIMARY |orders |const |PRIMARY |PRIMARY |4 |const |1 |Using index |
|1 |PRIMARY |lineitem|ref |PRIMARY,i_...|PRIMARY |4 |const |2 |Using where; Start temporary|
|1 |PRIMARY |lineitem|ref |PRIMARY,i_...|i_suppkey|5 |lineitem.l_partkey |14 |Using index |
|1 |PRIMARY |orders |eq_ref|PRIMARY,i_...|PRIMARY |4 |lineitem.l_orderkey|1 |Using where |
|1 |PRIMARY |customer|eq_ref|PRIMARY |PRIMARY |4 |orders.o_custkey |1 |End temporary |
+--+-----------+--------+------+-------------+---------+-------+-------------------+----+----------------------------+
Счетчик
24
ANALYZE для команд
• orders:
r_rows≈rows, ок
r_filtered=2*filtered, сойдет
• lineitem:
r_rows = 2* rows, ок
r_filtered=0.00% ??
+--+-----------+--------+----+-------------+-------+-------+-----------------+-------+-------+--------+----------+-----------+
|id|select_type|table |type|possible_keys|key |key_len|ref |rows |r_rows |filtered|r_filtered|Extra |
+--+-----------+--------+----+-------------+-------+-------+-----------------+-------+-------+--------+----------+-----------+
|1 |SIMPLE |orders |ALL |PRIMARY,i_...|NULL |NULL |NULL |1504278|1500000| 50.00 | 100.00 |Using where|
|1 |SIMPLE |lineitem|ref |PRIMARY,i_...|PRIMARY|4 |orders.o_orderkey|2 |4.00 | 100.00 | 0.00 |Using where|
+--+-----------+--------+----+-------------+-------+-------+-----------------+-------+-------+--------+----------+-----------+
analyze select *
from lineitem, orders
where o_orderkey=l_orderkey and
o_orderdate between '1990-01-01' and '1998-12-06' and
l_extendedprice > 1000000
Новые колонки: r_ (real)
• r_rows
• r_filtered
25
ANALYZE FORMAT=JSON
EXPLAIN
FORMAT=JSON + ANALYZE ANALYZE FORMAT=JSON=
26
{
"query_block": {
"select_id": 1,
"r_loops": 1,
"r_total_time_ms": 191747,
"table": {
"table_name": "orders",
"access_type": "ALL",
"possible_keys": ["PRIMARY", "i_o_orderdate"],
"r_loops": 1,
"rows": 1498194,
"r_rows": 1.5e6,
"r_total_time_ms": 14261,
"filtered": 50,
"r_filtered": 100,
"attached_condition": "(orders.o_orderDATE between 1990-01-01 and 1998-12-06)"
},
"table": {
"table_name": "lineitem",
"access_type": "ref",
"possible_keys": ["PRIMARY", ...],
"key": "PRIMARY",
"key_length": "4",
"used_key_parts": ["l_orderkey"],
"ref": ["dbt3sf1.orders.o_orderkey"],
"r_loops": 1500000,
"rows": 1,
"r_rows": 4.0008,
"r_total_time_ms": 170456,
"filtered": 100,
"r_filtered": 0,
"attached_condition": "(lineitem.l_extendedprice > 1000000)"
}
}
}
27
{
"query_block": {
"select_id": 1,
"r_loops": 1,
"r_total_time_ms": 191747,
"table": {
"table_name": "orders",
"access_type": "ALL",
"possible_keys": ["PRIMARY", "i_o_orderdate"],
"r_loops": 1,
"rows": 1498194,
"r_rows": 1.5e6,
"r_total_time_ms": 14261,
"filtered": 50,
"r_filtered": 100,
"attached_condition": "(orders.o_orderDATE between 1990-01-01 and 1998-12-06)"
},
"table": {
"table_name": "lineitem",
"access_type": "ref",
"possible_keys": ["PRIMARY", ...],
"key": "PRIMARY",
"key_length": "4",
"used_key_parts": ["l_orderkey"],
"ref": ["dbt3sf1.orders.o_orderkey"],
"r_loops": 1500000,
"rows": 1,
"r_rows": 4.0008,
"r_total_time_ms": 170456,
"filtered": 100,
"r_filtered": 0,
"attached_condition": "(lineitem.l_extendedprice > 1000000)"
}
}
}
"table_name": "orders",
"access_type": "ALL",
"possible_keys": ["PRIMARY
"r_loops": 1,
"rows": 1498194,
"r_rows": 1.5e6,
"r_total_time_ms": 14261,
"r_loops": 1500000,
"rows": 1,
"r_rows": 4.0008,
"r_total_time_ms": 170456,
"filtered": 100,
"r_filtered": 0,
"table_name": "lineitem",
28
Поля в ANALYZE FORMAT=JSON
• Элементы плана
– r_loops – число выполнений
– r_total_time_ms – общее время
– r_rows – число записей
• Условия
– r_filtered - %записей после
проверки условия
• Join buffer, filesort
– r_buffer_size – Размер буфера
• filesort
– r_limit
– r_output_rows
– r_priority_queue_used
• Subquery cache
– r_hit_ratio
• Range checked for each record
– r_indexes
• ...
29
ANALYZE - выводы
• ANALYZE = EXPLAIN + данные от выполнения
запроса
• ANALYZE FORMAT=JSON – много информации о
выполнении
– r_total_time_ms!
• Замедление от ANALYZE < 5%.
• Легко найти проблемы в планах запросов
30
Главные фичи в MariaDB 10.1
• Встроенный Galera Cluster
• Шифрование данных
• Оптимизатор
– EXPLAIN and ANALYZE
– Другие улучшения
• Оптимистичная параллельная репликация
31
SET STATEMENT
• “Hints” для оптимизатора:
MariaDB> SET STATEMENT sysvar=... FOR SELECT ...MariaDB> SET STATEMENT sysvar=... FOR SELECT ...
SET STATEMENT optimizer_switch=... FOR SELECT ...
SET STATEMENT
optimizer_switch=...,
join_buffer_size=1024*1024*1024
FOR
SELECT ...
32
Оптимизации для ORDER BY
• Несколько фиксов для пользователей/клиентов
• Проблемы c ORDER/GROUP BY?
• Просто попробуйте MariaDB 10.1
• MariaDB 10.1.15+:
set optimizer_switch='orderby_uses_equalities=on'
• Все еще не работает? Пишите!
33
Основные фичи в MariaDB 10.1
• Встроенный Galera Cluster
• Шифрование данных
• Оптимизатор
– EXPLAIN and ANALYZE
– Другие улучшения
• Оптимистичная параллельная репликация
34
Параллельная репликация
• На Master – много транзакций параллельно
• На Slave - один SQL thread
– Использует один CPU
– I/O: коммитит транзакции по одной
• mk-slave-prefetch
• “Replication Booster”
Master
Slave
Slave SQL
Thread
клиент
клиент
клиент
клиент
35
Параллельный slave
• MySQL 5.6
– Транзакции из разных databases
• MariaDB 10.0
– Маркеры Group Commit
• MariaDB 10.1
– Оптимистичная параллельная
• MySQL 5.7
– Маркеры Group Commit
36
Group Сommit маркеры
• Master коммитит транзакции группами
• Внутри группы конфликтов нет
– И на slave не будет*
• Пусть master пишет group marker в binlog
– А slave применяет группы параллельно
37
Group Commit маркеры
• Размер групп определяется master'ом
– Не оптимально для slave
– Быстрый master
– Последовательное выполнение
• Проблема с SBR
– Нет конфликтов на master, но есть на slave
38
Оптимистичный параллельный slave
• Применяем транзакции параллельно
• Коммит группами, в исходном порядке
• Конфликт?
– Более поздняя транзакция откатывается
– И запускается повторно
3 2 1
1
2
3 3
2
1
КоммитВыполнение
39
Оптимистичный параллельный slave
• Применяем транзакции параллельно
• Коммит группами, в исходном порядке
• Конфликт?
– Более поздняя транзакция откатывается
– И запускается повторно
3 2 1
1
2
3 3
2
1
КоммитВыполнение
40
Параллельный slave - выводы
• MySQL 5.6 – разделение по базе данных
• MariaDB 10.0 – на основе Group Commit
– MySQL 5.7 – то же самое
• MariaDB 10.1
– Параллельный slave безо всяких условий.
41
MariaDB 10.1 - выводы
• Встроенный Galera Cluster
• Шифрование данных
• Улучшения в Roles
• Оптимизатор
– EXPLAIN FORMAT=JSON
– ANALYZE [FORMAT=JSON]
– Другие улучшения
• Оптимистичная параллельная репликация
42
Спасибо за внимание!
Вопросы-ответы

More Related Content

What's hot

Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)Ontico
 
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...Ontico
 
Введение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложенийВведение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложенийSveta Smirnova
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEBAlexandre Kalendarev
 
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеВелосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеAlexandre Kalendarev
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"Technopark
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)Ontico
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...Technopark
 
Devconf2013 new-features-in-mysql-and-mariadb
Devconf2013 new-features-in-mysql-and-mariadbDevconf2013 new-features-in-mysql-and-mariadb
Devconf2013 new-features-in-mysql-and-mariadbSergey Petrunya
 
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...Ontico
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"Technopark
 
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...Ontico
 
Как делать backup MySQL
Как делать backup MySQLКак делать backup MySQL
Как делать backup MySQLSveta Smirnova
 
Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.Alexey Lesovsky
 
Эволюция репликации в MySQL и MariaDB
Эволюция репликации в MySQL и MariaDBЭволюция репликации в MySQL и MariaDB
Эволюция репликации в MySQL и MariaDBSergey Petrunya
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...Ontico
 
"OpenStack & Oracle — взболтать, но не смешивать". Сергей Филимонцев, Яндекс
"OpenStack & Oracle — взболтать, но не смешивать". Сергей Филимонцев, Яндекс"OpenStack & Oracle — взболтать, но не смешивать". Сергей Филимонцев, Яндекс
"OpenStack & Oracle — взболтать, но не смешивать". Сергей Филимонцев, ЯндексYandex
 
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)Alexey Kovyazin
 
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...Ontico
 
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Ontico
 

What's hot (20)

Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
 
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
 
Введение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложенийВведение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложений
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEB
 
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеВелосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
 
Devconf2013 new-features-in-mysql-and-mariadb
Devconf2013 new-features-in-mysql-and-mariadbDevconf2013 new-features-in-mysql-and-mariadb
Devconf2013 new-features-in-mysql-and-mariadb
 
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
 
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
 
Как делать backup MySQL
Как делать backup MySQLКак делать backup MySQL
Как делать backup MySQL
 
Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.
 
Эволюция репликации в MySQL и MariaDB
Эволюция репликации в MySQL и MariaDBЭволюция репликации в MySQL и MariaDB
Эволюция репликации в MySQL и MariaDB
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
 
"OpenStack & Oracle — взболтать, но не смешивать". Сергей Филимонцев, Яндекс
"OpenStack & Oracle — взболтать, но не смешивать". Сергей Филимонцев, Яндекс"OpenStack & Oracle — взболтать, но не смешивать". Сергей Филимонцев, Яндекс
"OpenStack & Oracle — взболтать, но не смешивать". Сергей Филимонцев, Яндекс
 
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
 
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
 
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
 

Similar to MariaDB 10.1 - что нового.

Андрей Аксёнов, Sphinx Technologies Inc.
Андрей Аксёнов, Sphinx Technologies Inc.Андрей Аксёнов, Sphinx Technologies Inc.
Андрей Аксёнов, Sphinx Technologies Inc.Ontico
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...phpdevby
 
"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)AvitoTech
 
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьСергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьTanya Denisyuk
 
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".Badoo Development
 
PHP Tricks
PHP TricksPHP Tricks
PHP TricksBlackFan
 
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5DevDay
 
AlaSQL библиотека для обработки JavaScript данных (презентация для ForntEnd 2...
AlaSQL библиотека для обработки JavaScript данных (презентация для ForntEnd 2...AlaSQL библиотека для обработки JavaScript данных (презентация для ForntEnd 2...
AlaSQL библиотека для обработки JavaScript данных (презентация для ForntEnd 2...Andrey Gershun
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиBusiness incubator HSE
 
Alasql.js - SQL база данных на JavaScript / Андрей Гершун (МАГ КОНСАЛТИНГ)
Alasql.js - SQL база данных на JavaScript / Андрей Гершун (МАГ КОНСАЛТИНГ)Alasql.js - SQL база данных на JavaScript / Андрей Гершун (МАГ КОНСАЛТИНГ)
Alasql.js - SQL база данных на JavaScript / Андрей Гершун (МАГ КОНСАЛТИНГ)Ontico
 
Performance Schema для отладки MySQL приложений
Performance Schema для отладки MySQL приложенийPerformance Schema для отладки MySQL приложений
Performance Schema для отладки MySQL приложенийSveta Smirnova
 
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий КузьминClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий КузьминHOWWEDOIT
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42DevDay
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Ontico
 
"Новые возможности MySQL 5.7"
"Новые возможности MySQL 5.7""Новые возможности MySQL 5.7"
"Новые возможности MySQL 5.7"Badoo Development
 
Обзор инструментов Toad для администраторов Oracle
Обзор инструментов Toad для администраторов OracleОбзор инструментов Toad для администраторов Oracle
Обзор инструментов Toad для администраторов OracleBAKOTECH
 
SPA инструменты
SPA инструментыSPA инструменты
SPA инструментыRoman Dvornov
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, ParallelsNikolay Samokhvalov
 

Similar to MariaDB 10.1 - что нового. (20)

Андрей Аксёнов, Sphinx Technologies Inc.
Андрей Аксёнов, Sphinx Technologies Inc.Андрей Аксёнов, Sphinx Technologies Inc.
Андрей Аксёнов, Sphinx Technologies Inc.
 
Sphinx 2013
Sphinx 2013Sphinx 2013
Sphinx 2013
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
 
"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)
 
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьСергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
 
PHP Tricks
PHP TricksPHP Tricks
PHP Tricks
 
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
 
AlaSQL библиотека для обработки JavaScript данных (презентация для ForntEnd 2...
AlaSQL библиотека для обработки JavaScript данных (презентация для ForntEnd 2...AlaSQL библиотека для обработки JavaScript данных (презентация для ForntEnd 2...
AlaSQL библиотека для обработки JavaScript данных (презентация для ForntEnd 2...
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработки
 
Alasql.js - SQL база данных на JavaScript / Андрей Гершун (МАГ КОНСАЛТИНГ)
Alasql.js - SQL база данных на JavaScript / Андрей Гершун (МАГ КОНСАЛТИНГ)Alasql.js - SQL база данных на JavaScript / Андрей Гершун (МАГ КОНСАЛТИНГ)
Alasql.js - SQL база данных на JavaScript / Андрей Гершун (МАГ КОНСАЛТИНГ)
 
Performance Schema для отладки MySQL приложений
Performance Schema для отладки MySQL приложенийPerformance Schema для отладки MySQL приложений
Performance Schema для отладки MySQL приложений
 
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий КузьминClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
 
"Новые возможности MySQL 5.7"
"Новые возможности MySQL 5.7""Новые возможности MySQL 5.7"
"Новые возможности MySQL 5.7"
 
UWDC 2013, Yii2
UWDC 2013, Yii2UWDC 2013, Yii2
UWDC 2013, Yii2
 
Обзор инструментов Toad для администраторов Oracle
Обзор инструментов Toad для администраторов OracleОбзор инструментов Toad для администраторов Oracle
Обзор инструментов Toad для администраторов Oracle
 
SPA инструменты
SPA инструментыSPA инструменты
SPA инструменты
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 

More from Sergey Petrunya

New optimizer features in MariaDB releases before 10.12
New optimizer features in MariaDB releases before 10.12New optimizer features in MariaDB releases before 10.12
New optimizer features in MariaDB releases before 10.12Sergey Petrunya
 
MariaDB's join optimizer: how it works and current fixes
MariaDB's join optimizer: how it works and current fixesMariaDB's join optimizer: how it works and current fixes
MariaDB's join optimizer: how it works and current fixesSergey Petrunya
 
Improved histograms in MariaDB 10.8
Improved histograms in MariaDB 10.8Improved histograms in MariaDB 10.8
Improved histograms in MariaDB 10.8Sergey Petrunya
 
Improving MariaDB’s Query Optimizer with better selectivity estimates
Improving MariaDB’s Query Optimizer with better selectivity estimatesImproving MariaDB’s Query Optimizer with better selectivity estimates
Improving MariaDB’s Query Optimizer with better selectivity estimatesSergey Petrunya
 
JSON Support in MariaDB: News, non-news and the bigger picture
JSON Support in MariaDB: News, non-news and the bigger pictureJSON Support in MariaDB: News, non-news and the bigger picture
JSON Support in MariaDB: News, non-news and the bigger pictureSergey Petrunya
 
Optimizer Trace Walkthrough
Optimizer Trace WalkthroughOptimizer Trace Walkthrough
Optimizer Trace WalkthroughSergey Petrunya
 
ANALYZE for Statements - MariaDB's hidden gem
ANALYZE for Statements - MariaDB's hidden gemANALYZE for Statements - MariaDB's hidden gem
ANALYZE for Statements - MariaDB's hidden gemSergey Petrunya
 
Optimizer features in recent releases of other databases
Optimizer features in recent releases of other databasesOptimizer features in recent releases of other databases
Optimizer features in recent releases of other databasesSergey Petrunya
 
MariaDB 10.4 - что нового
MariaDB 10.4 - что новогоMariaDB 10.4 - что нового
MariaDB 10.4 - что новогоSergey Petrunya
 
Using histograms to get better performance
Using histograms to get better performanceUsing histograms to get better performance
Using histograms to get better performanceSergey Petrunya
 
MariaDB Optimizer - further down the rabbit hole
MariaDB Optimizer - further down the rabbit holeMariaDB Optimizer - further down the rabbit hole
MariaDB Optimizer - further down the rabbit holeSergey Petrunya
 
Query Optimizer in MariaDB 10.4
Query Optimizer in MariaDB 10.4Query Optimizer in MariaDB 10.4
Query Optimizer in MariaDB 10.4Sergey Petrunya
 
Lessons for the optimizer from running the TPC-DS benchmark
Lessons for the optimizer from running the TPC-DS benchmarkLessons for the optimizer from running the TPC-DS benchmark
Lessons for the optimizer from running the TPC-DS benchmarkSergey Petrunya
 
MariaDB 10.3 Optimizer - where does it stand
MariaDB 10.3 Optimizer - where does it standMariaDB 10.3 Optimizer - where does it stand
MariaDB 10.3 Optimizer - where does it standSergey Petrunya
 
MyRocks in MariaDB | M18
MyRocks in MariaDB | M18MyRocks in MariaDB | M18
MyRocks in MariaDB | M18Sergey Petrunya
 
New Query Optimizer features in MariaDB 10.3
New Query Optimizer features in MariaDB 10.3New Query Optimizer features in MariaDB 10.3
New Query Optimizer features in MariaDB 10.3Sergey Petrunya
 
Histograms in MariaDB, MySQL and PostgreSQL
Histograms in MariaDB, MySQL and PostgreSQLHistograms in MariaDB, MySQL and PostgreSQL
Histograms in MariaDB, MySQL and PostgreSQLSergey Petrunya
 
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.2Sergey Petrunya
 

More from Sergey Petrunya (20)

New optimizer features in MariaDB releases before 10.12
New optimizer features in MariaDB releases before 10.12New optimizer features in MariaDB releases before 10.12
New optimizer features in MariaDB releases before 10.12
 
MariaDB's join optimizer: how it works and current fixes
MariaDB's join optimizer: how it works and current fixesMariaDB's join optimizer: how it works and current fixes
MariaDB's join optimizer: how it works and current fixes
 
Improved histograms in MariaDB 10.8
Improved histograms in MariaDB 10.8Improved histograms in MariaDB 10.8
Improved histograms in MariaDB 10.8
 
Improving MariaDB’s Query Optimizer with better selectivity estimates
Improving MariaDB’s Query Optimizer with better selectivity estimatesImproving MariaDB’s Query Optimizer with better selectivity estimates
Improving MariaDB’s Query Optimizer with better selectivity estimates
 
JSON Support in MariaDB: News, non-news and the bigger picture
JSON Support in MariaDB: News, non-news and the bigger pictureJSON Support in MariaDB: News, non-news and the bigger picture
JSON Support in MariaDB: News, non-news and the bigger picture
 
Optimizer Trace Walkthrough
Optimizer Trace WalkthroughOptimizer Trace Walkthrough
Optimizer Trace Walkthrough
 
ANALYZE for Statements - MariaDB's hidden gem
ANALYZE for Statements - MariaDB's hidden gemANALYZE for Statements - MariaDB's hidden gem
ANALYZE for Statements - MariaDB's hidden gem
 
Optimizer features in recent releases of other databases
Optimizer features in recent releases of other databasesOptimizer features in recent releases of other databases
Optimizer features in recent releases of other databases
 
MariaDB 10.4 - что нового
MariaDB 10.4 - что новогоMariaDB 10.4 - что нового
MariaDB 10.4 - что нового
 
Using histograms to get better performance
Using histograms to get better performanceUsing histograms to get better performance
Using histograms to get better performance
 
MariaDB Optimizer - further down the rabbit hole
MariaDB Optimizer - further down the rabbit holeMariaDB Optimizer - further down the rabbit hole
MariaDB Optimizer - further down the rabbit hole
 
Query Optimizer in MariaDB 10.4
Query Optimizer in MariaDB 10.4Query Optimizer in MariaDB 10.4
Query Optimizer in MariaDB 10.4
 
Lessons for the optimizer from running the TPC-DS benchmark
Lessons for the optimizer from running the TPC-DS benchmarkLessons for the optimizer from running the TPC-DS benchmark
Lessons for the optimizer from running the TPC-DS benchmark
 
MariaDB 10.3 Optimizer - where does it stand
MariaDB 10.3 Optimizer - where does it standMariaDB 10.3 Optimizer - where does it stand
MariaDB 10.3 Optimizer - where does it stand
 
MyRocks in MariaDB | M18
MyRocks in MariaDB | M18MyRocks in MariaDB | M18
MyRocks in MariaDB | M18
 
New Query Optimizer features in MariaDB 10.3
New Query Optimizer features in MariaDB 10.3New Query Optimizer features in MariaDB 10.3
New Query Optimizer features in MariaDB 10.3
 
MyRocks in MariaDB
MyRocks in MariaDBMyRocks in MariaDB
MyRocks in MariaDB
 
Histograms in MariaDB, MySQL and PostgreSQL
Histograms in MariaDB, MySQL and PostgreSQLHistograms in MariaDB, MySQL and PostgreSQL
Histograms in MariaDB, MySQL and PostgreSQL
 
Say Hello to MyRocks
Say Hello to MyRocksSay Hello to MyRocks
Say Hello to MyRocks
 
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
 

MariaDB 10.1 - что нового.

  • 1. 1 MariaDB 10.1 что нового Сергей Петруня, MariaDB '2016
  • 2. 2 Стабильные релизы MySQL/MariaDB • MySQL 5.7: 21 октября 2015 • MariaDB 10.1: 17 октября 2015 • MariaDB 10.0: 31 марта 2014 • MySQL 5.6: 5 февраля 2013
  • 3. 3 Основные фичи в MariaDB 10.1 • Встроенный Galera Cluster • Шифрование данных • Улучшения в Roles • Оптимизатор – EXPLAIN и ANALYZE – Другие улучшения • Оптимистичная параллельная репликация
  • 4. 4 Встроенный Galera Cluster • MariaDB 5.5, 10.0: -galera дерево • MariaDB 10.1 – Поддержка Galera в главном дереве – Собранные Galera packages.
  • 5. 5 Главные фичи в MariaDB 10.1 • Встроенный Galera Cluster • Шифрование данных • Улучшения в Roles • Оптимизатор – EXPLAIN и ANALYZE – Другие улучшения • Оптимистичная параллельная репликация
  • 6. 6 Шифрование в MariaDB • Основано на – патче от Google – Патче от Eperi • “Data-at-rest encryption”
  • 7. 7 Сервер с данными SQL OC ibdata binlog tmpXX error log slow log Диск RAM Сервер
  • 10. 10 SQL OC ibdata binlog tmpXX Диск RAM Сервер Data-at-rest encryption error log slow log • Шифруем всё, что на диске.
  • 11. 11 Data-at-rest encryption • Защищает от – Копирования или кражи диска – Не-root доступа к серверу • Не защищает от – SQL-иньекций – Взлома приложения (wordpress'a и тд) – Взлома сервера с получением root'a.
  • 12. 12 Ключи шифрования • File key management plugin – Поставляется с MariaDB – Ключ в файле, в открытом виде – /dev/shm... • AWS key management plugin – Исходники – в MariaDB – Пакеты? Только MariaDB Enterprise • Eperi Gateway for Databases – Коммерческий продукт c закрытым кодом – Eperi.de
  • 13. 13 AWS Key Management Plugin • AWS Key Management Service – Генерирует и хранит ключи – Выдает приложениям по требованию – Лог выдачи – Отзыв права получить ключ – ... • Доступ ко ключам – В ЕС2 – Amazon знает, кто вы – Вне EC2: надо аутентифицироваться в Amazon Identity Service.
  • 14. 14 А что у Oracle? • Шифрование появилось в MySQL 5.7.11 – Выпущено 5 февраля 2016 (?) • Ключами управляют – MySQL Community: плагин keyring_file – MySQL Enterprise Edition: Oracle Key Vault.
  • 15. 15 Шифрование - выводы • Защищает от копирования/кражи диска – Полезно для security compliance – Не защищает от других атак • Key Management – Ключ из файла – Ключ из AWS Key Management Service – Ключ из Eperi Gateway
  • 16. 16 Основные фичи в MariaDB 10.1 • Встроенный Galera Cluster • Шифрование данных • Улучшения в Roles • Оптимизатор – EXPLAIN и ANALYZE – Другие улучшения • Оптимистичная параллельная репликация
  • 17. 17 Роли в MariaDB 10.0 root> CREATE ROLE developer; root> GRANT ... TO developer; root> GRANT developer TO 'user1'@'host'; user table1 table2 role ... user1> SET ROLE developer; user1> DELETE FROM table1; ... root> CREATE ROLE developer; root> GRANT ... TO developer; root> GRANT developer TO 'user1'@'host'; Обязательно! В каждом connection!
  • 18. 18 MariaDB 10.1: роль по умолчанию • SET ROLE не требуется! • Несколько ролей по умолчанию? – GRANT role1 TO user1_default_role GRANT role2 TO user1_default_role SET DEFAULT ROLE user1_default_role FOR user1@host root> SET DEFAULT ROLE developer FOR 'user1'@'host'; user1> connect user1> DELETE FROM table1;
  • 19. 19 Роли - выводы • Роли появились в MariaDB 10.0 • MariaDB 10.1 – роль по умолчанию – Роли теперь прозрачны для приложений.
  • 20. 20 Основные фичи в MariaDB 10.1 • Встроенный Galera Cluster • Шифрование данных • Улучшения в Roles • Оптимизатор – EXPLAIN и ANALYZE – Другие улучшения • Оптимистичная параллельная репликация
  • 21. 21 EXPLAIN FORMAT=JSON • Появился в MySQL 5.6 • Имел явные недостатки Bug#69567: EXPLAIN FORMAT=JSON lists subquery in optimized_away_subqueries, but it is run Bug#69795: EXPLAIN FORMAT=JSON doesn't show Using filesort for UNION Bug#74462: EXPLAIN FORMAT=JSON produces ordering_operation when no ordering takes place Bug#74661: EXPLAIN FORMAT=JSON says two temptables are used, execution shows just one Bug#74744: EXPLAIN FORMAT=JSON produces duplicates_removal where there is none [no bug#]: EXPLAIN FORMAT=JSON shows the same subquery as two different subqueries ... • В MariaDB переписали – Показывает правду – Больше информации, чем в 5.6 – Читабельнее
  • 22. 22 ANALYZE для команд • EXPLAIN показывает план запроса +----+-----------+--------+----+-------------+-------+-------+-----------------+-------+-----------+ |id |select_type|table |type|possible_keys|key |key_len|ref |rows |Extra | +----+-----------+--------+----+-------------+-------+-------+-----------------+-------+-----------+ | 1|SIMPLE |orders |ALL |PRIMARY,... |NULL |NULL |NULL |1507320|Using where| | 1|SIMPLE |lineitem|ref |PRIMARY,... |PRIMARY|4 |orders.o_orderkey| 1|Using where| +----+-----------+--------+----+-------------+-------+-------+-----------------+-------+-----------+ • А что было в реальности ?
  • 23. 23 EXPLAIN и выполнение • Slow query log: Rows_examined • SHOW STATUS LIKE 'Handler%' • SHOW (TABLE|INDEX)_STATISTICS • performance_schema.table_io_waits_summary_by_table +--+-----------+--------+------+-------------+---------+-------+-------------------+----+----------------------------+ |id|select_type|table |type |possible_keys|key |key_len|ref |rows|Extra | +--+-----------+--------+------+-------------+---------+-------+-------------------+----+----------------------------+ |1 |PRIMARY |orders |const |PRIMARY |PRIMARY |4 |const |1 |Using index | |1 |PRIMARY |lineitem|ref |PRIMARY,i_...|PRIMARY |4 |const |2 |Using where; Start temporary| |1 |PRIMARY |lineitem|ref |PRIMARY,i_...|i_suppkey|5 |lineitem.l_partkey |14 |Using index | |1 |PRIMARY |orders |eq_ref|PRIMARY,i_...|PRIMARY |4 |lineitem.l_orderkey|1 |Using where | |1 |PRIMARY |customer|eq_ref|PRIMARY |PRIMARY |4 |orders.o_custkey |1 |End temporary | +--+-----------+--------+------+-------------+---------+-------+-------------------+----+----------------------------+ Счетчик
  • 24. 24 ANALYZE для команд • orders: r_rows≈rows, ок r_filtered=2*filtered, сойдет • lineitem: r_rows = 2* rows, ок r_filtered=0.00% ?? +--+-----------+--------+----+-------------+-------+-------+-----------------+-------+-------+--------+----------+-----------+ |id|select_type|table |type|possible_keys|key |key_len|ref |rows |r_rows |filtered|r_filtered|Extra | +--+-----------+--------+----+-------------+-------+-------+-----------------+-------+-------+--------+----------+-----------+ |1 |SIMPLE |orders |ALL |PRIMARY,i_...|NULL |NULL |NULL |1504278|1500000| 50.00 | 100.00 |Using where| |1 |SIMPLE |lineitem|ref |PRIMARY,i_...|PRIMARY|4 |orders.o_orderkey|2 |4.00 | 100.00 | 0.00 |Using where| +--+-----------+--------+----+-------------+-------+-------+-----------------+-------+-------+--------+----------+-----------+ analyze select * from lineitem, orders where o_orderkey=l_orderkey and o_orderdate between '1990-01-01' and '1998-12-06' and l_extendedprice > 1000000 Новые колонки: r_ (real) • r_rows • r_filtered
  • 25. 25 ANALYZE FORMAT=JSON EXPLAIN FORMAT=JSON + ANALYZE ANALYZE FORMAT=JSON=
  • 26. 26 { "query_block": { "select_id": 1, "r_loops": 1, "r_total_time_ms": 191747, "table": { "table_name": "orders", "access_type": "ALL", "possible_keys": ["PRIMARY", "i_o_orderdate"], "r_loops": 1, "rows": 1498194, "r_rows": 1.5e6, "r_total_time_ms": 14261, "filtered": 50, "r_filtered": 100, "attached_condition": "(orders.o_orderDATE between 1990-01-01 and 1998-12-06)" }, "table": { "table_name": "lineitem", "access_type": "ref", "possible_keys": ["PRIMARY", ...], "key": "PRIMARY", "key_length": "4", "used_key_parts": ["l_orderkey"], "ref": ["dbt3sf1.orders.o_orderkey"], "r_loops": 1500000, "rows": 1, "r_rows": 4.0008, "r_total_time_ms": 170456, "filtered": 100, "r_filtered": 0, "attached_condition": "(lineitem.l_extendedprice > 1000000)" } } }
  • 27. 27 { "query_block": { "select_id": 1, "r_loops": 1, "r_total_time_ms": 191747, "table": { "table_name": "orders", "access_type": "ALL", "possible_keys": ["PRIMARY", "i_o_orderdate"], "r_loops": 1, "rows": 1498194, "r_rows": 1.5e6, "r_total_time_ms": 14261, "filtered": 50, "r_filtered": 100, "attached_condition": "(orders.o_orderDATE between 1990-01-01 and 1998-12-06)" }, "table": { "table_name": "lineitem", "access_type": "ref", "possible_keys": ["PRIMARY", ...], "key": "PRIMARY", "key_length": "4", "used_key_parts": ["l_orderkey"], "ref": ["dbt3sf1.orders.o_orderkey"], "r_loops": 1500000, "rows": 1, "r_rows": 4.0008, "r_total_time_ms": 170456, "filtered": 100, "r_filtered": 0, "attached_condition": "(lineitem.l_extendedprice > 1000000)" } } } "table_name": "orders", "access_type": "ALL", "possible_keys": ["PRIMARY "r_loops": 1, "rows": 1498194, "r_rows": 1.5e6, "r_total_time_ms": 14261, "r_loops": 1500000, "rows": 1, "r_rows": 4.0008, "r_total_time_ms": 170456, "filtered": 100, "r_filtered": 0, "table_name": "lineitem",
  • 28. 28 Поля в ANALYZE FORMAT=JSON • Элементы плана – r_loops – число выполнений – r_total_time_ms – общее время – r_rows – число записей • Условия – r_filtered - %записей после проверки условия • Join buffer, filesort – r_buffer_size – Размер буфера • filesort – r_limit – r_output_rows – r_priority_queue_used • Subquery cache – r_hit_ratio • Range checked for each record – r_indexes • ...
  • 29. 29 ANALYZE - выводы • ANALYZE = EXPLAIN + данные от выполнения запроса • ANALYZE FORMAT=JSON – много информации о выполнении – r_total_time_ms! • Замедление от ANALYZE < 5%. • Легко найти проблемы в планах запросов
  • 30. 30 Главные фичи в MariaDB 10.1 • Встроенный Galera Cluster • Шифрование данных • Оптимизатор – EXPLAIN and ANALYZE – Другие улучшения • Оптимистичная параллельная репликация
  • 31. 31 SET STATEMENT • “Hints” для оптимизатора: MariaDB> SET STATEMENT sysvar=... FOR SELECT ...MariaDB> SET STATEMENT sysvar=... FOR SELECT ... SET STATEMENT optimizer_switch=... FOR SELECT ... SET STATEMENT optimizer_switch=..., join_buffer_size=1024*1024*1024 FOR SELECT ...
  • 32. 32 Оптимизации для ORDER BY • Несколько фиксов для пользователей/клиентов • Проблемы c ORDER/GROUP BY? • Просто попробуйте MariaDB 10.1 • MariaDB 10.1.15+: set optimizer_switch='orderby_uses_equalities=on' • Все еще не работает? Пишите!
  • 33. 33 Основные фичи в MariaDB 10.1 • Встроенный Galera Cluster • Шифрование данных • Оптимизатор – EXPLAIN and ANALYZE – Другие улучшения • Оптимистичная параллельная репликация
  • 34. 34 Параллельная репликация • На Master – много транзакций параллельно • На Slave - один SQL thread – Использует один CPU – I/O: коммитит транзакции по одной • mk-slave-prefetch • “Replication Booster” Master Slave Slave SQL Thread клиент клиент клиент клиент
  • 35. 35 Параллельный slave • MySQL 5.6 – Транзакции из разных databases • MariaDB 10.0 – Маркеры Group Commit • MariaDB 10.1 – Оптимистичная параллельная • MySQL 5.7 – Маркеры Group Commit
  • 36. 36 Group Сommit маркеры • Master коммитит транзакции группами • Внутри группы конфликтов нет – И на slave не будет* • Пусть master пишет group marker в binlog – А slave применяет группы параллельно
  • 37. 37 Group Commit маркеры • Размер групп определяется master'ом – Не оптимально для slave – Быстрый master – Последовательное выполнение • Проблема с SBR – Нет конфликтов на master, но есть на slave
  • 38. 38 Оптимистичный параллельный slave • Применяем транзакции параллельно • Коммит группами, в исходном порядке • Конфликт? – Более поздняя транзакция откатывается – И запускается повторно 3 2 1 1 2 3 3 2 1 КоммитВыполнение
  • 39. 39 Оптимистичный параллельный slave • Применяем транзакции параллельно • Коммит группами, в исходном порядке • Конфликт? – Более поздняя транзакция откатывается – И запускается повторно 3 2 1 1 2 3 3 2 1 КоммитВыполнение
  • 40. 40 Параллельный slave - выводы • MySQL 5.6 – разделение по базе данных • MariaDB 10.0 – на основе Group Commit – MySQL 5.7 – то же самое • MariaDB 10.1 – Параллельный slave безо всяких условий.
  • 41. 41 MariaDB 10.1 - выводы • Встроенный Galera Cluster • Шифрование данных • Улучшения в Roles • Оптимизатор – EXPLAIN FORMAT=JSON – ANALYZE [FORMAT=JSON] – Другие улучшения • Оптимистичная параллельная репликация