'

Mysql для высоконагруженных систем

Понравилась презентация – покажи это...





Слайд 0

Mysql для высоконагруженных систем Метелкин Михаил Геннадьевич, Ведущий Web-разработчик mihail.metelkin@softline.ru


Слайд 1

Архитектура Mysql


Слайд 2

Архитектура Mysql


Слайд 3

Mysql Engines (характеристики) MyISAM Блокировка всей таблицы Автоматическая проверка и востановление таблиц Поддерживает FULL-text индексы Отложенная запись данных индексов Компрессия MyISAM таблиц


Слайд 4

Mysql Engines (характеристики) InnoDB Поддержка транзакций Использование механизма MVCC Поддержка внешних ключей


Слайд 5

Mysql Engines (характеристики) Memory Engine(HEAP) Хранение данных в памяти Поддержка Hash индексов Поддержка только строк фиксированной длины (CHAR)


Слайд 6

Mysql Engines (характеристики) Archive Engine Подержка только SELECT и INSERT запросов Не поддерживает индексов Поддержка блокировки на уровне строки


Слайд 7

Нахождение "узких мест“ производительности системы Определение производительности Транзакций в единицу времени Время отклика Расширяемость Конкурентность Профилирование Полное время выполнения задачи Время выполнения каждого запроса Время открытия каждого соединения к mysql Время вызова каждого внешнего ресурса (веб-сервисов и т.д.) Вызов потенциально затратных функций Системное время CPU


Слайд 8

Нахождение "узких мест“ производительности системы “Инструменты” для определения производительности а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/)


Слайд 9

Нахождение "узких мест“ производительности системы Профилирование Логирование запросов (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 )


Слайд 10

Нахождение "узких мест“ производительности системы “Инструменты”для задач профилирования 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%';


Слайд 11

Нахождение "узких мест“ производительности системы “Инструменты”для задач профилирования SHOW PROFILE mysql> SET profiling = 1;


Слайд 12

Оптимизация схемы и расстановка индексов Выбор оптимальных типов данных Наименьший из приемлимых типов данных Наиболее простой из возможных Избегайте Null по умолчанию Расстановка индексов Изоляция колонок в запросах Наименьшая возможная длина индексов Только необходимые индексы


Слайд 13

Оптимизация запросов Выбирайте только необходимое количество строк Всегда прописывайте те поля которые необходимы дл выборки Особенно в запросах использующих JOIN Правило “идеального запроса”- количество проверенных сервером строк ? количеству возвращенных строк Полное сканирование таблиц – высшее зло! Разбивайте очень сложные запросы на несколько составных Производите операции с большими объемами данных частями


Слайд 14

Оптимизация запросов Декомпозиция JOIN’ ов Хранение результатов больших выборок в приложении Проверка использования индексов при запросе Использование Explain


Слайд 15

Репликация Репликация – синхронное/асинхронное копирование данных с ведущих серверов на ведомые. Решаемые задачи: Распределение данных (географически). Распределение нагрузки (Load balancing). Backups Отказоустойчивость Тестирование апдейтов и новых версий Mysql.


Слайд 16

Партицирование Партицирование – разбиение данных таблиц на логические части по выбранным критериям Методы: RANGE (По диапазону значений) LIST (По точному списку значений) HASH KEY


Слайд 17

Шардинг Шардинг – разделение данных на уровне ресурсов Способы: Вертикальный (Разделение таблиц по серверам) Горизонтальный (Разделение логических частей данных по серверам)


Слайд 18

Вопросы Вопросы?


×

HTML:





Ссылка: