Upload
softline
View
2.534
Download
8
Embed Size (px)
DESCRIPTION
Citation preview
Mysql для высоконагруженных
систем
Метелкин Михаил Геннадьевич,Ведущий Web-разработчик[email protected]
SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия
Архитектура Mysql
SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия
Архитектура Mysql
SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия
Mysql Engines (характеристики)
MyISAM1.Блокировка всей таблицы2.Автоматическая проверка и востановление
таблиц3.Поддерживает FULL-text индексы4.Отложенная запись данных индексов5.Компрессия MyISAM таблиц
SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия
Mysql Engines (характеристики)
InnoDB1.Поддержка транзакций2.Использование механизма MVCC 3.Поддержка внешних ключей
SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия
Mysql Engines (характеристики)
Memory Engine(HEAP)1.Хранение данных в памяти2.Поддержка Hash индексов3.Поддержка только строк фиксированной
длины (CHAR)
SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия
Mysql Engines (характеристики)
Archive Engine1.Подержка только SELECT и INSERT запросов2.Не поддерживает индексов3.Поддержка блокировки на уровне строки
SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия
Нахождение "узких мест“ производительности системы1. Определение производительности
1. Транзакций в единицу времени2. Время отклика3. Расширяемость4. Конкурентность
2. Профилирование1. Полное время выполнения задачи2. Время выполнения каждого запроса3. Время открытия каждого соединения к mysql4. Время вызова каждого внешнего ресурса (веб-
сервисов и т.д.)5. Вызов потенциально затратных функций6. Системное время CPU
SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия
Нахождение "узких мест“ производительности системы
“Инструменты” для определения производительности
1. аb (http://httpd.apache.org/docs/2.0/programs/ab.html)2. http_load (http://www.acme.com/software/http_load/)3. JMeter (http://jakarta.apache.org/jmeter/)4. mysqlslap (
http://dev.mysql.com/doc/refman/5.1/en/mysqlslap.html)5. Sysbench (http://sysbench.sourceforge.net/)6. Database Test Suite
(http://sourceforge.net/projects/osdldbt/)7. MySQL Benchmark Suite
(http://dev.mysql.com/doc/en/mysql-benchmarks.html/ )8. Super Smack (http://vegan.net/tony/supersmack/)
SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия
Нахождение "узких мест“ производительности системы
Профилирование
1. Логирование запросов (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 )
SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия
Нахождение "узких мест“ производительности системы
“Инструменты”для задач профилированияmysql_slow_log_parser
(http://www.mysqlperformanceblog.com/files/utils/mysql_slow_log_parser ) mysqlsla (http://hackmysql.com/mysqlsla)
2. SHOW STATUSmysql> FLUSH STATUS;
mysql> SHOW SESSION STATUS LIKE 'Select%';
SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия
Нахождение "узких мест“ производительности системы
“Инструменты”для задач профилирования3. SHOW PROFILE
mysql> SET profiling = 1;
SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия
Оптимизация схемы и расстановка индексов
1. Выбор оптимальных типов данных1. Наименьший из приемлимых типов данных2. Наиболее простой из возможных3. Избегайте Null по умолчанию
2. Расстановка индексов1. Изоляция колонок в запросах2. Наименьшая возможная длина индексов3. Только необходимые индексы
SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия
Оптимизация запросов
1. Выбирайте только необходимое количество строк
2. Всегда прописывайте те поля которые необходимы дл выборки
3. Особенно в запросах использующих JOIN4. Правило “идеального запроса”- количество
проверенных сервером строк ≈ количеству возвращенных строк
5. Полное сканирование таблиц – высшее зло!6. Разбивайте очень сложные запросы на
несколько составных7. Производите операции с большими
объемами данных частями
SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия
Оптимизация запросов
8. Декомпозиция JOIN’ ов9. Хранение результатов больших выборок в
приложении10.Проверка использования индексов при
запросе11.Использование Explain
SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия
Репликация
Репликация – синхронное/асинхронное копирование данных с ведущих серверов на ведомые.
Решаемые задачи:
1. Распределение данных (географически).2. Распределение нагрузки (Load balancing).3. Backups4. Отказоустойчивость5. Тестирование апдейтов и новых версий
Mysql.
SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия
Партицирование
Партицирование – разбиение данных таблиц на логические части по выбранным критериям
Методы:1. RANGE (По диапазону значений)2. LIST (По точному списку значений)3. HASH4. KEY
SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия
Шардинг
Шардинг – разделение данных на уровне ресурсов
Способы:1. Вертикальный (Разделение таблиц по
серверам)2. Горизонтальный (Разделение логических
частей данных по серверам)
SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия
Вопросы
Вопросы?