Сегодня рассмотрим интересное выступление Светы Смирновой из Percona.
Доклад получился несколько скомканный, но интересные моменты и полезная информация присутствуют.
Тезисы, которые запомнились:
- Понятие "хайлоад" всегда относительно и применимо только к конкретному приложению/проекту
- Если основная нагрузка на MySQL чтение - берем сервер с большим объемом памяти, чтобы как можно больше данных помещалось в ОП
- Если основная нагрузка на MySQL запись - берем сервер с быстрыми дисками (SSD)
- Если много соединений (connections) - делаем упор на CPU
- Если очень много неоптимизированных запросов - делаем упор на диск и CPU
- MySQL версии 5.7 быстрее версии 5.6 в 3 раза, быстрее 5.5 в 6 раз
- Нельзя один раз оптимизировать проект под хайлоад - это постоянный процесс
- Сотни человек в Oracle занимаются разработкой и поддержкой MySQL (в Percona 30 разработчиков)
- MariaDB - отдельный продукт, частично совместимый с MySQL. Имеет свой оптимизатор запросов, свой GTID, Column Store
- Amazon Aurora - закрытый форк MySQL от Amazon
- Для хранения информации в памяти в MySQL есть три типа буферов:
- innodb_buffer_poll - хранит активные данные
- sort_buffer - сессионные буфера
- буферы под конкретную операцию (создание временных таблиц и т.д.
- В MySQL 8.0 выпилили query cache (!)
- С внешними ключами, при доступе к одной таблице строка в родительской/дочерней - блокируется
- pt-query-digest - утилита для анализа логов MySQL
- EXPLAIN format=JSON - выдает больше полезной информации о плане запроса
- http://www.thecompletelistoffeatures.com/ - полный список новых возможностей MySQL 5.7