SlideShare a Scribd company logo
1 of 78
Download to read offline
© 2017 Percona1
Света Смирнова, ведущий инженер технической поддержки (Percona)
Анастасия Распопина, специалист по маркетингу (Percona)
MySQL:
чек-лист для новичка в highload
Кейсы, списки настроек, must have, полезные ссылки
Профессиональный фестиваль «Российские интернет-технологии» (РИТ++),
конференция HighLoad Junior
5 июня 2017 г.
© 2017 Percona2
Кто мы и откуда?
Кратко о нас и нашей компании
▪Света Смирнова
• Ведущий инженер службы технической поддержки
• 10+ лет работы в поддержке MySQL, автор книги “MySQL Troubleshooting” и
UDF-функций для MySQL (дизайн-прототип встроенных JSON-функций).
© 2017 Percona3
Кто мы и откуда?
Кратко о нас и нашей компании
▪Света Смирнова
▪Анастасия Распопина
• Специалист по маркетингу
• Работала в GameDev, организовывала HL++, РИТ++, сейчас в Percona Events
Team.
© 2017 Percona4
Кто мы и откуда?
Кратко о нас и нашей компании
▪Света Смирнова, ведущий инженер службы технической
поддержки
▪Анастасия Распопина, специалист по маркетингу
▪Компания Percona
• Поставщик 100% Open Source ПО для MySQL и MongoDB, а также услуг
поддержки, консалтинга и удалённого администрирования для этих
СУБД
© 2017 Percona5
Что такое highload сейчас?
Даём определение высокой нагрузке на 2017 г.
▪Не цифры: предельные нагрузки
• Сколько записей в секунду выдержит диск?
• Запросов на чтение?
• Пользовательских соединений?
© 2017 Percona6
Что такое highload сейчас?
Даём определение высокой нагрузке на 2017 г.
▪Не цифры: предельные нагрузки
▪Железо имеет значение
• t2.micro или “Машины Баз Данных” (WS, 6 июня, 16.00)
• Много читаем: память
• Много пишем: быстрый диск
• Много активных соединений: CPU
• Неоптимизированные запросы: CPU
© 2017 Percona7
Что такое highload сейчас?
Даём определение высокой нагрузке на 2017 г.
▪Не цифры: предельные нагрузки
▪Железо имеет значение
▪Цифры
• Стандартные бенчмарки всегда синтетические
• Реальность обычно разнообразнее
© 2017 Percona8
Что такое highload сейчас?
Цифры: рост производительности MySQL
https://www.slideshare.net/geirhoydalsvik/whats-new-in-mysql-57
© 2017 Percona9
Что такое highload сейчас?
Цифры: рост интернета
© 2017 Percona10
Что такое highload сейчас?
Даём определение высокой нагрузке на 2017 г.
▪Highload
• Та нагрузка, с которой СУБД не справляется
• Нельзя раз и навсегда оптимизироваться «под highload», это
непрерывный процесс
© 2017 Percona11
Обзор форков MySQL
Oracle MySQL, Percona Server для MySQL, MariaDB,
форки внутри компаний
© 2017 Percona12
Современные варианты 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 Percona13
Современные варианты MySQL
Какие форки MySQL выжили и активно развиваются?
▪MySQL от Oracle
▪Percona Server для MySQL
• Полностью совместимая расширенная версия
• Около 30 человек (Engineering Team)
© 2017 Percona14
Современные варианты MySQL
Какие форки MySQL выжили и активно развиваются?
▪MySQL от Oracle
▪Percona Server для MySQL
▪MariaDB
• Частично совместимая расширенная версия
• Свои: оптимизатор запросов, GTID, движки, ...
© 2017 Percona15
Современные варианты MySQL
Какие форки выжили и активно развиваются?
▪MySQL от Oracle
▪Percona Server для MySQL
▪MariaDB
▪Форки компаний – открытые и закрытые
• Facebook: MyRocks, DocStore, статистика, производительность
• Alibaba: Sequence, Backup, SQL, статистика, производительность
• Amazon (Amazon Aurora): физическая репликация, производительность,
масштабирование, закрытая
© 2017 Percona16
Где что загрузить: ссылки
▪MySQL от Oracle
• Документация: https://dev.mysql.com/doc/refman/5.7/en/
• Полный список фич для 5.7: http://www.thecompletelistoffeatures.com/
© 2017 Percona17
Где что загрузить: ссылки
▪MySQL от Oracle
▪Percona Server для MySQL
• Документация: https://www.percona.com/doc/percona-server/LATEST/index.html
• Percona Database Performance Blog: http://percona.com/blog/
© 2017 Percona18
Где что загрузить: ссылки
▪MySQL от Oracle
▪Percona Server для MySQL
▪MariaDB
• Документация: https://mariadb.com/kb/en/
• Foundation: http://mariadb.org/
© 2017 Percona19
Где что загрузить: ссылки
▪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 Percona20
Где что загрузить: ссылки
▪MySQL от Oracle
▪Percona Server для MySQL
▪MariaDB
▪Открытые разработки Facebook
▪AliSQL
• https://github.com/alibaba/AliSQL
© 2017 Percona21
Что стоит хранить в памяти,
а что – на диске?
© 2017 Percona22
MySQL: что мы храним в памяти
▪Три вида буферов в памяти
• Глобальные
▪ InnoDB Buffer Pool: активный набор данных
▪ Query Cache (http://mysqlserverteam.com/mysql-8-0-retiring-support-for-the-query-cache/)
• Сессионные
▪ Sort buffer: маленькие!
▪ Всего не более, чем (Свободная память - глобальные) / max_connections
• Под операцию
▪ Временные таблицы: может быть создано много!
© 2017 Percona23
MySQL: что мы храним на диске
▪MySQL лучше всего работает с данными в памяти
▪Для лучшей скорости
• Быстрые диски: SSD, Fusion IO
• innodb_io_capacity - рекомендуемое, реальное количество IOPS
• innodb_flush_method - O_DIRECT, тестируйте!
▪Скорость или надёжность?
• Операция fsync - дорогая
• Реже fsync - лучше производительность и ниже надёжность
© 2017 Percona24
Почитать про память и диск
▪Оптимизация 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 Percona25
Как правильно кэшировать?
© 2017 Percona26
Кэширование в МySQL
▪Полезное кэширование: сервер
• binlog_[stmt_]cache_size
• table_definition_cache
• table_open_cache
• table_open_cache_instances - много не всегда хорошо
• thread_cache_size
© 2017 Percona27
Кэширование в МySQL
▪Полезное кэширование: сервер
▪Полезное кэширование: InnoDB
• Buffer Pool: innodb_buffer_pool_size
• Log buffer: innodb_log_buffer_size
© 2017 Percona28
Кэширование в М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 Percona29
Почитать про кэширование
https://dom.as/tech/query-cache-tuner/
© 2017 Percona30
Кластеризация, шардинг, репликация –
когда и как?
© 2017 Percona31
Репликация в МySQL
▪Встроенная
▪Простая в использовании
▪Требует настройки
▪Гибкая
© 2017 Percona32
Рекомендуемая репликация
© 2017 Percona33
Репликация: highload
▪Мастер
• Синхронизация
▪ sync_binlog
• 0 - самый быстрый
• 1 - самый надёжный
• >1 - компромисс между надёжностью и скоростью
▪Слейв
• Меньше потоков, чем на мастере
• Один relay log на channel
© 2017 Percona34
Круговая
© 2017 Percona35
Круговая репликация: highload
▪Те же проблемы, что и на “рекомендуемой”
▪Умножайте на 2 для каждого сервера
© 2017 Percona36
Креативная
© 2017 Percona37
Креативная: highload
© 2017 Percona38
Кластеризация в МySQL
▪NDB Cluster
• Старейшее кластерное решение
• Рабочий набор данных в памяти
• Как минимум две копии данных
• Специфические требования к приложению
• Популярен среди европейских телекомов
© 2017 Percona39
Кластеризация в МySQL
▪NDB Cluster
▪Percona XtraDB Cluster, Galera Cluster
• Синхронная репликация
• Собственный лог изменений
▪ innodb_flush_log_at_trx_commit=2 - безопасно и рекомендуется!
• Чтение: масштабируемое
• Запись: чем больше серверов в кластере, тем медленнее
© 2017 Percona40
Percona XtraDB Cluster
© 2017 Percona41
Кластеризация в МySQL
▪NDB Cluster
▪Percona XtraDB Cluster, Galera
▪InnoDB Cluster
• Архитектурно то же самое, что и Percona XtraDB Cluster/Galera
• Синхронная репликация
• Использует бинарный лог
• Чтение: масштабируемое
• Запись: чем больше серверов в кластере, тем медленнее
• Новый продукт
© 2017 Percona42
Шардинг в МySQL
▪Встроенного не существует
© 2017 Percona43
Шардинг в МySQL
▪Встроенного не существует
▪Shard Query
• Независимый продукт на PHP и Gearman
• https://github.com/greenlion/swanhart-tools/wiki/Shard-Query-Manual
© 2017 Percona44
Шардинг в МySQL
▪Встроенного не существует
▪Shard Query
▪MySQL Fabric
• Продукт от Oracle
• Новый и, похоже, неподдерживаемый
• https://dev.mysql.com/doc/mysql-utilities/1.5/en/fabric.htm
© 2017 Percona45
Шардинг в МySQL
▪Встроенного не существует
▪Shard Query
▪MySQL Fabric
▪ProxySQL
• Больше, чем шардинг
• Proxy, query rewrite, кэширование
• Стремительно набирает популярность
• https://www.percona.com/blog/2016/08/30/mysql-sharding-with-proxysql/
© 2017 Percona46
Полезные ссылки
▪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 Percona47
Какие индексы нужны MySQL?
© 2017 Percona48
Индексы MySQL и highload
На что влияют неуникальные ключи
▪SELECT
• Правильные улучшают скорость выполнения
• Если слишком много подходящих
▪ Оптимизатор может дольше “думать” над планом
© 2017 Percona49
Индексы MySQL и highload
На что влияют неуникальные ключи
▪SELECT
▪INSERT
• Замедляют запись
• Требуется обновление не только данных, но и индекса
© 2017 Percona50
Индексы MySQL и highload
На что влияют неуникальные ключи
▪SELECT
▪INSERT
▪UPDATE/DELETE
• Замедляют запись
• Правильные ускоряют поиск строк, удовлетворяющих WHERE
© 2017 Percona51
Индексы MySQL и highload
На что влияют неуникальные ключи
▪SELECT
▪INSERT
▪UPDATE/DELETE
▪Внешние ключи
• При доступе к одной таблице строка в дочерней/родительской будет
заблокирована
© 2017 Percona52
Индексы MySQL и highload
На что влияют неуникальные ключи
▪SELECT
▪INSERT
▪UPDATE/DELETE
▪Внешние ключи
▪Полнотекстовые индексы
• Поддерживаются с первых версий, InnoDB - 5.6+
• Для простых сценариев
• У специализированного ПО больше возможностей
© 2017 Percona53
Что посмотреть про индексы
▪Мастер-класс "Работа с индексами: лучшие практики 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 Percona54
Как работать с медленными запросами
MySQL?
Байка: нельзя оптимизировать запросы раз и навсегда
© 2017 Percona55
Анализируем медленные запросы
▪Где найти
• Slow query log
▪ pt-query-digest
© 2017 Percona56
Анализируем медленные запросы
▪Где найти
• 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 Percona57
Анализируем медленные запросы
▪Где найти
• 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 Percona58
Анализируем медленные запросы
▪Где найти
• Slow query log
• Performance Schema events_statements_*
• sys schema
• PMM и другие графические инструменты
© 2017 Percona59
Query Analytics в PMM
© 2017 Percona60
Анализируем медленные запросы
▪Где найти
▪Как чинить
• EXPLAIN
• EXPLAIN FORMAT=JSON
• INFORMATION_SCHEMA.OPTIMIZER_TRACE
• Анализ использования индексов
• Статистика
▪ SHOW STATUS LIKE ‘Handler_%’
© 2017 Percona61
Что и где почитать
▪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 Percona62
Как настроить MySQL под нагрузку?
Байка: про какие опции всегда забывают
© 2017 Percona63
Настраиваем 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 Percona64
Настраиваем InnoDB для highload
▪innodb_buffer_pool_size
• Чтобы вмещал рабочий набор данных
▪innodb_log_file_size
• Как минимум: изменения за час
▪innodb_io_capacity
• Реальное количество IOPS
▪innodb_thread_concurrency
• Количество процессоров
▪innodb_flush_method
© 2017 Percona65
Что почитать про настройку
▪Опции 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 Percona66
Как понять, что «тупит» не MySQL?
Байка: не ругай «плохой» MySQL – посмотри, что у тебя за машины
© 2017 Percona67
Что ещё может «тормозить»?
▪Другие приложения
• Выделенный сервер под базу
© 2017 Percona68
Что ещё может «тормозить»?
▪Другие приложения
▪Диск
• Network storage
▪ NFS: никогда
▪ SAN: с осторожностью
• Не гарантирует точного ответа, записались ли данные
• Тестируйте innodb_flush_method
• Переносите работу в память
• Жертвуйте надёжностью
• Покупайте лучшие
© 2017 Percona69
Что ещё может «тормозить»?
▪Другие приложения
▪Диск
▪CPU
• Агрессивные опции, отвечающие за параллельное выполнение
• Лимиты операционной системы
© 2017 Percona70
Что ещё может «тормозить»?
▪Другие приложения
▪Диск
▪CPU
▪И всегда проверяйте, даёт ли нагрузку приложение!
© 2017 Percona71
Что и где почитать по теме?
▪Linux Performance by Brendan Gregg
• http://brendangregg.com/linuxperf.html
© 2017 Percona72
Вопросы?
Отвечает Света Смирнова
© 2017 Percona73
P.S. Все материалы Percona о MySQL на
русском языке в открытом доступе
Собрала Анастасия Распопина
© 2017 Percona74
Что ещё посмотреть по MySQL?
▪Анализ производительности и оптимизация MySQL, Пётр Зайцев
(Percona) - HighLoad++ 2013
▪Архитектура приложений с использованием MySQL, Пётр Зайцев
(Percona) - HighLoad++ 2014
▪SSD для вашей базы данных, Пётр Зайцев (Percona) - HighLoad++
2014
© 2017 Percona75
Что ещё посмотреть по MySQL?
▪Troubleshooting MySQL Performance, Света Смирнова (Percona) -
LinuxPiter 2015
▪Ужимай и властвуй: алгоритмы компрессии в базах данных, Пётр
Зайцев (Percona) - HighLoad++ 2015
▪Практическая оптимизация MySQL: измерять, чтобы ускорять,
Пётр Зайцев (Percona) - HighLoad++ 2015
▪Обзор программных решений компании Percona, Пётр Зайцев
(Percona) - Технозавтрак 1С-Битрикс 2016
© 2017 Percona76
Что ещё посмотреть по 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 Percona77
Что ещё посмотреть по MySQL?
▪Pquery - открытый бесплатный инструмент тестирования
Percona, Алексей Бычко (Percona) - HighLoad++ 2016
▪Эффективная отладка репликации MySQL, Света Смирнова
(Percona) - HighLoad++ 2016
▪СПАСИБО!
DATABASE PERFORMANCE
MATTERS
Database Performance MattersDatabase Performance MattersDatabase Performance MattersDatabase Performance MattersDatabase Performance Matters

More Related Content

What's hot

Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Ontico
 
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...Ontico
 
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...Anastasia Rostova
 
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)Ontico
 
Эффективная отладка репликации MySQL
Эффективная отладка репликации MySQLЭффективная отладка репликации MySQL
Эффективная отладка репликации MySQLSveta Smirnova
 
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...Ontico
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)Ontico
 
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...Ontico
 
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...Ontico
 
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...Ontico
 
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...Ontico
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Ontico
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Ontico
 
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Ontico
 
MyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBMyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBSergey Petrunya
 
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)Ontico
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012Alex Chistyakov
 
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...Ontico
 

What's hot (18)

Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
 
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
 
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
 
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
 
Эффективная отладка репликации MySQL
Эффективная отладка репликации MySQLЭффективная отладка репликации MySQL
Эффективная отладка репликации MySQL
 
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
 
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
 
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
 
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
 
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
 
MyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBMyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDB
 
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012
 
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
 

Viewers also liked

MySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLMySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLOlivier DASINI
 
MHA (MySQL High Availability): Getting started & moving past quirks
MHA (MySQL High Availability): Getting started & moving past quirksMHA (MySQL High Availability): Getting started & moving past quirks
MHA (MySQL High Availability): Getting started & moving past quirksColin Charles
 
MySQL Best Practices - OTN LAD Tour
MySQL Best Practices - OTN LAD TourMySQL Best Practices - OTN LAD Tour
MySQL Best Practices - OTN LAD TourRonald Bradford
 
Mysql high availability and scalability
Mysql high availability and scalabilityMysql high availability and scalability
Mysql high availability and scalabilityyin gong
 
MySQL Backup and Recovery Essentials
MySQL Backup and Recovery EssentialsMySQL Backup and Recovery Essentials
MySQL Backup and Recovery EssentialsRonald Bradford
 
MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...
MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...
MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...Frederic Descamps
 
MySQL High Availability with Group Replication
MySQL High Availability with Group ReplicationMySQL High Availability with Group Replication
MySQL High Availability with Group ReplicationNuno Carvalho
 
MySQL Group Replication - HandsOn Tutorial
MySQL Group Replication - HandsOn TutorialMySQL Group Replication - HandsOn Tutorial
MySQL Group Replication - HandsOn TutorialKenny Gryp
 
Mastering InnoDB Diagnostics
Mastering InnoDB DiagnosticsMastering InnoDB Diagnostics
Mastering InnoDB Diagnosticsguest8212a5
 
MySQL InnoDB Cluster - Group Replication
MySQL InnoDB Cluster - Group ReplicationMySQL InnoDB Cluster - Group Replication
MySQL InnoDB Cluster - Group ReplicationFrederic Descamps
 
What you wanted to know about MySQL, but could not find using inernal instrum...
What you wanted to know about MySQL, but could not find using inernal instrum...What you wanted to know about MySQL, but could not find using inernal instrum...
What you wanted to know about MySQL, but could not find using inernal instrum...Sveta Smirnova
 
Galera cluster for high availability
Galera cluster for high availability Galera cluster for high availability
Galera cluster for high availability Mydbops
 
Mysql参数-GDB
Mysql参数-GDBMysql参数-GDB
Mysql参数-GDBzhaolinjnu
 
Group Replication: A Journey to the Group Communication Core
Group Replication: A Journey to the Group Communication CoreGroup Replication: A Journey to the Group Communication Core
Group Replication: A Journey to the Group Communication CoreAlfranio Júnior
 
MySQL Replication Performance Tuning for Fun and Profit!
MySQL Replication Performance Tuning for Fun and Profit!MySQL Replication Performance Tuning for Fun and Profit!
MySQL Replication Performance Tuning for Fun and Profit!Vitor Oliveira
 
A New Architecture for Group Replication in Data Grid
A New Architecture for Group Replication in Data GridA New Architecture for Group Replication in Data Grid
A New Architecture for Group Replication in Data GridEditor IJCATR
 
MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017
MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017
MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017Ivan Ma
 
MySQL Group Replication
MySQL Group ReplicationMySQL Group Replication
MySQL Group ReplicationManish Kumar
 
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?Sveta Smirnova
 

Viewers also liked (20)

MySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLMySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
 
MHA (MySQL High Availability): Getting started & moving past quirks
MHA (MySQL High Availability): Getting started & moving past quirksMHA (MySQL High Availability): Getting started & moving past quirks
MHA (MySQL High Availability): Getting started & moving past quirks
 
MySQL Best Practices - OTN LAD Tour
MySQL Best Practices - OTN LAD TourMySQL Best Practices - OTN LAD Tour
MySQL Best Practices - OTN LAD Tour
 
Mysql high availability and scalability
Mysql high availability and scalabilityMysql high availability and scalability
Mysql high availability and scalability
 
MySQL Backup and Recovery Essentials
MySQL Backup and Recovery EssentialsMySQL Backup and Recovery Essentials
MySQL Backup and Recovery Essentials
 
MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...
MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...
MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...
 
MySQL High Availability with Group Replication
MySQL High Availability with Group ReplicationMySQL High Availability with Group Replication
MySQL High Availability with Group Replication
 
MySQL Group Replication - HandsOn Tutorial
MySQL Group Replication - HandsOn TutorialMySQL Group Replication - HandsOn Tutorial
MySQL Group Replication - HandsOn Tutorial
 
Mastering InnoDB Diagnostics
Mastering InnoDB DiagnosticsMastering InnoDB Diagnostics
Mastering InnoDB Diagnostics
 
MySQL InnoDB Cluster - Group Replication
MySQL InnoDB Cluster - Group ReplicationMySQL InnoDB Cluster - Group Replication
MySQL InnoDB Cluster - Group Replication
 
What you wanted to know about MySQL, but could not find using inernal instrum...
What you wanted to know about MySQL, but could not find using inernal instrum...What you wanted to know about MySQL, but could not find using inernal instrum...
What you wanted to know about MySQL, but could not find using inernal instrum...
 
Galera cluster for high availability
Galera cluster for high availability Galera cluster for high availability
Galera cluster for high availability
 
SQL Outer Joins for Fun and Profit
SQL Outer Joins for Fun and ProfitSQL Outer Joins for Fun and Profit
SQL Outer Joins for Fun and Profit
 
Mysql参数-GDB
Mysql参数-GDBMysql参数-GDB
Mysql参数-GDB
 
Group Replication: A Journey to the Group Communication Core
Group Replication: A Journey to the Group Communication CoreGroup Replication: A Journey to the Group Communication Core
Group Replication: A Journey to the Group Communication Core
 
MySQL Replication Performance Tuning for Fun and Profit!
MySQL Replication Performance Tuning for Fun and Profit!MySQL Replication Performance Tuning for Fun and Profit!
MySQL Replication Performance Tuning for Fun and Profit!
 
A New Architecture for Group Replication in Data Grid
A New Architecture for Group Replication in Data GridA New Architecture for Group Replication in Data Grid
A New Architecture for Group Replication in Data Grid
 
MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017
MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017
MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017
 
MySQL Group Replication
MySQL Group ReplicationMySQL Group Replication
MySQL Group Replication
 
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?
 

Similar to MySQL - checklist для новичка в Highload

Checklistfinal perconaconf
Checklistfinal perconaconfChecklistfinal perconaconf
Checklistfinal perconaconfDeveloperua
 
MySQL InnoDB Cluster
MySQL InnoDB ClusterMySQL InnoDB Cluster
MySQL InnoDB ClusterVittorio Cioe
 
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
 
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
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012Roman Pavlushko
 
Tarantool, .net, newsql
Tarantool, .net, newsqlTarantool, .net, newsql
Tarantool, .net, newsqlAnatoly Popov
 
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)Ontico
 
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
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Ontico
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ontico
 
Isilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSDIsilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSDAndrew Pantyukhin
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...Vyacheslav Nikulin
 
FlexPod для machine learning, 3D, контейнеров и еще сотня проверенных архитектур
FlexPod для machine learning, 3D, контейнеров и еще сотня проверенных архитектурFlexPod для machine learning, 3D, контейнеров и еще сотня проверенных архитектур
FlexPod для machine learning, 3D, контейнеров и еще сотня проверенных архитектурCisco Russia
 
Сергей Аверин "Распространенные ошибки применения баз данных"
Сергей Аверин "Распространенные ошибки применения баз данных"Сергей Аверин "Распространенные ошибки применения баз данных"
Сергей Аверин "Распространенные ошибки применения баз данных"Tanya Denisyuk
 

Similar to MySQL - checklist для новичка в Highload (20)

Checklistfinal perconaconf
Checklistfinal perconaconfChecklistfinal perconaconf
Checklistfinal perconaconf
 
MySQL InnoDB Cluster
MySQL InnoDB ClusterMySQL InnoDB Cluster
MySQL InnoDB Cluster
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
MySQL NDB Cluster
MySQL NDB ClusterMySQL NDB Cluster
MySQL NDB Cluster
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилище
 
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
 
Что такое Highload? Секреты высокой нагрузки
Что такое Highload? Секреты высокой нагрузкиЧто такое Highload? Секреты высокой нагрузки
Что такое Highload? Секреты высокой нагрузки
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012
 
Tarantool, .net, newsql
Tarantool, .net, newsqlTarantool, .net, newsql
Tarantool, .net, newsql
 
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
 
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 по сети своими руками
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
Isilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSDIsilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSD
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...
 
FlexPod для machine learning, 3D, контейнеров и еще сотня проверенных архитектур
FlexPod для machine learning, 3D, контейнеров и еще сотня проверенных архитектурFlexPod для machine learning, 3D, контейнеров и еще сотня проверенных архитектур
FlexPod для machine learning, 3D, контейнеров и еще сотня проверенных архитектур
 
Сергей Аверин "Распространенные ошибки применения баз данных"
Сергей Аверин "Распространенные ошибки применения баз данных"Сергей Аверин "Распространенные ошибки применения баз данных"
Сергей Аверин "Распространенные ошибки применения баз данных"
 

More from Sveta Smirnova

MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?Sveta Smirnova
 
Database in Kubernetes: Diagnostics and Monitoring
Database in Kubernetes: Diagnostics and MonitoringDatabase in Kubernetes: Diagnostics and Monitoring
Database in Kubernetes: Diagnostics and MonitoringSveta Smirnova
 
MySQL Database Monitoring: Must, Good and Nice to Have
MySQL Database Monitoring: Must, Good and Nice to HaveMySQL Database Monitoring: Must, Good and Nice to Have
MySQL Database Monitoring: Must, Good and Nice to HaveSveta Smirnova
 
MySQL Cookbook: Recipes for Developers
MySQL Cookbook: Recipes for DevelopersMySQL Cookbook: Recipes for Developers
MySQL Cookbook: Recipes for DevelopersSveta Smirnova
 
MySQL Performance for DevOps
MySQL Performance for DevOpsMySQL Performance for DevOps
MySQL Performance for DevOpsSveta Smirnova
 
MySQL Test Framework для поддержки клиентов и верификации багов
MySQL Test Framework для поддержки клиентов и верификации баговMySQL Test Framework для поддержки клиентов и верификации багов
MySQL Test Framework для поддержки клиентов и верификации баговSveta Smirnova
 
MySQL Cookbook: Recipes for Your Business
MySQL Cookbook: Recipes for Your BusinessMySQL Cookbook: Recipes for Your Business
MySQL Cookbook: Recipes for Your BusinessSveta Smirnova
 
Introduction into MySQL Query Tuning for Dev[Op]s
Introduction into MySQL Query Tuning for Dev[Op]sIntroduction into MySQL Query Tuning for Dev[Op]s
Introduction into MySQL Query Tuning for Dev[Op]sSveta Smirnova
 
Производительность MySQL для DevOps
 Производительность MySQL для DevOps Производительность MySQL для DevOps
Производительность MySQL для DevOpsSveta Smirnova
 
MySQL Performance for DevOps
MySQL Performance for DevOpsMySQL Performance for DevOps
MySQL Performance for DevOpsSveta Smirnova
 
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB ClusterHow to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB ClusterSveta Smirnova
 
How to migrate from MySQL to MariaDB without tears
How to migrate from MySQL to MariaDB without tearsHow to migrate from MySQL to MariaDB without tears
How to migrate from MySQL to MariaDB without tearsSveta Smirnova
 
Modern solutions for modern database load: improvements in the latest MariaDB...
Modern solutions for modern database load: improvements in the latest MariaDB...Modern solutions for modern database load: improvements in the latest MariaDB...
Modern solutions for modern database load: improvements in the latest MariaDB...Sveta Smirnova
 
How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?Sveta Smirnova
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaСовременному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaSveta Smirnova
 
How to Avoid Pitfalls in Schema Upgrade with Galera
How to Avoid Pitfalls in Schema Upgrade with GaleraHow to Avoid Pitfalls in Schema Upgrade with Galera
How to Avoid Pitfalls in Schema Upgrade with GaleraSveta Smirnova
 
How Safe is Asynchronous Master-Master Setup?
 How Safe is Asynchronous Master-Master Setup? How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?Sveta Smirnova
 
Introduction to MySQL Query Tuning for Dev[Op]s
Introduction to MySQL Query Tuning for Dev[Op]sIntroduction to MySQL Query Tuning for Dev[Op]s
Introduction to MySQL Query Tuning for Dev[Op]sSveta Smirnova
 
Billion Goods in Few Categories: How Histograms Save a Life?
Billion Goods in Few Categories: How Histograms Save a Life?Billion Goods in Few Categories: How Histograms Save a Life?
Billion Goods in Few Categories: How Histograms Save a Life?Sveta Smirnova
 
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...Sveta Smirnova
 

More from Sveta Smirnova (20)

MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
 
Database in Kubernetes: Diagnostics and Monitoring
Database in Kubernetes: Diagnostics and MonitoringDatabase in Kubernetes: Diagnostics and Monitoring
Database in Kubernetes: Diagnostics and Monitoring
 
MySQL Database Monitoring: Must, Good and Nice to Have
MySQL Database Monitoring: Must, Good and Nice to HaveMySQL Database Monitoring: Must, Good and Nice to Have
MySQL Database Monitoring: Must, Good and Nice to Have
 
MySQL Cookbook: Recipes for Developers
MySQL Cookbook: Recipes for DevelopersMySQL Cookbook: Recipes for Developers
MySQL Cookbook: Recipes for Developers
 
MySQL Performance for DevOps
MySQL Performance for DevOpsMySQL Performance for DevOps
MySQL Performance for DevOps
 
MySQL Test Framework для поддержки клиентов и верификации багов
MySQL Test Framework для поддержки клиентов и верификации баговMySQL Test Framework для поддержки клиентов и верификации багов
MySQL Test Framework для поддержки клиентов и верификации багов
 
MySQL Cookbook: Recipes for Your Business
MySQL Cookbook: Recipes for Your BusinessMySQL Cookbook: Recipes for Your Business
MySQL Cookbook: Recipes for Your Business
 
Introduction into MySQL Query Tuning for Dev[Op]s
Introduction into MySQL Query Tuning for Dev[Op]sIntroduction into MySQL Query Tuning for Dev[Op]s
Introduction into MySQL Query Tuning for Dev[Op]s
 
Производительность MySQL для DevOps
 Производительность MySQL для DevOps Производительность MySQL для DevOps
Производительность MySQL для DevOps
 
MySQL Performance for DevOps
MySQL Performance for DevOpsMySQL Performance for DevOps
MySQL Performance for DevOps
 
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB ClusterHow to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
 
How to migrate from MySQL to MariaDB without tears
How to migrate from MySQL to MariaDB without tearsHow to migrate from MySQL to MariaDB without tears
How to migrate from MySQL to MariaDB without tears
 
Modern solutions for modern database load: improvements in the latest MariaDB...
Modern solutions for modern database load: improvements in the latest MariaDB...Modern solutions for modern database load: improvements in the latest MariaDB...
Modern solutions for modern database load: improvements in the latest MariaDB...
 
How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaСовременному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
 
How to Avoid Pitfalls in Schema Upgrade with Galera
How to Avoid Pitfalls in Schema Upgrade with GaleraHow to Avoid Pitfalls in Schema Upgrade with Galera
How to Avoid Pitfalls in Schema Upgrade with Galera
 
How Safe is Asynchronous Master-Master Setup?
 How Safe is Asynchronous Master-Master Setup? How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?
 
Introduction to MySQL Query Tuning for Dev[Op]s
Introduction to MySQL Query Tuning for Dev[Op]sIntroduction to MySQL Query Tuning for Dev[Op]s
Introduction to MySQL Query Tuning for Dev[Op]s
 
Billion Goods in Few Categories: How Histograms Save a Life?
Billion Goods in Few Categories: How Histograms Save a Life?Billion Goods in Few Categories: How Histograms Save a Life?
Billion Goods in Few Categories: How Histograms Save a Life?
 
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...
 

MySQL - checklist для новичка в Highload

  • 1. © 2017 Percona1 Света Смирнова, ведущий инженер технической поддержки (Percona) Анастасия Распопина, специалист по маркетингу (Percona) MySQL: чек-лист для новичка в highload Кейсы, списки настроек, must have, полезные ссылки Профессиональный фестиваль «Российские интернет-технологии» (РИТ++), конференция HighLoad Junior 5 июня 2017 г.
  • 2. © 2017 Percona2 Кто мы и откуда? Кратко о нас и нашей компании ▪Света Смирнова • Ведущий инженер службы технической поддержки • 10+ лет работы в поддержке MySQL, автор книги “MySQL Troubleshooting” и UDF-функций для MySQL (дизайн-прототип встроенных JSON-функций).
  • 3. © 2017 Percona3 Кто мы и откуда? Кратко о нас и нашей компании ▪Света Смирнова ▪Анастасия Распопина • Специалист по маркетингу • Работала в GameDev, организовывала HL++, РИТ++, сейчас в Percona Events Team.
  • 4. © 2017 Percona4 Кто мы и откуда? Кратко о нас и нашей компании ▪Света Смирнова, ведущий инженер службы технической поддержки ▪Анастасия Распопина, специалист по маркетингу ▪Компания Percona • Поставщик 100% Open Source ПО для MySQL и MongoDB, а также услуг поддержки, консалтинга и удалённого администрирования для этих СУБД
  • 5. © 2017 Percona5 Что такое highload сейчас? Даём определение высокой нагрузке на 2017 г. ▪Не цифры: предельные нагрузки • Сколько записей в секунду выдержит диск? • Запросов на чтение? • Пользовательских соединений?
  • 6. © 2017 Percona6 Что такое highload сейчас? Даём определение высокой нагрузке на 2017 г. ▪Не цифры: предельные нагрузки ▪Железо имеет значение • t2.micro или “Машины Баз Данных” (WS, 6 июня, 16.00) • Много читаем: память • Много пишем: быстрый диск • Много активных соединений: CPU • Неоптимизированные запросы: CPU
  • 7. © 2017 Percona7 Что такое highload сейчас? Даём определение высокой нагрузке на 2017 г. ▪Не цифры: предельные нагрузки ▪Железо имеет значение ▪Цифры • Стандартные бенчмарки всегда синтетические • Реальность обычно разнообразнее
  • 8. © 2017 Percona8 Что такое highload сейчас? Цифры: рост производительности MySQL https://www.slideshare.net/geirhoydalsvik/whats-new-in-mysql-57
  • 9. © 2017 Percona9 Что такое highload сейчас? Цифры: рост интернета
  • 10. © 2017 Percona10 Что такое highload сейчас? Даём определение высокой нагрузке на 2017 г. ▪Highload • Та нагрузка, с которой СУБД не справляется • Нельзя раз и навсегда оптимизироваться «под highload», это непрерывный процесс
  • 11. © 2017 Percona11 Обзор форков MySQL Oracle MySQL, Percona Server для MySQL, MariaDB, форки внутри компаний
  • 12. © 2017 Percona12 Современные варианты 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 Percona13 Современные варианты MySQL Какие форки MySQL выжили и активно развиваются? ▪MySQL от Oracle ▪Percona Server для MySQL • Полностью совместимая расширенная версия • Около 30 человек (Engineering Team)
  • 14. © 2017 Percona14 Современные варианты MySQL Какие форки MySQL выжили и активно развиваются? ▪MySQL от Oracle ▪Percona Server для MySQL ▪MariaDB • Частично совместимая расширенная версия • Свои: оптимизатор запросов, GTID, движки, ...
  • 15. © 2017 Percona15 Современные варианты MySQL Какие форки выжили и активно развиваются? ▪MySQL от Oracle ▪Percona Server для MySQL ▪MariaDB ▪Форки компаний – открытые и закрытые • Facebook: MyRocks, DocStore, статистика, производительность • Alibaba: Sequence, Backup, SQL, статистика, производительность • Amazon (Amazon Aurora): физическая репликация, производительность, масштабирование, закрытая
  • 16. © 2017 Percona16 Где что загрузить: ссылки ▪MySQL от Oracle • Документация: https://dev.mysql.com/doc/refman/5.7/en/ • Полный список фич для 5.7: http://www.thecompletelistoffeatures.com/
  • 17. © 2017 Percona17 Где что загрузить: ссылки ▪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 Percona18 Где что загрузить: ссылки ▪MySQL от Oracle ▪Percona Server для MySQL ▪MariaDB • Документация: https://mariadb.com/kb/en/ • Foundation: http://mariadb.org/
  • 19. © 2017 Percona19 Где что загрузить: ссылки ▪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 Percona20 Где что загрузить: ссылки ▪MySQL от Oracle ▪Percona Server для MySQL ▪MariaDB ▪Открытые разработки Facebook ▪AliSQL • https://github.com/alibaba/AliSQL
  • 21. © 2017 Percona21 Что стоит хранить в памяти, а что – на диске?
  • 22. © 2017 Percona22 MySQL: что мы храним в памяти ▪Три вида буферов в памяти • Глобальные ▪ InnoDB Buffer Pool: активный набор данных ▪ Query Cache (http://mysqlserverteam.com/mysql-8-0-retiring-support-for-the-query-cache/) • Сессионные ▪ Sort buffer: маленькие! ▪ Всего не более, чем (Свободная память - глобальные) / max_connections • Под операцию ▪ Временные таблицы: может быть создано много!
  • 23. © 2017 Percona23 MySQL: что мы храним на диске ▪MySQL лучше всего работает с данными в памяти ▪Для лучшей скорости • Быстрые диски: SSD, Fusion IO • innodb_io_capacity - рекомендуемое, реальное количество IOPS • innodb_flush_method - O_DIRECT, тестируйте! ▪Скорость или надёжность? • Операция fsync - дорогая • Реже fsync - лучше производительность и ниже надёжность
  • 24. © 2017 Percona24 Почитать про память и диск ▪Оптимизация 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 Percona25 Как правильно кэшировать?
  • 26. © 2017 Percona26 Кэширование в МySQL ▪Полезное кэширование: сервер • binlog_[stmt_]cache_size • table_definition_cache • table_open_cache • table_open_cache_instances - много не всегда хорошо • thread_cache_size
  • 27. © 2017 Percona27 Кэширование в МySQL ▪Полезное кэширование: сервер ▪Полезное кэширование: InnoDB • Buffer Pool: innodb_buffer_pool_size • Log buffer: innodb_log_buffer_size
  • 28. © 2017 Percona28 Кэширование в М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 Percona29 Почитать про кэширование https://dom.as/tech/query-cache-tuner/
  • 30. © 2017 Percona30 Кластеризация, шардинг, репликация – когда и как?
  • 31. © 2017 Percona31 Репликация в МySQL ▪Встроенная ▪Простая в использовании ▪Требует настройки ▪Гибкая
  • 33. © 2017 Percona33 Репликация: highload ▪Мастер • Синхронизация ▪ sync_binlog • 0 - самый быстрый • 1 - самый надёжный • >1 - компромисс между надёжностью и скоростью ▪Слейв • Меньше потоков, чем на мастере • Один relay log на channel
  • 35. © 2017 Percona35 Круговая репликация: highload ▪Те же проблемы, что и на “рекомендуемой” ▪Умножайте на 2 для каждого сервера
  • 38. © 2017 Percona38 Кластеризация в МySQL ▪NDB Cluster • Старейшее кластерное решение • Рабочий набор данных в памяти • Как минимум две копии данных • Специфические требования к приложению • Популярен среди европейских телекомов
  • 39. © 2017 Percona39 Кластеризация в МySQL ▪NDB Cluster ▪Percona XtraDB Cluster, Galera Cluster • Синхронная репликация • Собственный лог изменений ▪ innodb_flush_log_at_trx_commit=2 - безопасно и рекомендуется! • Чтение: масштабируемое • Запись: чем больше серверов в кластере, тем медленнее
  • 40. © 2017 Percona40 Percona XtraDB Cluster
  • 41. © 2017 Percona41 Кластеризация в МySQL ▪NDB Cluster ▪Percona XtraDB Cluster, Galera ▪InnoDB Cluster • Архитектурно то же самое, что и Percona XtraDB Cluster/Galera • Синхронная репликация • Использует бинарный лог • Чтение: масштабируемое • Запись: чем больше серверов в кластере, тем медленнее • Новый продукт
  • 42. © 2017 Percona42 Шардинг в МySQL ▪Встроенного не существует
  • 43. © 2017 Percona43 Шардинг в МySQL ▪Встроенного не существует ▪Shard Query • Независимый продукт на PHP и Gearman • https://github.com/greenlion/swanhart-tools/wiki/Shard-Query-Manual
  • 44. © 2017 Percona44 Шардинг в МySQL ▪Встроенного не существует ▪Shard Query ▪MySQL Fabric • Продукт от Oracle • Новый и, похоже, неподдерживаемый • https://dev.mysql.com/doc/mysql-utilities/1.5/en/fabric.htm
  • 45. © 2017 Percona45 Шардинг в МySQL ▪Встроенного не существует ▪Shard Query ▪MySQL Fabric ▪ProxySQL • Больше, чем шардинг • Proxy, query rewrite, кэширование • Стремительно набирает популярность • https://www.percona.com/blog/2016/08/30/mysql-sharding-with-proxysql/
  • 46. © 2017 Percona46 Полезные ссылки ▪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 Percona47 Какие индексы нужны MySQL?
  • 48. © 2017 Percona48 Индексы MySQL и highload На что влияют неуникальные ключи ▪SELECT • Правильные улучшают скорость выполнения • Если слишком много подходящих ▪ Оптимизатор может дольше “думать” над планом
  • 49. © 2017 Percona49 Индексы MySQL и highload На что влияют неуникальные ключи ▪SELECT ▪INSERT • Замедляют запись • Требуется обновление не только данных, но и индекса
  • 50. © 2017 Percona50 Индексы MySQL и highload На что влияют неуникальные ключи ▪SELECT ▪INSERT ▪UPDATE/DELETE • Замедляют запись • Правильные ускоряют поиск строк, удовлетворяющих WHERE
  • 51. © 2017 Percona51 Индексы MySQL и highload На что влияют неуникальные ключи ▪SELECT ▪INSERT ▪UPDATE/DELETE ▪Внешние ключи • При доступе к одной таблице строка в дочерней/родительской будет заблокирована
  • 52. © 2017 Percona52 Индексы MySQL и highload На что влияют неуникальные ключи ▪SELECT ▪INSERT ▪UPDATE/DELETE ▪Внешние ключи ▪Полнотекстовые индексы • Поддерживаются с первых версий, InnoDB - 5.6+ • Для простых сценариев • У специализированного ПО больше возможностей
  • 53. © 2017 Percona53 Что посмотреть про индексы ▪Мастер-класс "Работа с индексами: лучшие практики 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 Percona54 Как работать с медленными запросами MySQL? Байка: нельзя оптимизировать запросы раз и навсегда
  • 55. © 2017 Percona55 Анализируем медленные запросы ▪Где найти • Slow query log ▪ pt-query-digest
  • 56. © 2017 Percona56 Анализируем медленные запросы ▪Где найти • 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 Percona57 Анализируем медленные запросы ▪Где найти • 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 Percona58 Анализируем медленные запросы ▪Где найти • Slow query log • Performance Schema events_statements_* • sys schema • PMM и другие графические инструменты
  • 59. © 2017 Percona59 Query Analytics в PMM
  • 60. © 2017 Percona60 Анализируем медленные запросы ▪Где найти ▪Как чинить • EXPLAIN • EXPLAIN FORMAT=JSON • INFORMATION_SCHEMA.OPTIMIZER_TRACE • Анализ использования индексов • Статистика ▪ SHOW STATUS LIKE ‘Handler_%’
  • 61. © 2017 Percona61 Что и где почитать ▪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 Percona62 Как настроить MySQL под нагрузку? Байка: про какие опции всегда забывают
  • 63. © 2017 Percona63 Настраиваем 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 Percona64 Настраиваем InnoDB для highload ▪innodb_buffer_pool_size • Чтобы вмещал рабочий набор данных ▪innodb_log_file_size • Как минимум: изменения за час ▪innodb_io_capacity • Реальное количество IOPS ▪innodb_thread_concurrency • Количество процессоров ▪innodb_flush_method
  • 65. © 2017 Percona65 Что почитать про настройку ▪Опции 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 Percona66 Как понять, что «тупит» не MySQL? Байка: не ругай «плохой» MySQL – посмотри, что у тебя за машины
  • 67. © 2017 Percona67 Что ещё может «тормозить»? ▪Другие приложения • Выделенный сервер под базу
  • 68. © 2017 Percona68 Что ещё может «тормозить»? ▪Другие приложения ▪Диск • Network storage ▪ NFS: никогда ▪ SAN: с осторожностью • Не гарантирует точного ответа, записались ли данные • Тестируйте innodb_flush_method • Переносите работу в память • Жертвуйте надёжностью • Покупайте лучшие
  • 69. © 2017 Percona69 Что ещё может «тормозить»? ▪Другие приложения ▪Диск ▪CPU • Агрессивные опции, отвечающие за параллельное выполнение • Лимиты операционной системы
  • 70. © 2017 Percona70 Что ещё может «тормозить»? ▪Другие приложения ▪Диск ▪CPU ▪И всегда проверяйте, даёт ли нагрузку приложение!
  • 71. © 2017 Percona71 Что и где почитать по теме? ▪Linux Performance by Brendan Gregg • http://brendangregg.com/linuxperf.html
  • 73. © 2017 Percona73 P.S. Все материалы Percona о MySQL на русском языке в открытом доступе Собрала Анастасия Распопина
  • 74. © 2017 Percona74 Что ещё посмотреть по MySQL? ▪Анализ производительности и оптимизация MySQL, Пётр Зайцев (Percona) - HighLoad++ 2013 ▪Архитектура приложений с использованием MySQL, Пётр Зайцев (Percona) - HighLoad++ 2014 ▪SSD для вашей базы данных, Пётр Зайцев (Percona) - HighLoad++ 2014
  • 75. © 2017 Percona75 Что ещё посмотреть по MySQL? ▪Troubleshooting MySQL Performance, Света Смирнова (Percona) - LinuxPiter 2015 ▪Ужимай и властвуй: алгоритмы компрессии в базах данных, Пётр Зайцев (Percona) - HighLoad++ 2015 ▪Практическая оптимизация MySQL: измерять, чтобы ускорять, Пётр Зайцев (Percona) - HighLoad++ 2015 ▪Обзор программных решений компании Percona, Пётр Зайцев (Percona) - Технозавтрак 1С-Битрикс 2016
  • 76. © 2017 Percona76 Что ещё посмотреть по 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 Percona77 Что ещё посмотреть по MySQL? ▪Pquery - открытый бесплатный инструмент тестирования Percona, Алексей Бычко (Percona) - HighLoad++ 2016 ▪Эффективная отладка репликации MySQL, Света Смирнова (Percona) - HighLoad++ 2016 ▪СПАСИБО!
  • 78. DATABASE PERFORMANCE MATTERS Database Performance MattersDatabase Performance MattersDatabase Performance MattersDatabase Performance MattersDatabase Performance Matters