SlideShare a Scribd company logo
1 of 36
Download to read offline
Производительность MySQL:
чтонового?
Алексей Копытов
Производительность MySQL: что нового?
Алексей Копытов
О чём доклад?
обзор изменений производительности за ~2 года
альтернативы InnoDB (MyRocks, TokuDB)
текущие проблемы
MySQL 5.7!
GA версия выпущена 19 октября 2015г.
качественный релиз
огромное количество новый функций и улучшений производительности
обзорный доклад по всем новым возможностям от Дмитрия Ленёва сегодня
Скорость соединения
создание нового соединения стало быстрее
особенно когда много клиентов
sysbench connect:
Производительность на read-only нагрузках
sysbench OLTP POINT_SELECT , 72 ядра (4x18-ядерных Intel Xeon E7-58800 v3):
работа по оптимизации началась ещё в 5.6
дальнейшие улучшения масштабируемости в 5.7:
1.6 миллиона key/value запросов в секунду
1.8 миллиона, если использовать prepared statements
нет записи в базу (не назначается и не записывается TRX_ID )
оптимизации в MDL коде для DML запросов засчёт более дорогих DDL блокировок
устранение THR_LOCK блокировок для InnoDB таблиц
Производительность на read-only нагрузках
Read-only транзакции больше не нужно явно помечать:
в MySQL 5.6 требуется явное указание не-AUTOCOMMIT транзакций
START TRANSACTION READ ONLY
SELECT ...;
SELECT ...;
COMMIT;
SQL
в MySQL 5.7 транзакции считаются read-only по умолчанию.
START TRANSACTION;
SELECT ...;
SELECT ...;
COMMIT;
SQL
Производительность на read-only нагрузках
sysbench OLTP RO, 72 ядра (4x18-ядерных Intel Xeon E7-58800 v3):
1M запросов (~70K OLTP_RO транзакций) в секунду
Производительность на read-only нагрузках
Обычный Adaptive Hash Index:
Cекционированный Adaptive Hash Index
использует хэш для поиска по "популярным" значениям B-Tree ключей
хэш при частых обновлениях становится узким местом
обновления возможны даже при read-only нагрузке!
секционируем по index_id
реализовано в XtraDB (<= 2009г.)
аналогичная опция в MySQL 5.7 ( innodb_adaptive_hash_index_parts [=8])
Производительность на read-only нагрузках
Оставшиеся проблемы с масштабируемостью:
Adaptive Hash Index
блокировки страниц в buffer pool (block lock)
bug #74954 "Inefficient InnoDB row stats implementation" и bug #79455 "Restore
get_sched_indexer_t in 5.7"
на IO-bound read-only нагрузках: fil_system->mutex
секционирование по index_id – не самый лучший вариант
обещают полностью переписать в MySQL 8
мьютексы были переписаны в 5.7
rwlock-и плохо масштабируются, обещают переписать в MySQL 8
cчётчики считанных/изменённых записей плохо масштабируются на
многоядерных архитектурах
Производительность на read-write нагрузках
убрали index lock:
меньше блокировок на log_sys->mutex
сброс страниц на диск (flushing)
блокировка на весь индекс, когда нужно изменить структуру дерева
в 5.7 блокировка только при конфликтующих изменениях
в основном для innodb_flush_log_at_trx_commit=2
несколько параллельных потоков ( innodb_page_cleaners=4 )
оптимизации в адаптивном алгоритме
Производительность на read-write нагрузках
Временные InnoDB таблицы в 5.7:
используются вместо MyISAM по умолчанию оптимизатором для внутренних
таблиц
не генерируют записей в транзакционный журнал
отдельное табличное пространство ibtmp1 – пересоздаётся при старте
"ослабленный" MVCC
не используют doublewrite buffer
быстрее MyISAM в большинстве случаев
Производительность на read-write нагрузках
Проблемы:
проблемы с масштабируемостью из-за неуспеващего флашинга
doublewrite в качестве «узкого места»
innodb_log_write_ahead_size увеличивает write amplification при
innodb_flush_log_at_trx_commit=1
Производительность на read-write нагрузках
Percona Server:
отдельные потоки для LRU flushing
параллельный doublewrite buffer:
Производительность на read-write нагрузках
много улучшений
но есть куда стремиться
работа кипит :)
Новые системные переменные
innodb_buffer_pool_size теперь динамическая переменная
innodb_buffer_pool_dump_pct=25
innodb_fill_factor=100 (для sorted index build)
innodb_log_write_ahead_size=8192
innodb_numa_interleave=off
innodb_page_cleaners=1
Изменения в значениях по умолчанию
Системные переменные с новыми значениями по умолчанию в 5.7:
binlog_format=row
sync_binlog=1
ssl=1
innodb_buffer_pool_dump_at_shutdown=on и
innodb_buffer_pool_load_at_startup=on
innodb_checksum_algorithm=crc32
innodb_log_buffer_size=16M
innodb_purge_threads=4
table_open_cache_instances=16
MyRocks и TokuDB
MyRocks
движок хранения от Facebook на основе RocksDB (форк LevelDB от Google)
LSM-деревья, оптимизирован на запись
9 миллиардов запросов/сек в Facebook
низкий write amplification (SSD!)
высокая компрессия (SSD!)
MyRocks
Источник: Mark Callaghan, MyRocks, MongoRocks & RocksDB
MyRocks
Источник: Mark Callaghan, MyRocks, MongoRocks & RocksDB
Ограничения MyRocks
нет поддержки многих возможностей InnoDB
только бинарные правила сортировки (collations)
нет в MariaDB/Percona
стабильность уровня "можно пробовать"
секционирование
online DDL
transportable tablespaces
внешние ключи
геометрические/полнотекстовые индексы
виртуальные колонки
TokuDB
разработка с 2007г.
"фрактальные" деревья
на самом деле B-Tree с расширениями
разрабатывается в Percona с 2015г.
TokuDB
Фрактальные деревья:
накапливание отложенных изменений в корневых узлах индексов ипроталкивание
к листьям по мере заполнения
TokuDB
Сильные стороны:
быстрее InnoDB при большом количестве индексов
несколько кластеризованных индексов
интенсивные нагрузки на запись, когда dataset > RAM
экономия места на диске за счёт продвинутой компрессии (SSD!)
read-free репликация
Ограничения TokuDB
Нет поддержки многих возможностей InnoDB:
проблема с чекпойнтами и стабильностью времени отклика (источник: percona.com/blog)
секционирование
online DDL
transportable tablespaces
внешние ключи
геометрические/полнотекстовые индексы
виртуальные колонки
уникальные индексы – медленно
SELECT -ы дорогие
низкие темпы разработки
Текущие проблемы и будущие версии
MySQL
Однопоточная производительность
каждый мажорный релиз MySQL на ~5% медленее предыдущего (но
лучшемасштабируется)
серия публикаций от Mark Callaghan и Петра Зайцева
Однопоточная производительность
Почему это важно:
производительность в 1 соединение == время отклика
параллельность репликации ограничена
административные задачи – как правило один поток
в большинстве случаев сервер работает с небольшим количеством соединений
Однопоточная производительность
Почему это сложно:
от версии к версии кода больше
больше ветвелений, кэш-промахов и т. д.
дробление блокировок ведёт к лучше масштабируемости, но болеемедленной
однопоточной работе
нет "низковисящих фруктов"
Однопоточная производительность
Почему это до сих пор проблема:
MariaDB работали в этом направлении, но о результатах ничего неизвестно
не приоритет для разработчиков
нужно помочь приоритизировать
не стесняйтесь сообщать на http://bugs.mysql.com/, если для вас это тоже проблема
Умная поддержка NUMA
Предыстория вопроса:
Twitter/Percona/MariaDB, 2012:
Jeremy Cole, 2010:
The MySQL “swap insanity” problem and the effects of the NUMA architecture
сбросить FS cache
включить чередование страниц
обеспечить инициализацию страниц памяти при старта, а не в процессе
работы
чередование страниц buffer pool + равномерное распределение между нодами
numa_interleave
innodb_buffer_pool_populate
flush_caches
Умная поддержка NUMA
Oracle MySQL, 2015:
innodb_numa_interleave – только частичное решение проблемы
опция flush_caches оставлена в Percona Server 5.7
Умная поддержка NUMA
проблема с NUMA не только в излишнем использовании swap.
NUMA cache line contention:
многие структуры данных не используют чередование:
bug #79358: No NUMA interleaving for some shared structures
"горячие" структуры данных в основном в одной NUMA ноде
блокировки вызывают значительный трафик между нодами
внутренний словарь данных в InnoDB
кэш табличных пространств
буфер транзакционного журнала
и т.д.
Умный параллельный purge
purge не справляется на нагрузках с очень интенсивной записью
несколько purge потоков соревнуются за один и тот же индекс
нужно более "интеллектуальное" распределение задач между потоками
https://bugs.mysql.com/81368
экспериментальный патч в Percona ~ 2013г.
скорее всего полный редизайн в MySQL 8
Спасибо! Вопросы?

More Related Content

What's hot

Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...Ontico
 
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)Ontico
 
обзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаобзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаКонстантин Никифоров
 
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...Ontico
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Ontico
 
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Ontico
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин ОсиповCodeFest
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей СитникCodeFest
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Ontico
 
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)Ontico
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Ontico
 
JPHP - О проекте на простом языке
JPHP - О проекте на простом языкеJPHP - О проекте на простом языке
JPHP - О проекте на простом языкеDmitry Zaytsev
 
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайnoBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайOntico
 
Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Ontico
 
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...Ontico
 
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Ontico
 
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Ontico
 
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...Ontico
 

What's hot (20)

Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
 
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
 
обзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаобзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторинга
 
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин Осипов
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей Ситник
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
 
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
 
JPHP - О проекте на простом языке
JPHP - О проекте на простом языкеJPHP - О проекте на простом языке
JPHP - О проекте на простом языке
 
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайnoBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
 
Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...
 
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
 
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
 
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
 
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
 

Viewers also liked

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

Viewers also liked (20)

"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио..."PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
 
"Великолепный API без Rest", Констатин Якушев (Badoo)
 "Великолепный API без Rest", Констатин Якушев (Badoo) "Великолепный API без Rest", Констатин Якушев (Badoo)
"Великолепный API без Rest", Констатин Якушев (Badoo)
 
"Геолокация в 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)
 
"Развитие ветки 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
 
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации"
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации"Эволюция клиентской разработки: от веба ко "всеобщей мобилизации"
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации"
 
Ровная балансировка нагрузки на фронтенд-кластере
Ровная балансировка нагрузки на фронтенд-кластереРовная балансировка нагрузки на фронтенд-кластере
Ровная балансировка нагрузки на фронтенд-кластере
 

Similar to "Производительность MySQL: что нового?"

Innodb Scalability And New Features Hl2008 Rus
Innodb Scalability And New Features Hl2008 RusInnodb Scalability And New Features Hl2008 Rus
Innodb Scalability And New Features Hl2008 RusOntico
 
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...Tanya Denisyuk
 
Wonderful World Of Mysql Storage Engines Hl2008 Rus
Wonderful World Of Mysql Storage Engines Hl2008 RusWonderful World Of Mysql Storage Engines Hl2008 Rus
Wonderful World Of Mysql Storage Engines Hl2008 RusOntico
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLAlex Chistyakov
 
Android Telegram S Optimizations
Android Telegram S OptimizationsAndroid Telegram S Optimizations
Android Telegram S OptimizationsStepan Korshakov
 
hl++ Rubtsov
hl++ Rubtsovhl++ Rubtsov
hl++ RubtsovOntico
 
Drupal 6 performance
Drupal 6 performanceDrupal 6 performance
Drupal 6 performanceAnton Ivanov
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusVladd Ev
 
распределенная архитектура Lamp приложений петр зайцев
распределенная архитектура Lamp приложений   петр зайцевраспределенная архитектура Lamp приложений   петр зайцев
распределенная архитектура Lamp приложений петр зайцевMedia Gorod
 
Презентация HPE
Презентация HPE Презентация HPE
Презентация HPE BairRadnaev
 
Мониторинг, тюнинг и оптимизация баз данных, используя продукты Dell Software
Мониторинг, тюнинг и оптимизация баз данных, используя продукты Dell SoftwareМониторинг, тюнинг и оптимизация баз данных, используя продукты Dell Software
Мониторинг, тюнинг и оптимизация баз данных, используя продукты Dell SoftwareBAKOTECH
 
Мониторинг, тюнинг и оптимизация баз данных, используя продукты Dell Software
Мониторинг, тюнинг и оптимизация баз данных, используя продукты Dell SoftwareМониторинг, тюнинг и оптимизация баз данных, используя продукты Dell Software
Мониторинг, тюнинг и оптимизация баз данных, используя продукты Dell SoftwareMarina Gryshko
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012Alex Chistyakov
 
Алексей Рагозин "Java и linux борьба за микросекунды"
Алексей Рагозин "Java и linux борьба за микросекунды"Алексей Рагозин "Java и linux борьба за микросекунды"
Алексей Рагозин "Java и linux борьба за микросекунды"IT Event
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Ontico
 
Быстрое масштабирование систем
Быстрое масштабирование системБыстрое масштабирование систем
Быстрое масштабирование системMedia Gorod
 
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)Ontico
 
IOP202 Redis in Azure
IOP202 Redis in AzureIOP202 Redis in Azure
IOP202 Redis in Azuremourhoon
 
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
 

Similar to "Производительность MySQL: что нового?" (20)

Innodb Scalability And New Features Hl2008 Rus
Innodb Scalability And New Features Hl2008 RusInnodb Scalability And New Features Hl2008 Rus
Innodb Scalability And New Features Hl2008 Rus
 
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...
 
Wonderful World Of Mysql Storage Engines Hl2008 Rus
Wonderful World Of Mysql Storage Engines Hl2008 RusWonderful World Of Mysql Storage Engines Hl2008 Rus
Wonderful World Of Mysql Storage Engines Hl2008 Rus
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
 
Android Telegram S Optimizations
Android Telegram S OptimizationsAndroid Telegram S Optimizations
Android Telegram S Optimizations
 
hl++ Rubtsov
hl++ Rubtsovhl++ Rubtsov
hl++ Rubtsov
 
Drupal 6 performance
Drupal 6 performanceDrupal 6 performance
Drupal 6 performance
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rus
 
2056
20562056
2056
 
распределенная архитектура Lamp приложений петр зайцев
распределенная архитектура Lamp приложений   петр зайцевраспределенная архитектура Lamp приложений   петр зайцев
распределенная архитектура Lamp приложений петр зайцев
 
Презентация HPE
Презентация HPE Презентация HPE
Презентация HPE
 
Мониторинг, тюнинг и оптимизация баз данных, используя продукты Dell Software
Мониторинг, тюнинг и оптимизация баз данных, используя продукты Dell SoftwareМониторинг, тюнинг и оптимизация баз данных, используя продукты Dell Software
Мониторинг, тюнинг и оптимизация баз данных, используя продукты Dell Software
 
Мониторинг, тюнинг и оптимизация баз данных, используя продукты Dell Software
Мониторинг, тюнинг и оптимизация баз данных, используя продукты Dell SoftwareМониторинг, тюнинг и оптимизация баз данных, используя продукты Dell Software
Мониторинг, тюнинг и оптимизация баз данных, используя продукты Dell Software
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012
 
Алексей Рагозин "Java и linux борьба за микросекунды"
Алексей Рагозин "Java и linux борьба за микросекунды"Алексей Рагозин "Java и linux борьба за микросекунды"
Алексей Рагозин "Java и linux борьба за микросекунды"
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
 
Быстрое масштабирование систем
Быстрое масштабирование системБыстрое масштабирование систем
Быстрое масштабирование систем
 
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
 
IOP202 Redis in Azure
IOP202 Redis in AzureIOP202 Redis in Azure
IOP202 Redis in Azure
 
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
 

More from Badoo Development

Viktar Karanevich – iOS Parallel Automation
Viktar Karanevich – iOS Parallel AutomationViktar Karanevich – iOS Parallel Automation
Viktar Karanevich – iOS Parallel AutomationBadoo Development
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальBadoo Development
 
Григорий Джанелидзе, OK.RU
Григорий Джанелидзе, OK.RUГригорий Джанелидзе, OK.RU
Григорий Джанелидзе, OK.RUBadoo Development
 
Андрей Сидоров, Яндекс.Браузер
Андрей Сидоров, Яндекс.БраузерАндрей Сидоров, Яндекс.Браузер
Андрей Сидоров, Яндекс.БраузерBadoo Development
 
Филипп Уваров, Avito
Филипп Уваров, AvitoФилипп Уваров, Avito
Филипп Уваров, AvitoBadoo Development
 
Cocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magicCocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magicBadoo Development
 
Cocoaheads Meetup / Kateryna Trofimenko / Feature development
Cocoaheads Meetup / Kateryna Trofimenko / Feature developmentCocoaheads Meetup / Kateryna Trofimenko / Feature development
Cocoaheads Meetup / Kateryna Trofimenko / Feature developmentBadoo Development
 
Alex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High AvailabilityAlex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High AvailabilityBadoo Development
 
Андрей Денисов – В ожидании мониторинга баз данных
Андрей Денисов – В ожидании мониторинга баз данныхАндрей Денисов – В ожидании мониторинга баз данных
Андрей Денисов – В ожидании мониторинга баз данныхBadoo Development
 
Александр Зобнин, Grafana Labs
Александр Зобнин, Grafana LabsАлександр Зобнин, Grafana Labs
Александр Зобнин, Grafana LabsBadoo Development
 
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественноИлья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественноBadoo Development
 
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»  Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов» Badoo Development
 
Как мы готовим MySQL
 Как мы готовим MySQL  Как мы готовим MySQL
Как мы готовим MySQL Badoo Development
 
Архитектура хранения и отдачи фотографий в Badoo
Архитектура хранения и отдачи фотографий в Badoo Архитектура хранения и отдачи фотографий в Badoo
Архитектура хранения и отдачи фотографий в Badoo Badoo Development
 
5 способов деплоя PHP-кода в условиях хайлоада
5 способов деплоя PHP-кода в условиях хайлоада5 способов деплоя PHP-кода в условиях хайлоада
5 способов деплоя PHP-кода в условиях хайлоадаBadoo Development
 
Git хуки на страже качества кода
Git хуки на страже качества кодаGit хуки на страже качества кода
Git хуки на страже качества кодаBadoo Development
 
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 APIBadoo Development
 
Как мы готовим MySQL
Как мы готовим MySQLКак мы готовим MySQL
Как мы готовим MySQLBadoo Development
 
Методология: БЭМ, Модули, Отношения
Методология: БЭМ, Модули, ОтношенияМетодология: БЭМ, Модули, Отношения
Методология: БЭМ, Модули, Отношения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: что нового?"

  • 2. Производительность MySQL: что нового? Алексей Копытов
  • 3. О чём доклад? обзор изменений производительности за ~2 года альтернативы InnoDB (MyRocks, TokuDB) текущие проблемы
  • 4. MySQL 5.7! GA версия выпущена 19 октября 2015г. качественный релиз огромное количество новый функций и улучшений производительности обзорный доклад по всем новым возможностям от Дмитрия Ленёва сегодня
  • 5. Скорость соединения создание нового соединения стало быстрее особенно когда много клиентов sysbench connect:
  • 6. Производительность на read-only нагрузках sysbench OLTP POINT_SELECT , 72 ядра (4x18-ядерных Intel Xeon E7-58800 v3): работа по оптимизации началась ещё в 5.6 дальнейшие улучшения масштабируемости в 5.7: 1.6 миллиона key/value запросов в секунду 1.8 миллиона, если использовать prepared statements нет записи в базу (не назначается и не записывается TRX_ID ) оптимизации в MDL коде для DML запросов засчёт более дорогих DDL блокировок устранение THR_LOCK блокировок для InnoDB таблиц
  • 7. Производительность на read-only нагрузках Read-only транзакции больше не нужно явно помечать: в MySQL 5.6 требуется явное указание не-AUTOCOMMIT транзакций START TRANSACTION READ ONLY SELECT ...; SELECT ...; COMMIT; SQL в MySQL 5.7 транзакции считаются read-only по умолчанию. START TRANSACTION; SELECT ...; SELECT ...; COMMIT; SQL
  • 8. Производительность на read-only нагрузках sysbench OLTP RO, 72 ядра (4x18-ядерных Intel Xeon E7-58800 v3): 1M запросов (~70K OLTP_RO транзакций) в секунду
  • 9. Производительность на read-only нагрузках Обычный Adaptive Hash Index: Cекционированный Adaptive Hash Index использует хэш для поиска по "популярным" значениям B-Tree ключей хэш при частых обновлениях становится узким местом обновления возможны даже при read-only нагрузке! секционируем по index_id реализовано в XtraDB (<= 2009г.) аналогичная опция в MySQL 5.7 ( innodb_adaptive_hash_index_parts [=8])
  • 10. Производительность на read-only нагрузках Оставшиеся проблемы с масштабируемостью: Adaptive Hash Index блокировки страниц в buffer pool (block lock) bug #74954 "Inefficient InnoDB row stats implementation" и bug #79455 "Restore get_sched_indexer_t in 5.7" на IO-bound read-only нагрузках: fil_system->mutex секционирование по index_id – не самый лучший вариант обещают полностью переписать в MySQL 8 мьютексы были переписаны в 5.7 rwlock-и плохо масштабируются, обещают переписать в MySQL 8 cчётчики считанных/изменённых записей плохо масштабируются на многоядерных архитектурах
  • 11. Производительность на read-write нагрузках убрали index lock: меньше блокировок на log_sys->mutex сброс страниц на диск (flushing) блокировка на весь индекс, когда нужно изменить структуру дерева в 5.7 блокировка только при конфликтующих изменениях в основном для innodb_flush_log_at_trx_commit=2 несколько параллельных потоков ( innodb_page_cleaners=4 ) оптимизации в адаптивном алгоритме
  • 12. Производительность на read-write нагрузках Временные InnoDB таблицы в 5.7: используются вместо MyISAM по умолчанию оптимизатором для внутренних таблиц не генерируют записей в транзакционный журнал отдельное табличное пространство ibtmp1 – пересоздаётся при старте "ослабленный" MVCC не используют doublewrite buffer быстрее MyISAM в большинстве случаев
  • 13. Производительность на read-write нагрузках Проблемы: проблемы с масштабируемостью из-за неуспеващего флашинга doublewrite в качестве «узкого места» innodb_log_write_ahead_size увеличивает write amplification при innodb_flush_log_at_trx_commit=1
  • 14. Производительность на read-write нагрузках Percona Server: отдельные потоки для LRU flushing параллельный doublewrite buffer:
  • 15. Производительность на read-write нагрузках много улучшений но есть куда стремиться работа кипит :)
  • 16. Новые системные переменные innodb_buffer_pool_size теперь динамическая переменная innodb_buffer_pool_dump_pct=25 innodb_fill_factor=100 (для sorted index build) innodb_log_write_ahead_size=8192 innodb_numa_interleave=off innodb_page_cleaners=1
  • 17. Изменения в значениях по умолчанию Системные переменные с новыми значениями по умолчанию в 5.7: binlog_format=row sync_binlog=1 ssl=1 innodb_buffer_pool_dump_at_shutdown=on и innodb_buffer_pool_load_at_startup=on innodb_checksum_algorithm=crc32 innodb_log_buffer_size=16M innodb_purge_threads=4 table_open_cache_instances=16
  • 19. MyRocks движок хранения от Facebook на основе RocksDB (форк LevelDB от Google) LSM-деревья, оптимизирован на запись 9 миллиардов запросов/сек в Facebook низкий write amplification (SSD!) высокая компрессия (SSD!)
  • 20. MyRocks Источник: Mark Callaghan, MyRocks, MongoRocks & RocksDB
  • 21. MyRocks Источник: Mark Callaghan, MyRocks, MongoRocks & RocksDB
  • 22. Ограничения MyRocks нет поддержки многих возможностей InnoDB только бинарные правила сортировки (collations) нет в MariaDB/Percona стабильность уровня "можно пробовать" секционирование online DDL transportable tablespaces внешние ключи геометрические/полнотекстовые индексы виртуальные колонки
  • 23. TokuDB разработка с 2007г. "фрактальные" деревья на самом деле B-Tree с расширениями разрабатывается в Percona с 2015г.
  • 24. TokuDB Фрактальные деревья: накапливание отложенных изменений в корневых узлах индексов ипроталкивание к листьям по мере заполнения
  • 25. TokuDB Сильные стороны: быстрее InnoDB при большом количестве индексов несколько кластеризованных индексов интенсивные нагрузки на запись, когда dataset > RAM экономия места на диске за счёт продвинутой компрессии (SSD!) read-free репликация
  • 26. Ограничения TokuDB Нет поддержки многих возможностей InnoDB: проблема с чекпойнтами и стабильностью времени отклика (источник: percona.com/blog) секционирование online DDL transportable tablespaces внешние ключи геометрические/полнотекстовые индексы виртуальные колонки уникальные индексы – медленно SELECT -ы дорогие низкие темпы разработки
  • 27. Текущие проблемы и будущие версии MySQL
  • 28. Однопоточная производительность каждый мажорный релиз MySQL на ~5% медленее предыдущего (но лучшемасштабируется) серия публикаций от Mark Callaghan и Петра Зайцева
  • 29. Однопоточная производительность Почему это важно: производительность в 1 соединение == время отклика параллельность репликации ограничена административные задачи – как правило один поток в большинстве случаев сервер работает с небольшим количеством соединений
  • 30. Однопоточная производительность Почему это сложно: от версии к версии кода больше больше ветвелений, кэш-промахов и т. д. дробление блокировок ведёт к лучше масштабируемости, но болеемедленной однопоточной работе нет "низковисящих фруктов"
  • 31. Однопоточная производительность Почему это до сих пор проблема: MariaDB работали в этом направлении, но о результатах ничего неизвестно не приоритет для разработчиков нужно помочь приоритизировать не стесняйтесь сообщать на http://bugs.mysql.com/, если для вас это тоже проблема
  • 32. Умная поддержка NUMA Предыстория вопроса: Twitter/Percona/MariaDB, 2012: Jeremy Cole, 2010: The MySQL “swap insanity” problem and the effects of the NUMA architecture сбросить FS cache включить чередование страниц обеспечить инициализацию страниц памяти при старта, а не в процессе работы чередование страниц buffer pool + равномерное распределение между нодами numa_interleave innodb_buffer_pool_populate flush_caches
  • 33. Умная поддержка NUMA Oracle MySQL, 2015: innodb_numa_interleave – только частичное решение проблемы опция flush_caches оставлена в Percona Server 5.7
  • 34. Умная поддержка NUMA проблема с NUMA не только в излишнем использовании swap. NUMA cache line contention: многие структуры данных не используют чередование: bug #79358: No NUMA interleaving for some shared structures "горячие" структуры данных в основном в одной NUMA ноде блокировки вызывают значительный трафик между нодами внутренний словарь данных в InnoDB кэш табличных пространств буфер транзакционного журнала и т.д.
  • 35. Умный параллельный purge purge не справляется на нагрузках с очень интенсивной записью несколько purge потоков соревнуются за один и тот же индекс нужно более "интеллектуальное" распределение задач между потоками https://bugs.mysql.com/81368 экспериментальный патч в Percona ~ 2013г. скорее всего полный редизайн в MySQL 8