SlideShare a Scribd company logo
1 of 78
Download to read offline
© 2017 Percona
1
Света Смирнова, ведущий инженер технической поддержки (Percona)
Анастасия Распопина, специалист по маркетингу (Percona)
MySQL:
чек-лист для новичка в highload
Кейсы, списки настроек, must have, полезные ссылки
Профессиональный фестиваль «Российские интернет-технологии» (РИТ++),
конференция HighLoad Junior
5 июня 2017 г.
© 2017 Percona
2
Кто мы и откуда?
Кратко о нас и нашей компании
▪Света Смирнова
• Ведущий инженер службы технической поддержки
• 10+ лет работы в поддержке MySQL, автор книги “MySQL Troubleshooting” и
UDF-функций для MySQL (дизайн-прототип встроенных JSON-функций).
© 2017 Percona
3
Кто мы и откуда?
Кратко о нас и нашей компании
▪Света Смирнова
▪Анастасия Распопина
• Специалист по маркетингу
• Работала в GameDev, организовывала HL++, РИТ++, сейчас в Percona Events
Team.
© 2017 Percona
4
Кто мы и откуда?
Кратко о нас и нашей компании
▪Света Смирнова, ведущий инженер службы технической
поддержки
▪Анастасия Распопина, специалист по маркетингу
▪Компания Percona
• Поставщик 100% Open Source ПО для MySQL и MongoDB, а также услуг
поддержки, консалтинга и удалённого администрирования для этих
СУБД
© 2017 Percona
5
Что такое highload сейчас?
Даём определение высокой нагрузке на 2017 г.
▪Не цифры: предельные нагрузки
• Сколько записей в секунду выдержит диск?
• Запросов на чтение?
• Пользовательских соединений?
© 2017 Percona
6
Что такое highload сейчас?
Даём определение высокой нагрузке на 2017 г.
▪Не цифры: предельные нагрузки
▪Железо имеет значение
• t2.micro или “Машины Баз Данных” (WS, 6 июня, 16.00)
• Много читаем: память
• Много пишем: быстрый диск
• Много активных соединений: CPU
• Неоптимизированные запросы: CPU
© 2017 Percona
7
Что такое highload сейчас?
Даём определение высокой нагрузке на 2017 г.
▪Не цифры: предельные нагрузки
▪Железо имеет значение
▪Цифры
• Стандартные бенчмарки всегда синтетические
• Реальность обычно разнообразнее
© 2017 Percona
8
Что такое highload сейчас?
Цифры: рост производительности MySQL
https://www.slideshare.net/geirhoydalsvik/whats-new-in-mysql-57
© 2017 Percona
9
Что такое highload сейчас?
Цифры: рост интернета
© 2017 Percona
10
Что такое highload сейчас?
Даём определение высокой нагрузке на 2017 г.
▪Highload
• Та нагрузка, с которой СУБД не справляется
• Нельзя раз и навсегда оптимизироваться «под highload», это
непрерывный процесс
© 2017 Percona
11
Обзор форков MySQL
Oracle MySQL, Percona Server для MySQL, MariaDB,
форки внутри компаний
© 2017 Percona
12
Современные варианты MySQL
Какие форки MySQL выжили и активно развиваются?
▪MySQL от Oracle
• Оригинальный MySQL, над которым работают инженеры Oracle
• “Сотни человек” (https://www.percona.com/blog/2014/02/18/oracles-morgan-tocker-opens-up-about-mysql-development-mysql-5-7/)
© 2017 Percona
13
Современные варианты MySQL
Какие форки MySQL выжили и активно развиваются?
▪MySQL от Oracle
▪Percona Server для MySQL
• Полностью совместимая расширенная версия
• Около 30 человек (Engineering Team)
© 2017 Percona
14
Современные варианты MySQL
Какие форки MySQL выжили и активно развиваются?
▪MySQL от Oracle
▪Percona Server для MySQL
▪MariaDB
• Частично совместимая расширенная версия
• Свои: оптимизатор запросов, GTID, движки, ...
© 2017 Percona
15
Современные варианты MySQL
Какие форки выжили и активно развиваются?
▪MySQL от Oracle
▪Percona Server для MySQL
▪MariaDB
▪Форки компаний – открытые и закрытые
• Facebook: MyRocks, DocStore, статистика, производительность
• Alibaba: Sequence, Backup, SQL, статистика, производительность
• Amazon (Amazon Aurora): физическая репликация, производительность,
масштабирование, закрытая
© 2017 Percona
16
Где что загрузить: ссылки
▪MySQL от Oracle
• Документация: https://dev.mysql.com/doc/refman/5.7/en/
• Полный список фич для 5.7: http://www.thecompletelistoffeatures.com/
© 2017 Percona
17
Где что загрузить: ссылки
▪MySQL от Oracle
▪Percona Server для MySQL
• Документация: https://www.percona.com/doc/percona-server/LATEST/index.html
• Percona Database Performance Blog: http://percona.com/blog/
© 2017 Percona
18
Где что загрузить: ссылки
▪MySQL от Oracle
▪Percona Server для MySQL
▪MariaDB
• Документация: https://mariadb.com/kb/en/
• Foundation: http://mariadb.org/
© 2017 Percona
19
Где что загрузить: ссылки
▪MySQL от Oracle
▪Percona Server для MySQL
▪MariaDB
▪Открытые разработки Facebook
• Документация: https://github.com/facebook/mysql-5.6/wiki
• 8.0: https://github.com/facebook/mysql-8.0
© 2017 Percona
20
Где что загрузить: ссылки
▪MySQL от Oracle
▪Percona Server для MySQL
▪MariaDB
▪Открытые разработки Facebook
▪AliSQL
• https://github.com/alibaba/AliSQL
© 2017 Percona
21
Что стоит хранить в памяти,
а что – на диске?
© 2017 Percona
22
MySQL: что мы храним в памяти
▪Три вида буферов в памяти
• Глобальные
▪ InnoDB Buffer Pool: активный набор данных
▪ Query Cache (http://mysqlserverteam.com/mysql-8-0-retiring-support-for-the-query-cache/)
• Сессионные
▪ Sort buffer: маленькие!
▪ Всего не более, чем (Свободная память - глобальные) / max_connections
• Под операцию
▪ Временные таблицы: может быть создано много!
© 2017 Percona
23
MySQL: что мы храним на диске
▪MySQL лучше всего работает с данными в памяти
▪Для лучшей скорости
• Быстрые диски: SSD, Fusion IO
• innodb_io_capacity - рекомендуемое, реальное количество IOPS
• innodb_flush_method - O_DIRECT, тестируйте!
▪Скорость или надёжность?
• Операция fsync - дорогая
• Реже fsync - лучше производительность и ниже надёжность
© 2017 Percona
24
Почитать про память и диск
▪Оптимизация IO для InnoDB
• https://dev.mysql.com/doc/refman/5.7/en/innodb-disk-management.html
• https://www.percona.com/blog/2008/11/21/how-to-calculate-a-good-innodb-log-file-size/
▪Оптимальный размер InnoDB Buffer Pool
• https://www.percona.com/blog/2007/11/03/choosing-innodb_buffer_pool_size/
© 2017 Percona
25
Как правильно кэшировать?
© 2017 Percona
26
Кэширование в МySQL
▪Полезное кэширование: сервер
• binlog_[stmt_]cache_size
• table_definition_cache
• table_open_cache
• table_open_cache_instances - много не всегда хорошо
• thread_cache_size
© 2017 Percona
27
Кэширование в МySQL
▪Полезное кэширование: сервер
▪Полезное кэширование: InnoDB
• Buffer Pool: innodb_buffer_pool_size
• Log buffer: innodb_log_buffer_size
© 2017 Percona
28
Кэширование в МySQL
▪Полезное кэширование: сервер
▪Полезное кэширование: InnoDB
▪Чем плоха Query Cache
• Один mutex
• Знаменитые баги
▪ Bug #21074: Large query_cache freezes mysql server sporadically under heavy load
▪ Bug #47529: query cache performance is bad on multi-core servers
▪ Bug #37844: Fix SMP performance for the query cache
▪ Bug #60696: invalidating query cache entries (table) hangs replication
© 2017 Percona
29
Почитать про кэширование
https://dom.as/tech/query-cache-tuner/
© 2017 Percona
30
Кластеризация, шардинг, репликация –
когда и как?
© 2017 Percona
31
Репликация в МySQL
▪Встроенная
▪Простая в использовании
▪Требует настройки
▪Гибкая
© 2017 Percona
32
Рекомендуемая репликация
© 2017 Percona
33
Репликация: highload
▪Мастер
• Синхронизация
▪ sync_binlog
• 0 - самый быстрый
• 1 - самый надёжный
• >1 - компромисс между надёжностью и скоростью
▪Слейв
• Меньше потоков, чем на мастере
• Один relay log на channel
© 2017 Percona
34
Круговая
© 2017 Percona
35
Круговая репликация: highload
▪Те же проблемы, что и на “рекомендуемой”
▪Умножайте на 2 для каждого сервера
© 2017 Percona
36
Креативная
© 2017 Percona
37
Креативная: highload
© 2017 Percona
38
Кластеризация в МySQL
▪NDB Cluster
• Старейшее кластерное решение
• Рабочий набор данных в памяти
• Как минимум две копии данных
• Специфические требования к приложению
• Популярен среди европейских телекомов
© 2017 Percona
39
Кластеризация в МySQL
▪NDB Cluster
▪Percona XtraDB Cluster, Galera Cluster
• Синхронная репликация
• Собственный лог изменений
▪ innodb_flush_log_at_trx_commit=2 - безопасно и рекомендуется!
• Чтение: масштабируемое
• Запись: чем больше серверов в кластере, тем медленнее
© 2017 Percona
40
Percona XtraDB Cluster
© 2017 Percona
41
Кластеризация в МySQL
▪NDB Cluster
▪Percona XtraDB Cluster, Galera
▪InnoDB Cluster
• Архитектурно то же самое, что и Percona XtraDB Cluster/Galera
• Синхронная репликация
• Использует бинарный лог
• Чтение: масштабируемое
• Запись: чем больше серверов в кластере, тем медленнее
• Новый продукт
© 2017 Percona
42
Шардинг в МySQL
▪Встроенного не существует
© 2017 Percona
43
Шардинг в МySQL
▪Встроенного не существует
▪Shard Query
• Независимый продукт на PHP и Gearman
• https://github.com/greenlion/swanhart-tools/wiki/Shard-Query-Manual
© 2017 Percona
44
Шардинг в МySQL
▪Встроенного не существует
▪Shard Query
▪MySQL Fabric
• Продукт от Oracle
• Новый и, похоже, неподдерживаемый
• https://dev.mysql.com/doc/mysql-utilities/1.5/en/fabric.htm
© 2017 Percona
45
Шардинг в МySQL
▪Встроенного не существует
▪Shard Query
▪MySQL Fabric
▪ProxySQL
• Больше, чем шардинг
• Proxy, query rewrite, кэширование
• Стремительно набирает популярность
• https://www.percona.com/blog/2016/08/30/mysql-sharding-with-proxysql/
© 2017 Percona
46
Полезные ссылки
▪To Shard or Not to Shard (Peter Zaitsev, CEO, Percona) - in English
• https://www.youtube.com/watch?v=2MyyH-bH8Bw
▪Презентация о сценариях использования ProxySQL от его
разработчиков (на английском языке):
• http:/bit.ly/2qHmR4A
© 2017 Percona
47
Какие индексы нужны MySQL?
© 2017 Percona
48
Индексы MySQL и highload
На что влияют неуникальные ключи
▪SELECT
• Правильные улучшают скорость выполнения
• Если слишком много подходящих
▪ Оптимизатор может дольше “думать” над планом
© 2017 Percona
49
Индексы MySQL и highload
На что влияют неуникальные ключи
▪SELECT
▪INSERT
• Замедляют запись
• Требуется обновление не только данных, но и индекса
© 2017 Percona
50
Индексы MySQL и highload
На что влияют неуникальные ключи
▪SELECT
▪INSERT
▪UPDATE/DELETE
• Замедляют запись
• Правильные ускоряют поиск строк, удовлетворяющих WHERE
© 2017 Percona
51
Индексы MySQL и highload
На что влияют неуникальные ключи
▪SELECT
▪INSERT
▪UPDATE/DELETE
▪Внешние ключи
• При доступе к одной таблице строка в дочерней/родительской будет
заблокирована
© 2017 Percona
52
Индексы MySQL и highload
На что влияют неуникальные ключи
▪SELECT
▪INSERT
▪UPDATE/DELETE
▪Внешние ключи
▪Полнотекстовые индексы
• Поддерживаются с первых версий, InnoDB - 5.6+
• Для простых сценариев
• У специализированного ПО больше возможностей
© 2017 Percona
53
Что посмотреть про индексы
▪Мастер-класс "Работа с индексами: лучшие практики MySQL"
(Пётр Зайцев, CEO, Percona)
• https://www.youtube.com/watch?v=39e1vAGD3hg
▪MySQL 5.6 Full Text Search Throwdown
• https://www.percona.com/resources/mysql-webinars/mysql-56-full-text-search-throwdown
© 2017 Percona
54
Как работать с медленными запросами
MySQL?
Байка: нельзя оптимизировать запросы раз и навсегда
© 2017 Percona
55
Анализируем медленные запросы
▪Где найти
• Slow query log
▪ pt-query-digest
© 2017 Percona
56
Анализируем медленные запросы
▪Где найти
• Slow query log
• Performance Schema events_statements_*
▪ CREATED TMP DISK TABLES
▪ CREATED TMP TABLES
▪ SELECT FULL JOIN
▪ SELECT RANGE CHECK
▪ SELECT SCAN
▪ SORT MERGE PASSES
▪ SORT SCAN
© 2017 Percona
57
Анализируем медленные запросы
▪Где найти
• Slow query log
• Performance Schema events_statements_*
• sys schema
▪ statement analysis
▪ statements with full table scans
▪ statements with runtimes in 95th percentile
▪ statements with sorting
▪ statements with temp tables
▪ statements with errors or warnings
© 2017 Percona
58
Анализируем медленные запросы
▪Где найти
• Slow query log
• Performance Schema events_statements_*
• sys schema
• PMM и другие графические инструменты
© 2017 Percona
59
Query Analytics в PMM
© 2017 Percona
60
Анализируем медленные запросы
▪Где найти
▪Как чинить
• EXPLAIN
• EXPLAIN FORMAT=JSON
• INFORMATION_SCHEMA.OPTIMIZER_TRACE
• Анализ использования индексов
• Статистика
▪ SHOW STATUS LIKE ‘Handler_%’
© 2017 Percona
61
Что и где почитать
▪EXPLAIN: http://dev.mysql.com/doc/refman/5.7/en/explain.html
▪EXPLAIN FORMAT=JSON is Cool!
• https://www.percona.com/blog/2016/04/06/explain-format-json-wrap-up/
▪Optimizer Hints
• http://dev.mysql.com/doc/refman/5.7/en/optimizer-hints.html
▪PMM: https://pmmdemo.percona.com/
▪pt-query-digest
• https://www.percona.com/doc/percona-toolkit/LATEST/pt-query-digest.html
© 2017 Percona
62
Как настроить MySQL под нагрузку?
Байка: про какие опции всегда забывают
© 2017 Percona
63
Настраиваем MySQL для highload
▪table_open_cache, table_definition_cache
• Opened_tables, Opened_table_definitions не растёт
▪table_open_cache_instances
• Большое не нужно, обычно 2-4 достаточно
▪sort_buffer_size, сессионные буферы
• Маленький, можно увеличить для конкретной сессии
▪max_connections, max_allowed_packet
• Разумное
© 2017 Percona
64
Настраиваем InnoDB для highload
▪innodb_buffer_pool_size
• Чтобы вмещал рабочий набор данных
▪innodb_log_file_size
• Как минимум: изменения за час
▪innodb_io_capacity
• Реальное количество IOPS
▪innodb_thread_concurrency
• Количество процессоров
▪innodb_flush_method
© 2017 Percona
65
Что почитать про настройку
▪Опции MySQL
• http://dev.mysql.com/doc/refman/5.7/en/mysqld-option-tables.html
▪Опции Percona Server
• https://www.percona.com/doc/percona-server/5.7/ps-variables.html
▪Опции Galera Cluster
• https://mariadb.com/kb/en/mariadb/galera-cluster-system-variables/
▪Блог Дмитрия Кравчука
• http://dimitrik.free.fr/blog/
© 2017 Percona
66
Как понять, что «тупит» не MySQL?
Байка: не ругай «плохой» MySQL – посмотри, что у тебя за машины
© 2017 Percona
67
Что ещё может «тормозить»?
▪Другие приложения
• Выделенный сервер под базу
© 2017 Percona
68
Что ещё может «тормозить»?
▪Другие приложения
▪Диск
• Network storage
▪ NFS: никогда
▪ SAN: с осторожностью
• Не гарантирует точного ответа, записались ли данные
• Тестируйте innodb_flush_method
• Переносите работу в память
• Жертвуйте надёжностью
• Покупайте лучшие
© 2017 Percona
69
Что ещё может «тормозить»?
▪Другие приложения
▪Диск
▪CPU
• Агрессивные опции, отвечающие за параллельное выполнение
• Лимиты операционной системы
© 2017 Percona
70
Что ещё может «тормозить»?
▪Другие приложения
▪Диск
▪CPU
▪И всегда проверяйте, даёт ли нагрузку приложение!
© 2017 Percona
71
Что и где почитать по теме?
▪Linux Performance by Brendan Gregg
• http://brendangregg.com/linuxperf.html
© 2017 Percona
72
Вопросы?
Отвечает Света Смирнова
© 2017 Percona
73
P.S. Все материалы Percona о MySQL на
русском языке в открытом доступе
Собрала Анастасия Распопина
© 2017 Percona
74
Что ещё посмотреть по MySQL?
▪Анализ производительности и оптимизация MySQL, Пётр Зайцев
(Percona) - HighLoad++ 2013
▪Архитектура приложений с использованием MySQL, Пётр Зайцев
(Percona) - HighLoad++ 2014
▪SSD для вашей базы данных, Пётр Зайцев (Percona) - HighLoad++
2014
© 2017 Percona
75
Что ещё посмотреть по MySQL?
▪Troubleshooting MySQL Performance, Света Смирнова (Percona) -
LinuxPiter 2015
▪Ужимай и властвуй: алгоритмы компрессии в базах данных, Пётр
Зайцев (Percona) - HighLoad++ 2015
▪Практическая оптимизация MySQL: измерять, чтобы ускорять,
Пётр Зайцев (Percona) - HighLoad++ 2015
▪Обзор программных решений компании Percona, Пётр Зайцев
(Percona) - Технозавтрак 1С-Битрикс 2016
© 2017 Percona
76
Что ещё посмотреть по MySQL?
▪Методы и инструменты повышения производительности
5.6 и 5.7 - Николай Ихалайнен (Percona) - Стачка 2016
▪ MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store, Пётр Зайцев
(Percona) - HighLoad++ 2016
▪MySQL® и MongoDB® - когда что лучше использовать? Пётр Зайцев
(Percona) - HighLoad++ 2016
▪Open Source SQL-базы данных вступили в эру млн. запросов в сек. /
Ф.Сигаев, С.Смирнова, А.Распопина - HighLoad++ 2016
© 2017 Percona
77
Что ещё посмотреть по MySQL?
▪Pquery - открытый бесплатный инструмент тестирования
Percona, Алексей Бычко (Percona) - HighLoad++ 2016
▪Эффективная отладка репликации MySQL, Света Смирнова
(Percona) - HighLoad++ 2016
▪СПАСИБО!
DATABASE PERFORMANCE
MATTERS
Database Performance Matters
Database Performance Matters
Database Performance Matters
Database Performance Matters
Database Performance Matters

More Related Content

What's hot

Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Ontico
 
Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Tanya Denisyuk
 
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...Ontico
 
Что нужно знать о трёх топовых фичах MySQL
Что нужно знать  о трёх топовых фичах  MySQLЧто нужно знать  о трёх топовых фичах  MySQL
Что нужно знать о трёх топовых фичах MySQLSveta Smirnova
 
MySQL InnoDB Cluster
MySQL InnoDB ClusterMySQL InnoDB Cluster
MySQL InnoDB ClusterVittorio Cioe
 
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)Ontico
 
Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...
Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...
Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...Ontico
 
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)Ontico
 
Drupalconf moscow-2012-arkharov
Drupalconf moscow-2012-arkharovDrupalconf moscow-2012-arkharov
Drupalconf moscow-2012-arkharovrrromka
 
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Ontico
 
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)Ontico
 
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...Ontico
 
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)Ontico
 
Опыт построения СХД на базе Windows Server для использования в публичном обла...
Опыт построения СХД на базе Windows Server для использования в публичном обла...Опыт построения СХД на базе Windows Server для использования в публичном обла...
Опыт построения СХД на базе Windows Server для использования в публичном обла...Ontico
 
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...Ontico
 
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Ontico
 
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...Ontico
 

What's hot (19)

Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
 
Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"
 
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...
 
Что нужно знать о трёх топовых фичах MySQL
Что нужно знать  о трёх топовых фичах  MySQLЧто нужно знать  о трёх топовых фичах  MySQL
Что нужно знать о трёх топовых фичах MySQL
 
MySQL InnoDB Cluster
MySQL InnoDB ClusterMySQL InnoDB Cluster
MySQL InnoDB Cluster
 
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
 
Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...
Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...
Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...
 
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)
 
Drupalconf moscow-2012-arkharov
Drupalconf moscow-2012-arkharovDrupalconf moscow-2012-arkharov
Drupalconf moscow-2012-arkharov
 
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
 
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
 
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
 
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
 
Опыт построения СХД на базе Windows Server для использования в публичном обла...
Опыт построения СХД на базе Windows Server для использования в публичном обла...Опыт построения СХД на базе Windows Server для использования в публичном обла...
Опыт построения СХД на базе Windows Server для использования в публичном обла...
 
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
 
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
 
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
 

Similar to Checklistfinal perconaconf

MySQL - checklist для новичка в Highload
MySQL - checklist для новичка в HighloadMySQL - checklist для новичка в Highload
MySQL - checklist для новичка в HighloadSveta Smirnova
 
MySQL: чек-лист для новичка в highload / Анастасия Распопина, Света Смирнова ...
MySQL: чек-лист для новичка в highload / Анастасия Распопина, Света Смирнова ...MySQL: чек-лист для новичка в highload / Анастасия Распопина, Света Смирнова ...
MySQL: чек-лист для новичка в highload / Анастасия Распопина, Света Смирнова ...Ontico
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrusAlex Chistyakov
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...IT-Portfolio
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеit-people
 
Isilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSDIsilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSDAndrew Pantyukhin
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Ontico
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ontico
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012Roman Pavlushko
 
Optimization of a big PostgreSQL database
Optimization of a big PostgreSQL databaseOptimization of a big PostgreSQL database
Optimization of a big PostgreSQL databaseAlex Chistyakov
 
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)Ontico
 
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими рукамиАндрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими рукамиIBS
 
Говорим о СУБД языком HR
Говорим о СУБД языком HRГоворим о СУБД языком HR
Говорим о СУБД языком HRKonstantin Osipov
 
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.Tech Talks @NSU
 
Что такое Highload? Секреты высокой нагрузки
Что такое Highload? Секреты высокой нагрузкиЧто такое Highload? Секреты высокой нагрузки
Что такое Highload? Секреты высокой нагрузкиTech Talks @NSU
 
Tarantool, .net, newsql
Tarantool, .net, newsqlTarantool, .net, newsql
Tarantool, .net, newsqlAnatoly Popov
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusVladd Ev
 
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Ontico
 

Similar to Checklistfinal perconaconf (20)

MySQL - checklist для новичка в Highload
MySQL - checklist для новичка в HighloadMySQL - checklist для новичка в Highload
MySQL - checklist для новичка в Highload
 
MySQL: чек-лист для новичка в highload / Анастасия Распопина, Света Смирнова ...
MySQL: чек-лист для новичка в highload / Анастасия Распопина, Света Смирнова ...MySQL: чек-лист для новичка в highload / Анастасия Распопина, Света Смирнова ...
MySQL: чек-лист для новичка в highload / Анастасия Распопина, Света Смирнова ...
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
MySQL NDB Cluster
MySQL NDB ClusterMySQL NDB Cluster
MySQL NDB Cluster
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилище
 
Isilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSDIsilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSD
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012
 
Optimization of a big PostgreSQL database
Optimization of a big PostgreSQL databaseOptimization of a big PostgreSQL database
Optimization of a big PostgreSQL database
 
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
 
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими рукамиАндрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
 
Говорим о СУБД языком HR
Говорим о СУБД языком HRГоворим о СУБД языком HR
Говорим о СУБД языком HR
 
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
 
Что такое Highload? Секреты высокой нагрузки
Что такое Highload? Секреты высокой нагрузкиЧто такое Highload? Секреты высокой нагрузки
Что такое Highload? Секреты высокой нагрузки
 
Tarantool, .net, newsql
Tarantool, .net, newsqlTarantool, .net, newsql
Tarantool, .net, newsql
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rus
 
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)
 

Checklistfinal perconaconf

  • 1. © 2017 Percona 1 Света Смирнова, ведущий инженер технической поддержки (Percona) Анастасия Распопина, специалист по маркетингу (Percona) MySQL: чек-лист для новичка в highload Кейсы, списки настроек, must have, полезные ссылки Профессиональный фестиваль «Российские интернет-технологии» (РИТ++), конференция HighLoad Junior 5 июня 2017 г.
  • 2. © 2017 Percona 2 Кто мы и откуда? Кратко о нас и нашей компании ▪Света Смирнова • Ведущий инженер службы технической поддержки • 10+ лет работы в поддержке MySQL, автор книги “MySQL Troubleshooting” и UDF-функций для MySQL (дизайн-прототип встроенных JSON-функций).
  • 3. © 2017 Percona 3 Кто мы и откуда? Кратко о нас и нашей компании ▪Света Смирнова ▪Анастасия Распопина • Специалист по маркетингу • Работала в GameDev, организовывала HL++, РИТ++, сейчас в Percona Events Team.
  • 4. © 2017 Percona 4 Кто мы и откуда? Кратко о нас и нашей компании ▪Света Смирнова, ведущий инженер службы технической поддержки ▪Анастасия Распопина, специалист по маркетингу ▪Компания Percona • Поставщик 100% Open Source ПО для MySQL и MongoDB, а также услуг поддержки, консалтинга и удалённого администрирования для этих СУБД
  • 5. © 2017 Percona 5 Что такое highload сейчас? Даём определение высокой нагрузке на 2017 г. ▪Не цифры: предельные нагрузки • Сколько записей в секунду выдержит диск? • Запросов на чтение? • Пользовательских соединений?
  • 6. © 2017 Percona 6 Что такое highload сейчас? Даём определение высокой нагрузке на 2017 г. ▪Не цифры: предельные нагрузки ▪Железо имеет значение • t2.micro или “Машины Баз Данных” (WS, 6 июня, 16.00) • Много читаем: память • Много пишем: быстрый диск • Много активных соединений: CPU • Неоптимизированные запросы: CPU
  • 7. © 2017 Percona 7 Что такое highload сейчас? Даём определение высокой нагрузке на 2017 г. ▪Не цифры: предельные нагрузки ▪Железо имеет значение ▪Цифры • Стандартные бенчмарки всегда синтетические • Реальность обычно разнообразнее
  • 8. © 2017 Percona 8 Что такое highload сейчас? Цифры: рост производительности MySQL https://www.slideshare.net/geirhoydalsvik/whats-new-in-mysql-57
  • 9. © 2017 Percona 9 Что такое highload сейчас? Цифры: рост интернета
  • 10. © 2017 Percona 10 Что такое highload сейчас? Даём определение высокой нагрузке на 2017 г. ▪Highload • Та нагрузка, с которой СУБД не справляется • Нельзя раз и навсегда оптимизироваться «под highload», это непрерывный процесс
  • 11. © 2017 Percona 11 Обзор форков MySQL Oracle MySQL, Percona Server для MySQL, MariaDB, форки внутри компаний
  • 12. © 2017 Percona 12 Современные варианты MySQL Какие форки MySQL выжили и активно развиваются? ▪MySQL от Oracle • Оригинальный MySQL, над которым работают инженеры Oracle • “Сотни человек” (https://www.percona.com/blog/2014/02/18/oracles-morgan-tocker-opens-up-about-mysql-development-mysql-5-7/)
  • 13. © 2017 Percona 13 Современные варианты MySQL Какие форки MySQL выжили и активно развиваются? ▪MySQL от Oracle ▪Percona Server для MySQL • Полностью совместимая расширенная версия • Около 30 человек (Engineering Team)
  • 14. © 2017 Percona 14 Современные варианты MySQL Какие форки MySQL выжили и активно развиваются? ▪MySQL от Oracle ▪Percona Server для MySQL ▪MariaDB • Частично совместимая расширенная версия • Свои: оптимизатор запросов, GTID, движки, ...
  • 15. © 2017 Percona 15 Современные варианты MySQL Какие форки выжили и активно развиваются? ▪MySQL от Oracle ▪Percona Server для MySQL ▪MariaDB ▪Форки компаний – открытые и закрытые • Facebook: MyRocks, DocStore, статистика, производительность • Alibaba: Sequence, Backup, SQL, статистика, производительность • Amazon (Amazon Aurora): физическая репликация, производительность, масштабирование, закрытая
  • 16. © 2017 Percona 16 Где что загрузить: ссылки ▪MySQL от Oracle • Документация: https://dev.mysql.com/doc/refman/5.7/en/ • Полный список фич для 5.7: http://www.thecompletelistoffeatures.com/
  • 17. © 2017 Percona 17 Где что загрузить: ссылки ▪MySQL от Oracle ▪Percona Server для MySQL • Документация: https://www.percona.com/doc/percona-server/LATEST/index.html • Percona Database Performance Blog: http://percona.com/blog/
  • 18. © 2017 Percona 18 Где что загрузить: ссылки ▪MySQL от Oracle ▪Percona Server для MySQL ▪MariaDB • Документация: https://mariadb.com/kb/en/ • Foundation: http://mariadb.org/
  • 19. © 2017 Percona 19 Где что загрузить: ссылки ▪MySQL от Oracle ▪Percona Server для MySQL ▪MariaDB ▪Открытые разработки Facebook • Документация: https://github.com/facebook/mysql-5.6/wiki • 8.0: https://github.com/facebook/mysql-8.0
  • 20. © 2017 Percona 20 Где что загрузить: ссылки ▪MySQL от Oracle ▪Percona Server для MySQL ▪MariaDB ▪Открытые разработки Facebook ▪AliSQL • https://github.com/alibaba/AliSQL
  • 21. © 2017 Percona 21 Что стоит хранить в памяти, а что – на диске?
  • 22. © 2017 Percona 22 MySQL: что мы храним в памяти ▪Три вида буферов в памяти • Глобальные ▪ InnoDB Buffer Pool: активный набор данных ▪ Query Cache (http://mysqlserverteam.com/mysql-8-0-retiring-support-for-the-query-cache/) • Сессионные ▪ Sort buffer: маленькие! ▪ Всего не более, чем (Свободная память - глобальные) / max_connections • Под операцию ▪ Временные таблицы: может быть создано много!
  • 23. © 2017 Percona 23 MySQL: что мы храним на диске ▪MySQL лучше всего работает с данными в памяти ▪Для лучшей скорости • Быстрые диски: SSD, Fusion IO • innodb_io_capacity - рекомендуемое, реальное количество IOPS • innodb_flush_method - O_DIRECT, тестируйте! ▪Скорость или надёжность? • Операция fsync - дорогая • Реже fsync - лучше производительность и ниже надёжность
  • 24. © 2017 Percona 24 Почитать про память и диск ▪Оптимизация IO для InnoDB • https://dev.mysql.com/doc/refman/5.7/en/innodb-disk-management.html • https://www.percona.com/blog/2008/11/21/how-to-calculate-a-good-innodb-log-file-size/ ▪Оптимальный размер InnoDB Buffer Pool • https://www.percona.com/blog/2007/11/03/choosing-innodb_buffer_pool_size/
  • 25. © 2017 Percona 25 Как правильно кэшировать?
  • 26. © 2017 Percona 26 Кэширование в МySQL ▪Полезное кэширование: сервер • binlog_[stmt_]cache_size • table_definition_cache • table_open_cache • table_open_cache_instances - много не всегда хорошо • thread_cache_size
  • 27. © 2017 Percona 27 Кэширование в МySQL ▪Полезное кэширование: сервер ▪Полезное кэширование: InnoDB • Buffer Pool: innodb_buffer_pool_size • Log buffer: innodb_log_buffer_size
  • 28. © 2017 Percona 28 Кэширование в МySQL ▪Полезное кэширование: сервер ▪Полезное кэширование: InnoDB ▪Чем плоха Query Cache • Один mutex • Знаменитые баги ▪ Bug #21074: Large query_cache freezes mysql server sporadically under heavy load ▪ Bug #47529: query cache performance is bad on multi-core servers ▪ Bug #37844: Fix SMP performance for the query cache ▪ Bug #60696: invalidating query cache entries (table) hangs replication
  • 29. © 2017 Percona 29 Почитать про кэширование https://dom.as/tech/query-cache-tuner/
  • 30. © 2017 Percona 30 Кластеризация, шардинг, репликация – когда и как?
  • 31. © 2017 Percona 31 Репликация в МySQL ▪Встроенная ▪Простая в использовании ▪Требует настройки ▪Гибкая
  • 33. © 2017 Percona 33 Репликация: highload ▪Мастер • Синхронизация ▪ sync_binlog • 0 - самый быстрый • 1 - самый надёжный • >1 - компромисс между надёжностью и скоростью ▪Слейв • Меньше потоков, чем на мастере • Один relay log на channel
  • 35. © 2017 Percona 35 Круговая репликация: highload ▪Те же проблемы, что и на “рекомендуемой” ▪Умножайте на 2 для каждого сервера
  • 38. © 2017 Percona 38 Кластеризация в МySQL ▪NDB Cluster • Старейшее кластерное решение • Рабочий набор данных в памяти • Как минимум две копии данных • Специфические требования к приложению • Популярен среди европейских телекомов
  • 39. © 2017 Percona 39 Кластеризация в МySQL ▪NDB Cluster ▪Percona XtraDB Cluster, Galera Cluster • Синхронная репликация • Собственный лог изменений ▪ innodb_flush_log_at_trx_commit=2 - безопасно и рекомендуется! • Чтение: масштабируемое • Запись: чем больше серверов в кластере, тем медленнее
  • 40. © 2017 Percona 40 Percona XtraDB Cluster
  • 41. © 2017 Percona 41 Кластеризация в МySQL ▪NDB Cluster ▪Percona XtraDB Cluster, Galera ▪InnoDB Cluster • Архитектурно то же самое, что и Percona XtraDB Cluster/Galera • Синхронная репликация • Использует бинарный лог • Чтение: масштабируемое • Запись: чем больше серверов в кластере, тем медленнее • Новый продукт
  • 42. © 2017 Percona 42 Шардинг в МySQL ▪Встроенного не существует
  • 43. © 2017 Percona 43 Шардинг в МySQL ▪Встроенного не существует ▪Shard Query • Независимый продукт на PHP и Gearman • https://github.com/greenlion/swanhart-tools/wiki/Shard-Query-Manual
  • 44. © 2017 Percona 44 Шардинг в МySQL ▪Встроенного не существует ▪Shard Query ▪MySQL Fabric • Продукт от Oracle • Новый и, похоже, неподдерживаемый • https://dev.mysql.com/doc/mysql-utilities/1.5/en/fabric.htm
  • 45. © 2017 Percona 45 Шардинг в МySQL ▪Встроенного не существует ▪Shard Query ▪MySQL Fabric ▪ProxySQL • Больше, чем шардинг • Proxy, query rewrite, кэширование • Стремительно набирает популярность • https://www.percona.com/blog/2016/08/30/mysql-sharding-with-proxysql/
  • 46. © 2017 Percona 46 Полезные ссылки ▪To Shard or Not to Shard (Peter Zaitsev, CEO, Percona) - in English • https://www.youtube.com/watch?v=2MyyH-bH8Bw ▪Презентация о сценариях использования ProxySQL от его разработчиков (на английском языке): • http:/bit.ly/2qHmR4A
  • 47. © 2017 Percona 47 Какие индексы нужны MySQL?
  • 48. © 2017 Percona 48 Индексы MySQL и highload На что влияют неуникальные ключи ▪SELECT • Правильные улучшают скорость выполнения • Если слишком много подходящих ▪ Оптимизатор может дольше “думать” над планом
  • 49. © 2017 Percona 49 Индексы MySQL и highload На что влияют неуникальные ключи ▪SELECT ▪INSERT • Замедляют запись • Требуется обновление не только данных, но и индекса
  • 50. © 2017 Percona 50 Индексы MySQL и highload На что влияют неуникальные ключи ▪SELECT ▪INSERT ▪UPDATE/DELETE • Замедляют запись • Правильные ускоряют поиск строк, удовлетворяющих WHERE
  • 51. © 2017 Percona 51 Индексы MySQL и highload На что влияют неуникальные ключи ▪SELECT ▪INSERT ▪UPDATE/DELETE ▪Внешние ключи • При доступе к одной таблице строка в дочерней/родительской будет заблокирована
  • 52. © 2017 Percona 52 Индексы MySQL и highload На что влияют неуникальные ключи ▪SELECT ▪INSERT ▪UPDATE/DELETE ▪Внешние ключи ▪Полнотекстовые индексы • Поддерживаются с первых версий, InnoDB - 5.6+ • Для простых сценариев • У специализированного ПО больше возможностей
  • 53. © 2017 Percona 53 Что посмотреть про индексы ▪Мастер-класс "Работа с индексами: лучшие практики MySQL" (Пётр Зайцев, CEO, Percona) • https://www.youtube.com/watch?v=39e1vAGD3hg ▪MySQL 5.6 Full Text Search Throwdown • https://www.percona.com/resources/mysql-webinars/mysql-56-full-text-search-throwdown
  • 54. © 2017 Percona 54 Как работать с медленными запросами MySQL? Байка: нельзя оптимизировать запросы раз и навсегда
  • 55. © 2017 Percona 55 Анализируем медленные запросы ▪Где найти • Slow query log ▪ pt-query-digest
  • 56. © 2017 Percona 56 Анализируем медленные запросы ▪Где найти • Slow query log • Performance Schema events_statements_* ▪ CREATED TMP DISK TABLES ▪ CREATED TMP TABLES ▪ SELECT FULL JOIN ▪ SELECT RANGE CHECK ▪ SELECT SCAN ▪ SORT MERGE PASSES ▪ SORT SCAN
  • 57. © 2017 Percona 57 Анализируем медленные запросы ▪Где найти • Slow query log • Performance Schema events_statements_* • sys schema ▪ statement analysis ▪ statements with full table scans ▪ statements with runtimes in 95th percentile ▪ statements with sorting ▪ statements with temp tables ▪ statements with errors or warnings
  • 58. © 2017 Percona 58 Анализируем медленные запросы ▪Где найти • Slow query log • Performance Schema events_statements_* • sys schema • PMM и другие графические инструменты
  • 59. © 2017 Percona 59 Query Analytics в PMM
  • 60. © 2017 Percona 60 Анализируем медленные запросы ▪Где найти ▪Как чинить • EXPLAIN • EXPLAIN FORMAT=JSON • INFORMATION_SCHEMA.OPTIMIZER_TRACE • Анализ использования индексов • Статистика ▪ SHOW STATUS LIKE ‘Handler_%’
  • 61. © 2017 Percona 61 Что и где почитать ▪EXPLAIN: http://dev.mysql.com/doc/refman/5.7/en/explain.html ▪EXPLAIN FORMAT=JSON is Cool! • https://www.percona.com/blog/2016/04/06/explain-format-json-wrap-up/ ▪Optimizer Hints • http://dev.mysql.com/doc/refman/5.7/en/optimizer-hints.html ▪PMM: https://pmmdemo.percona.com/ ▪pt-query-digest • https://www.percona.com/doc/percona-toolkit/LATEST/pt-query-digest.html
  • 62. © 2017 Percona 62 Как настроить MySQL под нагрузку? Байка: про какие опции всегда забывают
  • 63. © 2017 Percona 63 Настраиваем MySQL для highload ▪table_open_cache, table_definition_cache • Opened_tables, Opened_table_definitions не растёт ▪table_open_cache_instances • Большое не нужно, обычно 2-4 достаточно ▪sort_buffer_size, сессионные буферы • Маленький, можно увеличить для конкретной сессии ▪max_connections, max_allowed_packet • Разумное
  • 64. © 2017 Percona 64 Настраиваем InnoDB для highload ▪innodb_buffer_pool_size • Чтобы вмещал рабочий набор данных ▪innodb_log_file_size • Как минимум: изменения за час ▪innodb_io_capacity • Реальное количество IOPS ▪innodb_thread_concurrency • Количество процессоров ▪innodb_flush_method
  • 65. © 2017 Percona 65 Что почитать про настройку ▪Опции MySQL • http://dev.mysql.com/doc/refman/5.7/en/mysqld-option-tables.html ▪Опции Percona Server • https://www.percona.com/doc/percona-server/5.7/ps-variables.html ▪Опции Galera Cluster • https://mariadb.com/kb/en/mariadb/galera-cluster-system-variables/ ▪Блог Дмитрия Кравчука • http://dimitrik.free.fr/blog/
  • 66. © 2017 Percona 66 Как понять, что «тупит» не MySQL? Байка: не ругай «плохой» MySQL – посмотри, что у тебя за машины
  • 67. © 2017 Percona 67 Что ещё может «тормозить»? ▪Другие приложения • Выделенный сервер под базу
  • 68. © 2017 Percona 68 Что ещё может «тормозить»? ▪Другие приложения ▪Диск • Network storage ▪ NFS: никогда ▪ SAN: с осторожностью • Не гарантирует точного ответа, записались ли данные • Тестируйте innodb_flush_method • Переносите работу в память • Жертвуйте надёжностью • Покупайте лучшие
  • 69. © 2017 Percona 69 Что ещё может «тормозить»? ▪Другие приложения ▪Диск ▪CPU • Агрессивные опции, отвечающие за параллельное выполнение • Лимиты операционной системы
  • 70. © 2017 Percona 70 Что ещё может «тормозить»? ▪Другие приложения ▪Диск ▪CPU ▪И всегда проверяйте, даёт ли нагрузку приложение!
  • 71. © 2017 Percona 71 Что и где почитать по теме? ▪Linux Performance by Brendan Gregg • http://brendangregg.com/linuxperf.html
  • 73. © 2017 Percona 73 P.S. Все материалы Percona о MySQL на русском языке в открытом доступе Собрала Анастасия Распопина
  • 74. © 2017 Percona 74 Что ещё посмотреть по MySQL? ▪Анализ производительности и оптимизация MySQL, Пётр Зайцев (Percona) - HighLoad++ 2013 ▪Архитектура приложений с использованием MySQL, Пётр Зайцев (Percona) - HighLoad++ 2014 ▪SSD для вашей базы данных, Пётр Зайцев (Percona) - HighLoad++ 2014
  • 75. © 2017 Percona 75 Что ещё посмотреть по MySQL? ▪Troubleshooting MySQL Performance, Света Смирнова (Percona) - LinuxPiter 2015 ▪Ужимай и властвуй: алгоритмы компрессии в базах данных, Пётр Зайцев (Percona) - HighLoad++ 2015 ▪Практическая оптимизация MySQL: измерять, чтобы ускорять, Пётр Зайцев (Percona) - HighLoad++ 2015 ▪Обзор программных решений компании Percona, Пётр Зайцев (Percona) - Технозавтрак 1С-Битрикс 2016
  • 76. © 2017 Percona 76 Что ещё посмотреть по MySQL? ▪Методы и инструменты повышения производительности 5.6 и 5.7 - Николай Ихалайнен (Percona) - Стачка 2016 ▪ MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store, Пётр Зайцев (Percona) - HighLoad++ 2016 ▪MySQL® и MongoDB® - когда что лучше использовать? Пётр Зайцев (Percona) - HighLoad++ 2016 ▪Open Source SQL-базы данных вступили в эру млн. запросов в сек. / Ф.Сигаев, С.Смирнова, А.Распопина - HighLoad++ 2016
  • 77. © 2017 Percona 77 Что ещё посмотреть по MySQL? ▪Pquery - открытый бесплатный инструмент тестирования Percona, Алексей Бычко (Percona) - HighLoad++ 2016 ▪Эффективная отладка репликации MySQL, Света Смирнова (Percona) - HighLoad++ 2016 ▪СПАСИБО!
  • 78. DATABASE PERFORMANCE MATTERS Database Performance Matters Database Performance Matters Database Performance Matters Database Performance Matters Database Performance Matters