SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
Анализ
производительности и
оптимизация приложений
на MySQL
Петр Зайцев
CEO Percona
29 октября 2013г
О презентации
• Краткий обзор
• Более детально - на VIP-дне.

• Большая часть сказанного относится к
большинству баз данных
• SQL и NoSQL.
Моя цель
• Чтобы вы знали, когда надо оптимизировать
базы данных.
• Чтобы вы знали, когда оптимизировать базы
данных.
• Чтобы вы в принципе знали, что в них можно
оптимизировать.
Производительность базы
данных не важна для
пользователя!
• Важна производительность приложения.
О чем мечтает пользователь?
• О том, чтобы приложение быстро
откликалось на попытки пользователя
взаимодействовать с ним.
• Любого взаимодействия.
• Всегда.
Что значит «быстро»?
• Все зависит от приложения и операции.
• Определяется Бизнесом.
• Ожидания по скорости ответа есть всегда.
Не производительностью
единой…
• Высокая доступность
• Безопасность
• Легкость и скорость разработки
• Качество
• ….
«Виновата» ли база данных ?
• «Почему вы считаете, что тормозит именно
база данных?»
• «Потому что предыдущие 3 раза тормозила
именно база данных».
• Из почти анекдота
А как же знать точно?
• Инструментарий
• Самописный
• NewRelic, AppDynamics и т.д.
• Важно знать, из чего именно формируется время
ответа.

• Мониторинг и анализ корреляций
• когда инструментарий не доступен.
Масштаб
• На пустой базе данных для одного
пользователя любые запросы «летают».
• Проблемы возникают с масштабом.
• Число пользователей и их активность
• Объем данных
• Сложность запросов
Что делать, если база данных
не справляется ?
• Не все проблемы базы данных решаются
непосредственно на уровне базы данных.
Где решаются проблемы
производительности?
• Архитектура приложения
• Правильный выбор технологий
• «Железо»
• Операционная система и ее конфигурация
• Схема базы данных и запросы
• Конфигурация базы данных
Архитектура приложения
• Наиболее важно!
• Обычно эволюционирует со временем.
• Меняется масштаб.
• Меняются технологии.
Основные шаблоны
архитектуры
• Репликация
• Разделение данных на множество узлов
• Кэширование
• Избыточное хранение
• Пре-генерация данных
• Буферизация
Параллельность
• Для любой системы есть оптимальная
параллельность.
• При превышении снижается эффективность.
Ограничение для стабильности
• Часто хорошо ограничить «параллельность»
за счет использования очереди.
Выбор технологий
• MySQL - всего лишь один из выборов.
• Можно использовать несколько технологий
одновременно.
• Примеры:
• Memcache, Redis, Tarantool
• Sphinx, Solr, ElasticSearch
• MongoDB,Cassandra,Couchbase
• Hadoop
«Железо» может многое
• MySQL показывает более 200 тыс. простых
запросов/сек на современном «железе».
• Может «перелопатить» более 10 млн. строк/cек.
• Обновить или вставить более 200 тыс. строк.
• Можем получить 64+ потоков на сервере.
• Более 1 TБ оперативной памяти.
• Flash-диски дают 100тыс+ записей/сек.
Основное по выбору
«железа»
• Процессоры для MySQL

• Обычно быстрота ядер важнее их числа.

• Быстрая сеть – очень важно время отклика и
стабильность.
• Диски
• Flash/SSD – отлично
• RAID с кэшем и батарейкой - хорошо
Память
• Больше памяти – меньше нагрузки на диски.
• Часто используемые данные должны «влезать» в
память.
Операционная система
• Linux – наиболее типичный выбор
• Серверный дистрибутив
• Разумно новая версия для нового железа
• Масштабируемая файловая система
• XFS или EXT4 на Linux

• Более поднобно в Webinar
• http://bit.ly/1imDk3f
Версии MySQL
• Каждая новая версия масштабируется все
лучше
• Правда, часто за счет производительности при
одном пользователе
Следите за стабильностью
• Важно для реальных систем
• Редко увидите в маркетинговых материалах
Конфигурация базы данных
• Конфигурировать MySQL Нужно

• Умолчания не предназначены для больших серверов
• Наиболее важно – использование памяти
• innodb_buffer_pool_size
• innodb_log_file_size=256M
• innodb_fush_method=O_DIRECT
• innodb_flush_log_at_trx_commit
• innodb_file_per_table=1

• Подробно

• http://bit.ly/1fuP0SZ
Запросы и структура баз
данных
• Думайте о проблемах, а не просто о запросе
• На них нужно смотреть вместе
• Важно понимать, как база данных исполняет запрос
• Ваш друг в MySQL – EXPLAIN
• http://dev.mysql.com/doc/refman/5.6/en/usingexplain.html

• Не все сводится к индексам, но с них полезно
начинать
• http://bit.ly/NvQUpO
Вместо заключения
• Знайте, какая производительность вам нужна.
• Понимайте, во что «упирается» система.
• Знайте о вариантах оптимизации.
• Оптимизируйте то, что разумно, и когда это
разумно.
Спасибо!
Зайцев Петр
pz@percona.com
@PeterZaitsev
http://www.linkedin.com/in/peterzaitsev
http://www.percona.com

Weitere ähnliche Inhalte

Was ist angesagt?

Не все базы данных одинаково полезны
Не все базы данных одинаково полезныНе все базы данных одинаково полезны
Не все базы данных одинаково полезны
Sergey Xek
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
Ontico
 
Scaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusScaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 Rus
Ontico
 
Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...
Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...
Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...
Lviv Startup Club
 
От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...
От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...
От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...
Ontico
 
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Ontico
 

Was ist angesagt? (20)

Выступление Сергея Аверина, Badoo, на High Performance Conference
Выступление Сергея Аверина, Badoo, на High Performance ConferenceВыступление Сергея Аверина, Badoo, на High Performance Conference
Выступление Сергея Аверина, Badoo, на High Performance Conference
 
Не все базы данных одинаково полезны
Не все базы данных одинаково полезныНе все базы данных одинаково полезны
Не все базы данных одинаково полезны
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
 
Scaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusScaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 Rus
 
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
 
Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"
 
HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб
HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный вебHappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб
HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб
 
Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...
Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...
Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...
 
How to optimize Magento
How to optimize MagentoHow to optimize Magento
How to optimize Magento
 
От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...
От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...
От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...
 
Nazapad 7. Оптимизация скорости загрузки и перелинковки
Nazapad 7. Оптимизация скорости загрузки и перелинковкиNazapad 7. Оптимизация скорости загрузки и перелинковки
Nazapad 7. Оптимизация скорости загрузки и перелинковки
 
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
 
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
 
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
 
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
 
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
 
NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...
 
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
 
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
Ускоряем Wordpress: кеширование, CDN, Varnish CacheУскоряем Wordpress: кеширование, CDN, Varnish Cache
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
 
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
 

Andere mochten auch

Cергей Голубчик, Monty Program AB
Cергей Голубчик, Monty Program ABCергей Голубчик, Monty Program AB
Cергей Голубчик, Monty Program AB
Ontico
 
Continuous Deployment (in Russian)
Continuous Deployment  (in Russian)Continuous Deployment  (in Russian)
Continuous Deployment (in Russian)
Smartling
 
Continuous deployment Smartling event
Continuous deployment Smartling eventContinuous deployment Smartling event
Continuous deployment Smartling event
Viktoriya Pridatko
 
Zabbix Rootconf2009
Zabbix Rootconf2009Zabbix Rootconf2009
Zabbix Rootconf2009
Liudmila Li
 

Andere mochten auch (12)

Cергей Голубчик, Monty Program AB
Cергей Голубчик, Monty Program ABCергей Голубчик, Monty Program AB
Cергей Голубчик, Monty Program AB
 
CI: Автоматизация сборки, развёртывания и тестирования
CI: Автоматизация сборки, развёртывания и тестированияCI: Автоматизация сборки, развёртывания и тестирования
CI: Автоматизация сборки, развёртывания и тестирования
 
Continuous Deployment (in Russian)
Continuous Deployment  (in Russian)Continuous Deployment  (in Russian)
Continuous Deployment (in Russian)
 
Continuous deployment Smartling event
Continuous deployment Smartling eventContinuous deployment Smartling event
Continuous deployment Smartling event
 
Zabbix Rootconf2009
Zabbix Rootconf2009Zabbix Rootconf2009
Zabbix Rootconf2009
 
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft AzureJelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
 
переезд мониторинга
переезд мониторингапереезд мониторинга
переезд мониторинга
 
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
 
Grafana zabbix
Grafana zabbixGrafana zabbix
Grafana zabbix
 
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
 
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
 
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)
 

Ähnlich wie Пётр Зайцев, Percona

Не все базы данных одинаково полезны
Не все базы данных одинаково полезныНе все базы данных одинаково полезны
Не все базы данных одинаково полезны
Sergey Xek
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
Ontico
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)
Ontico
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)
Ontico
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
Sergey Xek
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
Alex Chistyakov
 
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Badoo Development
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
Sergey Xek
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
Alex Chistyakov
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Ontico
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012
Alex Chistyakov
 

Ähnlich wie Пётр Зайцев, Percona (20)

High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rus
 
Не все базы данных одинаково полезны
Не все базы данных одинаково полезныНе все базы данных одинаково полезны
Не все базы данных одинаково полезны
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного Хецнера
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
 
Где сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchГде сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearch
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
 
РИФ 2016, Tarantool – кейсы использования
РИФ 2016, Tarantool – кейсы использованияРИФ 2016, Tarantool – кейсы использования
РИФ 2016, Tarantool – кейсы использования
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
 
Open source субд глазами обычного программиста
Open source субд глазами обычного программистаOpen source субд глазами обычного программиста
Open source субд глазами обычного программиста
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012
 

Mehr von Ontico

Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 

Mehr von Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Пётр Зайцев, Percona

  • 1. Анализ производительности и оптимизация приложений на MySQL Петр Зайцев CEO Percona 29 октября 2013г
  • 2. О презентации • Краткий обзор • Более детально - на VIP-дне. • Большая часть сказанного относится к большинству баз данных • SQL и NoSQL.
  • 3. Моя цель • Чтобы вы знали, когда надо оптимизировать базы данных. • Чтобы вы знали, когда оптимизировать базы данных. • Чтобы вы в принципе знали, что в них можно оптимизировать.
  • 4. Производительность базы данных не важна для пользователя! • Важна производительность приложения.
  • 5. О чем мечтает пользователь? • О том, чтобы приложение быстро откликалось на попытки пользователя взаимодействовать с ним. • Любого взаимодействия. • Всегда.
  • 6. Что значит «быстро»? • Все зависит от приложения и операции. • Определяется Бизнесом. • Ожидания по скорости ответа есть всегда.
  • 7. Не производительностью единой… • Высокая доступность • Безопасность • Легкость и скорость разработки • Качество • ….
  • 8. «Виновата» ли база данных ? • «Почему вы считаете, что тормозит именно база данных?» • «Потому что предыдущие 3 раза тормозила именно база данных». • Из почти анекдота
  • 9. А как же знать точно? • Инструментарий • Самописный • NewRelic, AppDynamics и т.д. • Важно знать, из чего именно формируется время ответа. • Мониторинг и анализ корреляций • когда инструментарий не доступен.
  • 10. Масштаб • На пустой базе данных для одного пользователя любые запросы «летают». • Проблемы возникают с масштабом. • Число пользователей и их активность • Объем данных • Сложность запросов
  • 11. Что делать, если база данных не справляется ? • Не все проблемы базы данных решаются непосредственно на уровне базы данных.
  • 12. Где решаются проблемы производительности? • Архитектура приложения • Правильный выбор технологий • «Железо» • Операционная система и ее конфигурация • Схема базы данных и запросы • Конфигурация базы данных
  • 13. Архитектура приложения • Наиболее важно! • Обычно эволюционирует со временем. • Меняется масштаб. • Меняются технологии.
  • 14. Основные шаблоны архитектуры • Репликация • Разделение данных на множество узлов • Кэширование • Избыточное хранение • Пре-генерация данных • Буферизация
  • 15. Параллельность • Для любой системы есть оптимальная параллельность. • При превышении снижается эффективность.
  • 16. Ограничение для стабильности • Часто хорошо ограничить «параллельность» за счет использования очереди.
  • 17. Выбор технологий • MySQL - всего лишь один из выборов. • Можно использовать несколько технологий одновременно. • Примеры: • Memcache, Redis, Tarantool • Sphinx, Solr, ElasticSearch • MongoDB,Cassandra,Couchbase • Hadoop
  • 18. «Железо» может многое • MySQL показывает более 200 тыс. простых запросов/сек на современном «железе». • Может «перелопатить» более 10 млн. строк/cек. • Обновить или вставить более 200 тыс. строк. • Можем получить 64+ потоков на сервере. • Более 1 TБ оперативной памяти. • Flash-диски дают 100тыс+ записей/сек.
  • 19. Основное по выбору «железа» • Процессоры для MySQL • Обычно быстрота ядер важнее их числа. • Быстрая сеть – очень важно время отклика и стабильность. • Диски • Flash/SSD – отлично • RAID с кэшем и батарейкой - хорошо
  • 20. Память • Больше памяти – меньше нагрузки на диски. • Часто используемые данные должны «влезать» в память.
  • 21. Операционная система • Linux – наиболее типичный выбор • Серверный дистрибутив • Разумно новая версия для нового железа • Масштабируемая файловая система • XFS или EXT4 на Linux • Более поднобно в Webinar • http://bit.ly/1imDk3f
  • 22. Версии MySQL • Каждая новая версия масштабируется все лучше • Правда, часто за счет производительности при одном пользователе
  • 23. Следите за стабильностью • Важно для реальных систем • Редко увидите в маркетинговых материалах
  • 24. Конфигурация базы данных • Конфигурировать MySQL Нужно • Умолчания не предназначены для больших серверов • Наиболее важно – использование памяти • innodb_buffer_pool_size • innodb_log_file_size=256M • innodb_fush_method=O_DIRECT • innodb_flush_log_at_trx_commit • innodb_file_per_table=1 • Подробно • http://bit.ly/1fuP0SZ
  • 25. Запросы и структура баз данных • Думайте о проблемах, а не просто о запросе • На них нужно смотреть вместе • Важно понимать, как база данных исполняет запрос • Ваш друг в MySQL – EXPLAIN • http://dev.mysql.com/doc/refman/5.6/en/usingexplain.html • Не все сводится к индексам, но с них полезно начинать • http://bit.ly/NvQUpO
  • 26. Вместо заключения • Знайте, какая производительность вам нужна. • Понимайте, во что «упирается» система. • Знайте о вариантах оптимизации. • Оптимизируйте то, что разумно, и когда это разумно.