SlideShare a Scribd company logo
1 of 26
Download to read offline
Новые возможности
MySQL 5.7
Дмитрий Ленев, Oracle, 2016
Safe Harbor Statement
The following is intended to outline our general product
direction. It is intended for information purposes only, and
may not be incorporated into any contract. It is not a
commitment to deliver any material, code, or functionality,
and should not be relied upon in making purchasing
decisions. The development, release and timing of any
features or functionality described for Oracle's products
remains at the sole discretion of Oracle.
MySQL 5.7
• Наиболее свежая среди стабильных веток
• В разработке с 2012 года
• Объявлена готовой к использованию (GA) - октябрь 2015
• Последняя версия - 5.7.13 (июнь 2016)
• В версии 5.7.12 (апрель 2016) представлен первый rapid
plugin – X plugin
Направления улучшений в MySQL 5.7
• Производительность и масштабируемость
• Встроенная поддержка JSON
• Генерируемые столбцы
• Оптимизация и выполнение запросов
• InnoDB
• Репликация
• Безопасность
• PERFORMANCE_SCHEMA и SYS схема
• GIS
• X plugin, X protocol и X DevApi
Встроенная поддержка JSON
• Новый тип столбцов - JSON
– Оптимизированный бинарный формат (быстрый доступ
по ключам и к элементам массивов)
– Оптимизирован для чтения
– Utf8mb4
– Валидация при вставке
– Поддержка обычных JSON элементов (числа, строки,
объекты, массивы,...) и дополнительных типов
(datetime,...)
Встроенная поддержка JSON
• Встроенные функции для манипуляций с JSON
– JSON_EXTRACT()/оператор ->, JSON_SEARCH(),
JSON_CONTAINS(),…
– JSON_SET(), JSON_INSERT(), JSON_REMOVE(),...
– JSON_VALID(), JSON_LENGTH(), JSON_DEPTH(),...
– JSON_ARRAY(), JSON_OBJECT()
– JSON_QUOTE(), JSON_UNQUOTE()
• Компаратор для сравнения в SQL запросах
Генерируемые столбцы
CREATE TABLE t1 (
  id INT PRIMARY KEY AUTO_INCREMENT,
  my_integer INT,
  my_integer_plus_one INT AS (my_integer + 1)
)
• Могут быть VIRTUAL (по умолчанию) и STORED
• Можно создавать индексы для обоих типов
• Оптимизатор анализирует выражения и старается использовать
наилучший «функциональный» индекс
Генерируемые столбцы
CREATE TABLE features (
id INT PRIMARY KEY AUTO_INCREMENT,
feature JSON NOT NULL)
ALTER TABLE features ADD feature_type VARCHAR(30) AS (feature­>”$.type”);
- мгновенно, обновляются только метаданные
ALTER TABLE features ADD INDEX (feature_type);
- быстрая операция, создает только индекс не затрагивая данные
ALTER TABLE features ADD feature_type VARCHAR(30) AS (feature­>”$.type”) STORED;
- медленная операция, перестраивает таблицу
Генерируемые столбцы:
STORED vs VIRTUAL
• STORED
– Может быть PRIMARY KEY
– BTREE, FULLTEXT, GIS
– Добавление колонки требует перестроения таблицы и блокирует
обновления
– Добавление индекса in-place/не блокирует обновления
• VIRTUAL
– Не можеть быть PRIMARY KEY
– Только BTREE
– Добавление колонки мгновенно
– Добавление индекса in-place/не блокирует обновления
Улучшения в оптимизаторе и
выполнении запросов
• Оптимизации:
– Более умный учет условий при выборе порядка
таблиц в join
– Подзапросы из FROM обрабатываются как view
– UNION ALL не требует временных таблиц
– Полностью cost-based выбор индекса для ORDER BY
… LIMIT N
– Более оптимальное использование sort-buffer для
несортируемых полей
Улучшения в оптимизаторе и
выполнении запросов
• EXPLAIN FOR CONNECTION
• Улучшения в EXPLAIN JSON (общая стоимость, по
таблицам, кол-во обработанных данных)
• Улучшен режим ONLY_FULL_GROUP_BY и включен по
умолчанию
• IN поддерживает кортежи [выражения вида («a», 
«b»)]
• Новый механизм подсказок оптимизатору /*+ … */:
– MAX_EXECUTION_TIME, BKA, MRR, ICP,
NO_RANGE_OPTIMIZATION,SEMIJOIN, SUBQUERY
Query Rewrite Plugin
• Работает после обработки парсером перед оптимизацией и
выполнением
• Позволяет изменить проблемный запрос без изменения
приложения:
– Добавить подсказок оптимизатору
– Поменять порядок в join
– ...
• Решает проблему «плохих» запросов от ORM, сторонних
приложений — больше не нужно использовать proxy в этих
случаях
Улучшения в InnoDB
• Производительность/масштабируемость
• Поддержка native partitioning
– Быстрее, меньше ресурсов
– Поддержка trasportable tablespaces
• General tablespaces
• Улучшения Fulltext
– Поддержка parser plugin
– CJK и MeCab парсеры
• Поддержка GIS индексов
Улучшения в InnoDB
• ALTER TABLE … RENAME INDEX
• Быстрый ALTER TABLE для VARCHAR
• Оптимизация создания индексов (create index bulk load)
• Изменение размера buffer pool без рестарта
• Сохранение горячих страниц из buffer pool для прогрева (--innodb-buffer-
pool-dump-pct=)
• Поддержка 32k и 64k страниц
• Управление MERGE_THRESHOLD
• Оптимизация работы с временными табличками (пользовательскими и
intrisic)
• Transparent Page Compression (punch-hole)
Репликация
• GTID
– Включение GTID без downtime и перезапусков
– Slave без binlog
• Поддержка репликации из многих источников
• Изменение настроек фильтрации без перезапуска
• Улучшения в полу-синхронной репликации
– Ожидание подтверждения от нескольких slave
– Фиксация транзакции только после подтверждения (корректный
failover, решение проблемы с видимостью изменений)
– Отдельные потоки для отсылки и получения подтверждений
Репликация
Многопоточный slave для транзакций в одной БД (--slave-
parallel-type=LOGICAL_CLOCK)
0%
50%
100%
150%
200%
250%
1 8 24 48
SlaveThreads
Slavethroughputvs.96ThreadMaster
Безопасность
• Безопасность по умолчанию
– автогенерация пароля root@localhost при инсталляции
– нет анонимов
• Простое и безопасное создание БД через mysqld —initialize
• SSL
– Включен по умолчанию
– --ssl на клиенте его требует
– Автоматическое обнаружение и генерация ключей
– --require-secure-trasport на сервере
Безопасность
• Поддержка политик смены паролей
• Временная блокировка и разблокировка пользователей
• Режимы AES шифрования
• Расширена поддержка PROXY пользователей
– теперь и при аутентификации через встроенные
механизмы сервера
– Можно использовать для эмуляции ролей
• Максимальная длина имени пользователя теперь 32
• CREATE/DROP USER IF EXIST
PERFORMANCE_SCHEMA и SYS
• Добавлена инструментация для:
– Блокировок метаданных (MDL)
– Транзакций
– Хранимых процедур и prepared statements
– Использования памяти
• Аггрегированная статистика по:
– типам памяти/пользователям/хостам/соединениям
• Включает данные:
– объем, количество выделений, high/low watermarks
PERFORMANCE_SCHEMA и SYS
• Добавлены P_S таблицы для:
– Состояния slave (аналог SHOW SLAVE STATUS)
– Пользовательских переменные
– Статусных и системных переменных
• Оптимизировано использование памяти
• Многочисленные настройки (фильтрация по пользователям,
включение/выключение истории для соединений)
• SYS schema (ps_helper) теперь доступен по умолчанию
GIS
• Выкинули старый код и перешли на Boost.Geometry !
– Для вычислений и операций
– Меньше ошибок, больше функциональности
• Импорт/экспорт из/в
– GeoHash
– GeoJSON
• Новые вспомогательные функции ST_Distance_Sphere(),
ST_MakeEnvelope(),...
• Реализовали поддержку R-tree в InnoDB
– Транзакции/ACID/MVCC при работе с GIS
Rapid plugin-ы
• Есть два конфликтующих требования:
– Не смейте ломать сервер!
– Дайте мне новые возможности скорее!
• Rapid Plugin-ы попытка решить проблему
• Добавляем новые возможности через plugin оставляя сервер
стабильным
– Цель иметь pluginы с тем же качеством что и сервер
– Plugin-ы поставляются вместе с сервером, вы решаете -
включать их или нет
• X plugin первый Rapid Plugin
X plugin
• Доступен с версии 5.7.12 (апрель 2016)
• Pre-production статус
• Реализует X protocol (расширяемость, асинхронные API,
pipelining)
• Реализует MySQL Document Store — плюсы:
– NoSQL:
• Schemaless — хранит JSON документы
• Простой в использовании CRUD API
– MySQL:
• ACID
• Репликация
• Мониторинг через P_S
MySQL Document Store
• Использует новый JSON тип и индексы на генерируемые столбцы
• Оперирует коллекциями JSON объектов
• Новый MySQL Shell — JavaScript, Python, SQL
• Коннекторы с новым CRUD API:
– Java, NodeJS, Net, Python
– Поддерживают работу с коллекциями и таблицами
– Цепочки методов (method chaining)
– Асинхронное выполнение
– Поддерживает parameter binding
Архитектура X
MySQLMySQL
Plugins
X Plugin
Group Replication
Plugin
Core
X ProtocolClassic Protocol
X Protocol
33060
Classic Protocol
3306
SQL API X Dev API
CRUD Based
X and Classic
Protocols
MySQL Shell
Javascript/Pyt
hon
Спасибо!
Подробнее о MySQL 5.7:
http://mysqlserverteam.com/whats-new-in-mysql-5-7-generally-
available/
http://dev.mysql.com/doc/refman/5.7/en/mysql-nutshell.html
Подробнее об X plugin:
http://mysqlserverteam.com/category/docstore/
http://dev.mysql.com/doc/refman/5.7/en/document-store.html
Загрузить MySQL 5.7 и X plugin:
http://dev.mysql.com/downloads/mysql/

More Related Content

What's hot

Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Ontico
 
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Ontico
 
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
Ontico
 
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Ontico
 
Как мы готовим MySQL / Николай Королёв (Badoo)
Как мы готовим MySQL / Николай Королёв (Badoo)Как мы готовим MySQL / Николай Королёв (Badoo)
Как мы готовим MySQL / Николай Королёв (Badoo)
Ontico
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
Sergey Xek
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ontico
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил ТюринPG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
pgdayrussia
 
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Oleg Tsarev
 
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
Ontico
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)
Andrew Avdeev
 
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Ontico
 

What's hot (20)

Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
 
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
 
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
 
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
 
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
 
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
 
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
 
Как мы готовим MySQL / Николай Королёв (Badoo)
Как мы готовим MySQL / Николай Королёв (Badoo)Как мы готовим MySQL / Николай Королёв (Badoo)
Как мы готовим MySQL / Николай Королёв (Badoo)
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
 
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
 
Олег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоОлег Бартунов и Иван Панченко
Олег Бартунов и Иван Панченко
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил ТюринPG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
 
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
 
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
 
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей Ситник
 
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
 

Viewers also liked

"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
Badoo Development
 
"Великолепный API без Rest", Констатин Якушев (Badoo)
 "Великолепный API без Rest", Констатин Якушев (Badoo) "Великолепный API без Rest", Констатин Якушев (Badoo)
"Великолепный API без Rest", Констатин Якушев (Badoo)
Badoo Development
 
Мобильный веб: назад в будущее
Мобильный веб: назад в будущееМобильный веб: назад в будущее
Мобильный веб: назад в будущее
Badoo Development
 
Технологии vs коммуникации: что важнее?
Технологии vs коммуникации: что важнее?Технологии vs коммуникации: что важнее?
Технологии vs коммуникации: что важнее?
Badoo Development
 

Viewers also liked (20)

"Геолокация в Badoo", Андрей Воликов (Badoo)
"Геолокация в Badoo", Андрей Воликов (Badoo)"Геолокация в Badoo", Андрей Воликов (Badoo)
"Геолокация в Badoo", Андрей Воликов (Badoo)
 
"Обзор Tarantool DB"
"Обзор Tarantool DB""Обзор Tarantool DB"
"Обзор Tarantool DB"
 
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
 
"Великолепный API без Rest", Констатин Якушев (Badoo)
 "Великолепный API без Rest", Констатин Якушев (Badoo) "Великолепный API без Rest", Констатин Якушев (Badoo)
"Великолепный API без Rest", Констатин Якушев (Badoo)
 
"Развитие ветки PHP-7"
"Развитие ветки PHP-7""Развитие ветки PHP-7"
"Развитие ветки PHP-7"
 
TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma
 
TechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, ErlyvideoTechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, Erlyvideo
 
TechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, BadooTechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, Badoo
 
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ruTechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
 
Docker networking
Docker networkingDocker networking
Docker networking
 
Мобильный веб: назад в будущее
Мобильный веб: назад в будущееМобильный веб: назад в будущее
Мобильный веб: назад в будущее
 
Мониторь, автоматизируй Docker
Мониторь, автоматизируй DockerМониторь, автоматизируй Docker
Мониторь, автоматизируй Docker
 
Технологии vs коммуникации: что важнее?
Технологии vs коммуникации: что важнее?Технологии vs коммуникации: что важнее?
Технологии vs коммуникации: что важнее?
 
Багфиксинг процесса разработки в iOS: взгляд с двух сторон
Багфиксинг процесса разработки в iOS: взгляд с двух сторонБагфиксинг процесса разработки в iOS: взгляд с двух сторон
Багфиксинг процесса разработки в iOS: взгляд с двух сторон
 
Как автотесты ускоряют релизы в OK.ru
Как автотесты ускоряют релизы в OK.ruКак автотесты ускоряют релизы в OK.ru
Как автотесты ускоряют релизы в OK.ru
 
Docker в Badoo: ПМЖ или временная регистрация
Docker в Badoo: ПМЖ или временная регистрацияDocker в Badoo: ПМЖ или временная регистрация
Docker в Badoo: ПМЖ или временная регистрация
 
Docker penetration
Docker penetrationDocker penetration
Docker penetration
 
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации"
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации"Эволюция клиентской разработки: от веба ко "всеобщей мобилизации"
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации"
 
Ровная балансировка нагрузки на фронтенд-кластере
Ровная балансировка нагрузки на фронтенд-кластереРовная балансировка нагрузки на фронтенд-кластере
Ровная балансировка нагрузки на фронтенд-кластере
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 

Similar to "Новые возможности MySQL 5.7"

Devconf2010 mariadb-extra-features
Devconf2010 mariadb-extra-featuresDevconf2010 mariadb-extra-features
Devconf2010 mariadb-extra-features
Sergey Petrunya
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Nikolay Samokhvalov
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Anton Baranov
 
Расширяемость PostgreSQL для хакеров и архитекторов / Олег Бартунов, Александ...
Расширяемость PostgreSQL для хакеров и архитекторов / Олег Бартунов, Александ...Расширяемость PostgreSQL для хакеров и архитекторов / Олег Бартунов, Александ...
Расширяемость PostgreSQL для хакеров и архитекторов / Олег Бартунов, Александ...
Ontico
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем Yii
Alexander Makarov
 
django-and-postgresql
django-and-postgresqldjango-and-postgresql
django-and-postgresql
Oleg Churkin
 
SAMag2007 Conference: PostgreSQL 8.3 presentation
SAMag2007 Conference: PostgreSQL 8.3 presentationSAMag2007 Conference: PostgreSQL 8.3 presentation
SAMag2007 Conference: PostgreSQL 8.3 presentation
Nikolay Samokhvalov
 

Similar to "Новые возможности MySQL 5.7" (20)

Devconf2010 mariadb-extra-features
Devconf2010 mariadb-extra-featuresDevconf2010 mariadb-extra-features
Devconf2010 mariadb-extra-features
 
Российская СУБД Postgres Pro
Российская СУБД Postgres ProРоссийская СУБД Postgres Pro
Российская СУБД Postgres Pro
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 
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
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
6. InterBase 2017 (Дмитрий Кузьменко)
6. InterBase 2017 (Дмитрий Кузьменко)6. InterBase 2017 (Дмитрий Кузьменко)
6. InterBase 2017 (Дмитрий Кузьменко)
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Расширяемость PostgreSQL для хакеров и архитекторов / Олег Бартунов, Александ...
Расширяемость PostgreSQL для хакеров и архитекторов / Олег Бартунов, Александ...Расширяемость PostgreSQL для хакеров и архитекторов / Олег Бартунов, Александ...
Расширяемость PostgreSQL для хакеров и архитекторов / Олег Бартунов, Александ...
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем Yii
 
My sql 5.6-new-stable-mmug
My sql 5.6-new-stable-mmugMy sql 5.6-new-stable-mmug
My sql 5.6-new-stable-mmug
 
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
 
django-and-postgresql
django-and-postgresqldjango-and-postgresql
django-and-postgresql
 
как из трех стоек сделать две.
как из трех стоек сделать две.как из трех стоек сделать две.
как из трех стоек сделать две.
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspb
 
Обзор инструментов Toad для администраторов Oracle
Обзор инструментов Toad для администраторов OracleОбзор инструментов Toad для администраторов Oracle
Обзор инструментов Toad для администраторов Oracle
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"
 
SAMag2007 Conference: PostgreSQL 8.3 presentation
SAMag2007 Conference: PostgreSQL 8.3 presentationSAMag2007 Conference: PostgreSQL 8.3 presentation
SAMag2007 Conference: PostgreSQL 8.3 presentation
 
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
 
Scaling PostgreSQL
Scaling PostgreSQLScaling PostgreSQL
Scaling PostgreSQL
 

More from Badoo Development

Как мы готовим MySQL
 Как мы готовим MySQL  Как мы готовим MySQL
Как мы готовим MySQL
Badoo Development
 
Архитектура хранения и отдачи фотографий в Badoo
Архитектура хранения и отдачи фотографий в Badoo Архитектура хранения и отдачи фотографий в Badoo
Архитектура хранения и отдачи фотографий в Badoo
Badoo Development
 
5 способов деплоя PHP-кода в условиях хайлоада
5 способов деплоя PHP-кода в условиях хайлоада5 способов деплоя PHP-кода в условиях хайлоада
5 способов деплоя PHP-кода в условиях хайлоада
Badoo Development
 

More from Badoo Development (20)

Viktar Karanevich – iOS Parallel Automation
Viktar Karanevich – iOS Parallel AutomationViktar Karanevich – iOS Parallel Automation
Viktar Karanevich – iOS Parallel Automation
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон Довгаль
 
Григорий Джанелидзе, OK.RU
Григорий Джанелидзе, OK.RUГригорий Джанелидзе, OK.RU
Григорий Джанелидзе, OK.RU
 
Андрей Сидоров, Яндекс.Браузер
Андрей Сидоров, Яндекс.БраузерАндрей Сидоров, Яндекс.Браузер
Андрей Сидоров, Яндекс.Браузер
 
Филипп Уваров, Avito
Филипп Уваров, AvitoФилипп Уваров, Avito
Филипп Уваров, Avito
 
Cocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magicCocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magic
 
Cocoaheads Meetup / Kateryna Trofimenko / Feature development
Cocoaheads Meetup / Kateryna Trofimenko / Feature developmentCocoaheads Meetup / Kateryna Trofimenko / Feature development
Cocoaheads Meetup / Kateryna Trofimenko / Feature development
 
Alex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High AvailabilityAlex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High Availability
 
Андрей Денисов – В ожидании мониторинга баз данных
Андрей Денисов – В ожидании мониторинга баз данныхАндрей Денисов – В ожидании мониторинга баз данных
Андрей Денисов – В ожидании мониторинга баз данных
 
Александр Зобнин, Grafana Labs
Александр Зобнин, Grafana LabsАлександр Зобнин, Grafana Labs
Александр Зобнин, Grafana Labs
 
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественноИлья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
 
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»  Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
 
Как мы готовим MySQL
 Как мы готовим MySQL  Как мы готовим MySQL
Как мы готовим MySQL
 
Архитектура хранения и отдачи фотографий в Badoo
Архитектура хранения и отдачи фотографий в Badoo Архитектура хранения и отдачи фотографий в Badoo
Архитектура хранения и отдачи фотографий в Badoo
 
5 способов деплоя PHP-кода в условиях хайлоада
5 способов деплоя PHP-кода в условиях хайлоада5 способов деплоя PHP-кода в условиях хайлоада
5 способов деплоя PHP-кода в условиях хайлоада
 
ChromeDriver Jailbreak
ChromeDriver JailbreakChromeDriver Jailbreak
ChromeDriver Jailbreak
 
Git хуки на страже качества кода
Git хуки на страже качества кодаGit хуки на страже качества кода
Git хуки на страже качества кода
 
Versioning strategy for a complex internal API
Versioning strategy for a complex internal APIVersioning strategy for a complex internal API
Versioning strategy for a complex internal API
 
Как мы готовим MySQL
Как мы готовим MySQLКак мы готовим MySQL
Как мы готовим MySQL
 
Методология: БЭМ, Модули, Отношения
Методология: БЭМ, Модули, ОтношенияМетодология: БЭМ, Модули, Отношения
Методология: БЭМ, Модули, Отношения
 

"Новые возможности MySQL 5.7"

  • 2. Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release and timing of any features or functionality described for Oracle's products remains at the sole discretion of Oracle.
  • 3. MySQL 5.7 • Наиболее свежая среди стабильных веток • В разработке с 2012 года • Объявлена готовой к использованию (GA) - октябрь 2015 • Последняя версия - 5.7.13 (июнь 2016) • В версии 5.7.12 (апрель 2016) представлен первый rapid plugin – X plugin
  • 4. Направления улучшений в MySQL 5.7 • Производительность и масштабируемость • Встроенная поддержка JSON • Генерируемые столбцы • Оптимизация и выполнение запросов • InnoDB • Репликация • Безопасность • PERFORMANCE_SCHEMA и SYS схема • GIS • X plugin, X protocol и X DevApi
  • 5. Встроенная поддержка JSON • Новый тип столбцов - JSON – Оптимизированный бинарный формат (быстрый доступ по ключам и к элементам массивов) – Оптимизирован для чтения – Utf8mb4 – Валидация при вставке – Поддержка обычных JSON элементов (числа, строки, объекты, массивы,...) и дополнительных типов (datetime,...)
  • 6. Встроенная поддержка JSON • Встроенные функции для манипуляций с JSON – JSON_EXTRACT()/оператор ->, JSON_SEARCH(), JSON_CONTAINS(),… – JSON_SET(), JSON_INSERT(), JSON_REMOVE(),... – JSON_VALID(), JSON_LENGTH(), JSON_DEPTH(),... – JSON_ARRAY(), JSON_OBJECT() – JSON_QUOTE(), JSON_UNQUOTE() • Компаратор для сравнения в SQL запросах
  • 7. Генерируемые столбцы CREATE TABLE t1 (   id INT PRIMARY KEY AUTO_INCREMENT,   my_integer INT,   my_integer_plus_one INT AS (my_integer + 1) ) • Могут быть VIRTUAL (по умолчанию) и STORED • Можно создавать индексы для обоих типов • Оптимизатор анализирует выражения и старается использовать наилучший «функциональный» индекс
  • 8. Генерируемые столбцы CREATE TABLE features ( id INT PRIMARY KEY AUTO_INCREMENT, feature JSON NOT NULL) ALTER TABLE features ADD feature_type VARCHAR(30) AS (feature­>”$.type”); - мгновенно, обновляются только метаданные ALTER TABLE features ADD INDEX (feature_type); - быстрая операция, создает только индекс не затрагивая данные ALTER TABLE features ADD feature_type VARCHAR(30) AS (feature­>”$.type”) STORED; - медленная операция, перестраивает таблицу
  • 9. Генерируемые столбцы: STORED vs VIRTUAL • STORED – Может быть PRIMARY KEY – BTREE, FULLTEXT, GIS – Добавление колонки требует перестроения таблицы и блокирует обновления – Добавление индекса in-place/не блокирует обновления • VIRTUAL – Не можеть быть PRIMARY KEY – Только BTREE – Добавление колонки мгновенно – Добавление индекса in-place/не блокирует обновления
  • 10. Улучшения в оптимизаторе и выполнении запросов • Оптимизации: – Более умный учет условий при выборе порядка таблиц в join – Подзапросы из FROM обрабатываются как view – UNION ALL не требует временных таблиц – Полностью cost-based выбор индекса для ORDER BY … LIMIT N – Более оптимальное использование sort-buffer для несортируемых полей
  • 11. Улучшения в оптимизаторе и выполнении запросов • EXPLAIN FOR CONNECTION • Улучшения в EXPLAIN JSON (общая стоимость, по таблицам, кол-во обработанных данных) • Улучшен режим ONLY_FULL_GROUP_BY и включен по умолчанию • IN поддерживает кортежи [выражения вида («a»,  «b»)] • Новый механизм подсказок оптимизатору /*+ … */: – MAX_EXECUTION_TIME, BKA, MRR, ICP, NO_RANGE_OPTIMIZATION,SEMIJOIN, SUBQUERY
  • 12. Query Rewrite Plugin • Работает после обработки парсером перед оптимизацией и выполнением • Позволяет изменить проблемный запрос без изменения приложения: – Добавить подсказок оптимизатору – Поменять порядок в join – ... • Решает проблему «плохих» запросов от ORM, сторонних приложений — больше не нужно использовать proxy в этих случаях
  • 13. Улучшения в InnoDB • Производительность/масштабируемость • Поддержка native partitioning – Быстрее, меньше ресурсов – Поддержка trasportable tablespaces • General tablespaces • Улучшения Fulltext – Поддержка parser plugin – CJK и MeCab парсеры • Поддержка GIS индексов
  • 14. Улучшения в InnoDB • ALTER TABLE … RENAME INDEX • Быстрый ALTER TABLE для VARCHAR • Оптимизация создания индексов (create index bulk load) • Изменение размера buffer pool без рестарта • Сохранение горячих страниц из buffer pool для прогрева (--innodb-buffer- pool-dump-pct=) • Поддержка 32k и 64k страниц • Управление MERGE_THRESHOLD • Оптимизация работы с временными табличками (пользовательскими и intrisic) • Transparent Page Compression (punch-hole)
  • 15. Репликация • GTID – Включение GTID без downtime и перезапусков – Slave без binlog • Поддержка репликации из многих источников • Изменение настроек фильтрации без перезапуска • Улучшения в полу-синхронной репликации – Ожидание подтверждения от нескольких slave – Фиксация транзакции только после подтверждения (корректный failover, решение проблемы с видимостью изменений) – Отдельные потоки для отсылки и получения подтверждений
  • 16. Репликация Многопоточный slave для транзакций в одной БД (--slave- parallel-type=LOGICAL_CLOCK) 0% 50% 100% 150% 200% 250% 1 8 24 48 SlaveThreads Slavethroughputvs.96ThreadMaster
  • 17. Безопасность • Безопасность по умолчанию – автогенерация пароля root@localhost при инсталляции – нет анонимов • Простое и безопасное создание БД через mysqld —initialize • SSL – Включен по умолчанию – --ssl на клиенте его требует – Автоматическое обнаружение и генерация ключей – --require-secure-trasport на сервере
  • 18. Безопасность • Поддержка политик смены паролей • Временная блокировка и разблокировка пользователей • Режимы AES шифрования • Расширена поддержка PROXY пользователей – теперь и при аутентификации через встроенные механизмы сервера – Можно использовать для эмуляции ролей • Максимальная длина имени пользователя теперь 32 • CREATE/DROP USER IF EXIST
  • 19. PERFORMANCE_SCHEMA и SYS • Добавлена инструментация для: – Блокировок метаданных (MDL) – Транзакций – Хранимых процедур и prepared statements – Использования памяти • Аггрегированная статистика по: – типам памяти/пользователям/хостам/соединениям • Включает данные: – объем, количество выделений, high/low watermarks
  • 20. PERFORMANCE_SCHEMA и SYS • Добавлены P_S таблицы для: – Состояния slave (аналог SHOW SLAVE STATUS) – Пользовательских переменные – Статусных и системных переменных • Оптимизировано использование памяти • Многочисленные настройки (фильтрация по пользователям, включение/выключение истории для соединений) • SYS schema (ps_helper) теперь доступен по умолчанию
  • 21. GIS • Выкинули старый код и перешли на Boost.Geometry ! – Для вычислений и операций – Меньше ошибок, больше функциональности • Импорт/экспорт из/в – GeoHash – GeoJSON • Новые вспомогательные функции ST_Distance_Sphere(), ST_MakeEnvelope(),... • Реализовали поддержку R-tree в InnoDB – Транзакции/ACID/MVCC при работе с GIS
  • 22. Rapid plugin-ы • Есть два конфликтующих требования: – Не смейте ломать сервер! – Дайте мне новые возможности скорее! • Rapid Plugin-ы попытка решить проблему • Добавляем новые возможности через plugin оставляя сервер стабильным – Цель иметь pluginы с тем же качеством что и сервер – Plugin-ы поставляются вместе с сервером, вы решаете - включать их или нет • X plugin первый Rapid Plugin
  • 23. X plugin • Доступен с версии 5.7.12 (апрель 2016) • Pre-production статус • Реализует X protocol (расширяемость, асинхронные API, pipelining) • Реализует MySQL Document Store — плюсы: – NoSQL: • Schemaless — хранит JSON документы • Простой в использовании CRUD API – MySQL: • ACID • Репликация • Мониторинг через P_S
  • 24. MySQL Document Store • Использует новый JSON тип и индексы на генерируемые столбцы • Оперирует коллекциями JSON объектов • Новый MySQL Shell — JavaScript, Python, SQL • Коннекторы с новым CRUD API: – Java, NodeJS, Net, Python – Поддерживают работу с коллекциями и таблицами – Цепочки методов (method chaining) – Асинхронное выполнение – Поддерживает parameter binding
  • 25. Архитектура X MySQLMySQL Plugins X Plugin Group Replication Plugin Core X ProtocolClassic Protocol X Protocol 33060 Classic Protocol 3306 SQL API X Dev API CRUD Based X and Classic Protocols MySQL Shell Javascript/Pyt hon
  • 26. Спасибо! Подробнее о MySQL 5.7: http://mysqlserverteam.com/whats-new-in-mysql-5-7-generally- available/ http://dev.mysql.com/doc/refman/5.7/en/mysql-nutshell.html Подробнее об X plugin: http://mysqlserverteam.com/category/docstore/ http://dev.mysql.com/doc/refman/5.7/en/document-store.html Загрузить MySQL 5.7 и X plugin: http://dev.mysql.com/downloads/mysql/