SlideShare a Scribd company logo
Mysql  для высоконагруженных систем Метелкин Михаил Геннадьевич, Ведущий  Web- разработчик [email_address]
Архитектура  Mysql
Архитектура  Mysql
Mysql Engines ( характеристики ) MyISAM Блокировка всей таблицы Автоматическая проверка и  востановление таблиц Поддерживает  FULL-text  индексы Отложенная запись данных индексов Компрессия  MyISAM  таблиц
Mysql Engines ( характеристики ) InnoDB Поддержка транзакций Использование механизма  MVCC  Поддержка внешних ключей
Mysql Engines ( характеристики ) Memory Engine ( HEAP ) Хранение данных в памяти Поддержка  Hash  индексов Поддержка только строк фиксированной длины ( CHAR )
Mysql Engines ( характеристики ) Archive Engine Подержка только  SELECT  и  INSERT  запросов Не поддерживает индексов Поддержка блокировки на уровне строки
Нахождение  " узких мест “  производительности системы Определение производительности Транзакций в единицу времени Время отклика Расширяемость Конкурентность Профилирование Полное время выполнения задачи Время выполнения каждого запроса Время открытия каждого соединения к  mysql Время вызова каждого внешнего ресурса (веб-сервисов и т.д.) Вызов потенциально затратных функций Системное  время  CPU
Нахождение  " узких мест “  производительности системы “ Инструменты” для определения производительности а b ( http://httpd.apache.org/docs/2.0/programs/ab.html ) http_load ( http://www.acme.com/software/http_load/ ) JMeter  ( http://jakarta.apache.org/jmeter/ ) mysqlslap ( http://dev.mysql.com/doc/refman/5.1/en/mysqlslap.html ) Sysbench ( http://sysbench.sourceforge.net/ ) Database Test Suite ( http://sourceforge.net/projects/osdldbt/ ) MySQL Benchmark Suite ( http://dev.mysql.com/doc/en/mysql-benchmarks.html/  ) Super Smack ( http://vegan.net/tony/supersmack/ )
Нахождение  &quot; узких мест “  производительности системы Профилирование Логирование запросов  ( general log, slow log  ) .  Конфигурационные настройки  : log =  <file_name> log-slow-queries =  <file_name> long_query_time = 2 log-queries-not-using-indexes log-slow-admin-statements Приложения : mysqldumpslow mysql_slow_log_filter ( http://www.mysqlperformanceblog.com/files/utils/mysql_slow_log_filter  )
Нахождение  &quot; узких мест “  производительности системы “ Инструменты ” для задач профилирования mysql_slow_log_parser ( http://www.mysqlperformanceblog.com/files/utils/mysql_slow_log_parser  ) mysqlsla ( http://hackmysql.com/mysqlsla ) SHOW STATUS mysql> FLUSH STATUS; mysql> SHOW SESSION STATUS LIKE 'Select%';
Нахождение  &quot; узких мест “  производительности системы “ Инструменты ” для задач профилирования SHOW  PROFILE mysql>  SET profiling = 1;
Оптимизация схемы и расстановка индексов Выбор оптимальных типов данных Наименьший из приемлимых типов данных Наиболее простой из возможных Избегайте  Null  по умолчанию Расстановка индексов Изоляция колонок в запросах Наименьшая возможная длина индексов Только необходимые индексы
Оптимизация запросов Выбирайте только необходимое количество строк Всегда прописывайте те поля которые необходимы дл выборки Особенно в запросах использующих  JOIN Правило  “ идеального запроса ” - количество проверенных сервером строк ≈ количеству возвращенных строк Полное сканирование таблиц – высшее зло! Разбивайте очень сложные запросы на несколько составных Производите операции с большими объемами данных частями
Оптимизация запросов Декомпозиция  JOIN’  ов Хранение результатов больших выборок в приложении Проверка использования индексов при запросе Использование  Explain
Репликация Репликация – синхронное / асинхронное копирование   данных с ведущих серверов на ведомые . Решаемые задачи : Распределение данных (географически). Распределение нагрузки ( Load balancing ). Backups Отказоустойчивость Тестирование апдейтов и новых версий  Mysql.
Партицирование Партицирование – разбиение данных таблиц на логические части по выбранным критериям Методы : RANGE  (По диапазону значений) LIST  (По точному списку значений) HASH KEY
Шардинг Шардинг – разделение данных на уровне ресурсов Способы : Вертикальный (Разделение таблиц по серверам) Горизонтальный (Разделение  логических частей данных по серверам)
Вопросы Вопросы ?

More Related Content

PPT
Загрузка, обработка, хранение и отдача статики
PDF
PostgreSQL в высоконагруженных проектах
PDF
Лекция 10. Apache Mahout
PPTX
PowerShell
PPTX
СУБД осень 2012 лекция 9
PDF
Лекция 9. ZooKeeper
PDF
PostgreSQL Streaming Replication
Загрузка, обработка, хранение и отдача статики
PostgreSQL в высоконагруженных проектах
Лекция 10. Apache Mahout
PowerShell
СУБД осень 2012 лекция 9
Лекция 9. ZooKeeper
PostgreSQL Streaming Replication

What's hot (16)

PPTX
Mysql vs postgresql
PPT
Parallelization of tests with SeleniuGrid
PDF
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
PPTX
системы сборок проектов
PPTX
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
ODP
Инструмент для нагрузочного тестирования Tsung (Артём Калантай)
PPTX
Тестирование отклика Web-интерфейса с JMeter и Selenium
PDF
Call of Postgres: Advanced Operations (part 1)
PDF
Streaming replication in practice
PDF
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
PDF
Мастер-класс : Time Profiler - главный инструмент нашего Xcode-ансамбля! / Дм...
PDF
Расширения для PostgreSQL
PPTX
C++ для web с помощью Emscripten
PDF
Scala On Rest
PPTX
PostgreSQL. Стильно. Модно. Молодёжно
PDF
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
Mysql vs postgresql
Parallelization of tests with SeleniuGrid
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
системы сборок проектов
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Инструмент для нагрузочного тестирования Tsung (Артём Калантай)
Тестирование отклика Web-интерфейса с JMeter и Selenium
Call of Postgres: Advanced Operations (part 1)
Streaming replication in practice
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
Мастер-класс : Time Profiler - главный инструмент нашего Xcode-ансамбля! / Дм...
Расширения для PostgreSQL
C++ для web с помощью Emscripten
Scala On Rest
PostgreSQL. Стильно. Модно. Молодёжно
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
Ad

Viewers also liked (20)

PPT
что такое Zabbiбиxа
PPT
не все комментарии одинаково полезны
PPT
Управление проектами в Softline
PPT
Обзор современного состояния области алгоритмов и структур данных
PPTX
Silex. Микрофреймворк для микроприложений
PDF
Learn lean. Технология управления от самураев.
PPT
создание команды тестирования
PPT
как строить небоскрёбы
PPTX
Введение в анализ требований
PPT
Voip-телефония.Unified Communications. Биллинг телеком-услуг
PPT
разработка Mvc приложений на java script
PPT
инструменты веб разработчика
PPT
Axure по для создания прототипов веб-сайтов
PPT
эффективные ретроспективы (доклад)
PPT
Use-case diagram
PPT
Разработка прототипов на Axure
PPT
МАПО Лекция 14 UML Use Case
PPT
Use Cases
PPT
п15 16
PPT
Пишем пользовательские сценарии
что такое Zabbiбиxа
не все комментарии одинаково полезны
Управление проектами в Softline
Обзор современного состояния области алгоритмов и структур данных
Silex. Микрофреймворк для микроприложений
Learn lean. Технология управления от самураев.
создание команды тестирования
как строить небоскрёбы
Введение в анализ требований
Voip-телефония.Unified Communications. Биллинг телеком-услуг
разработка Mvc приложений на java script
инструменты веб разработчика
Axure по для создания прототипов веб-сайтов
эффективные ретроспективы (доклад)
Use-case diagram
Разработка прототипов на Axure
МАПО Лекция 14 UML Use Case
Use Cases
п15 16
Пишем пользовательские сценарии
Ad

Similar to MySQL для высоконагруженных проектов (20)

PDF
Пётр Зайцев, Percona
PPT
поиск узких мест в производительности My sql ботанический определитель. г. ру...
PPT
оптимизация My Sql петр зайцев
PPTX
MySQL Optimization. Russian
PDF
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
PDF
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
PPTX
Query perfomance tuning
PDF
Введение в отладку производительности MySQL приложений
ODP
Innodb Scalability And New Features Hl2008 Rus
PPTX
Оптимизации скорости выполнения запросов
PPTX
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
PDF
Что нужно знать о трёх топовых фичах MySQL
PPTX
СУБД 2013 Лекция №5 "Определение узких мест"
PDF
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
PPTX
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
PPT
рит2007 оптимизация бд бесков доронин
PPT
Database Tuning Method & Technics
PPT
ODP
Scaling Web Sites By Sharding And Replication Hl2008 Rus
PDF
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Пётр Зайцев, Percona
поиск узких мест в производительности My sql ботанический определитель. г. ру...
оптимизация My Sql петр зайцев
MySQL Optimization. Russian
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Query perfomance tuning
Введение в отладку производительности MySQL приложений
Innodb Scalability And New Features Hl2008 Rus
Оптимизации скорости выполнения запросов
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
Что нужно знать о трёх топовых фичах MySQL
СУБД 2013 Лекция №5 "Определение узких мест"
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
рит2007 оптимизация бд бесков доронин
Database Tuning Method & Technics
Scaling Web Sites By Sharding And Replication Hl2008 Rus
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona

MySQL для высоконагруженных проектов

  • 1. Mysql для высоконагруженных систем Метелкин Михаил Геннадьевич, Ведущий Web- разработчик [email_address]
  • 4. Mysql Engines ( характеристики ) MyISAM Блокировка всей таблицы Автоматическая проверка и востановление таблиц Поддерживает FULL-text индексы Отложенная запись данных индексов Компрессия MyISAM таблиц
  • 5. Mysql Engines ( характеристики ) InnoDB Поддержка транзакций Использование механизма MVCC Поддержка внешних ключей
  • 6. Mysql Engines ( характеристики ) Memory Engine ( HEAP ) Хранение данных в памяти Поддержка Hash индексов Поддержка только строк фиксированной длины ( CHAR )
  • 7. Mysql Engines ( характеристики ) Archive Engine Подержка только SELECT и INSERT запросов Не поддерживает индексов Поддержка блокировки на уровне строки
  • 8. Нахождение &quot; узких мест “ производительности системы Определение производительности Транзакций в единицу времени Время отклика Расширяемость Конкурентность Профилирование Полное время выполнения задачи Время выполнения каждого запроса Время открытия каждого соединения к mysql Время вызова каждого внешнего ресурса (веб-сервисов и т.д.) Вызов потенциально затратных функций Системное время CPU
  • 9. Нахождение &quot; узких мест “ производительности системы “ Инструменты” для определения производительности а b ( http://httpd.apache.org/docs/2.0/programs/ab.html ) http_load ( http://www.acme.com/software/http_load/ ) JMeter ( http://jakarta.apache.org/jmeter/ ) mysqlslap ( http://dev.mysql.com/doc/refman/5.1/en/mysqlslap.html ) Sysbench ( http://sysbench.sourceforge.net/ ) Database Test Suite ( http://sourceforge.net/projects/osdldbt/ ) MySQL Benchmark Suite ( http://dev.mysql.com/doc/en/mysql-benchmarks.html/ ) Super Smack ( http://vegan.net/tony/supersmack/ )
  • 10. Нахождение &quot; узких мест “ производительности системы Профилирование Логирование запросов ( general log, slow log ) . Конфигурационные настройки : log = <file_name> log-slow-queries = <file_name> long_query_time = 2 log-queries-not-using-indexes log-slow-admin-statements Приложения : mysqldumpslow mysql_slow_log_filter ( http://www.mysqlperformanceblog.com/files/utils/mysql_slow_log_filter )
  • 11. Нахождение &quot; узких мест “ производительности системы “ Инструменты ” для задач профилирования mysql_slow_log_parser ( http://www.mysqlperformanceblog.com/files/utils/mysql_slow_log_parser ) mysqlsla ( http://hackmysql.com/mysqlsla ) SHOW STATUS mysql> FLUSH STATUS; mysql> SHOW SESSION STATUS LIKE 'Select%';
  • 12. Нахождение &quot; узких мест “ производительности системы “ Инструменты ” для задач профилирования SHOW PROFILE mysql> SET profiling = 1;
  • 13. Оптимизация схемы и расстановка индексов Выбор оптимальных типов данных Наименьший из приемлимых типов данных Наиболее простой из возможных Избегайте Null по умолчанию Расстановка индексов Изоляция колонок в запросах Наименьшая возможная длина индексов Только необходимые индексы
  • 14. Оптимизация запросов Выбирайте только необходимое количество строк Всегда прописывайте те поля которые необходимы дл выборки Особенно в запросах использующих JOIN Правило “ идеального запроса ” - количество проверенных сервером строк ≈ количеству возвращенных строк Полное сканирование таблиц – высшее зло! Разбивайте очень сложные запросы на несколько составных Производите операции с большими объемами данных частями
  • 15. Оптимизация запросов Декомпозиция JOIN’ ов Хранение результатов больших выборок в приложении Проверка использования индексов при запросе Использование Explain
  • 16. Репликация Репликация – синхронное / асинхронное копирование данных с ведущих серверов на ведомые . Решаемые задачи : Распределение данных (географически). Распределение нагрузки ( Load balancing ). Backups Отказоустойчивость Тестирование апдейтов и новых версий Mysql.
  • 17. Партицирование Партицирование – разбиение данных таблиц на логические части по выбранным критериям Методы : RANGE (По диапазону значений) LIST (По точному списку значений) HASH KEY
  • 18. Шардинг Шардинг – разделение данных на уровне ресурсов Способы : Вертикальный (Разделение таблиц по серверам) Горизонтальный (Разделение логических частей данных по серверам)