Mysql для высоконагруженных систем Метелкин Михаил Геннадьевич, Ведущий Web-разработчик
SOFTWARE SERVICES EDUCATION CLOUD Россия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия Архитектура Mysql
SOFTWARE SERVICES EDUCATION CLOUD Россия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия Архитектура Mysql
SOFTWARE SERVICES EDUCATION CLOUD Россия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия Mysql Engines (характеристики) MyISAM 1. Блокировка всей таблицы 2. Автоматическая проверка и восстановление таблиц 3. Поддерживает FULL-text индексы 4. Отложенная запись данных индексов 5. Компрессия MyISAM таблиц
SOFTWARE SERVICES EDUCATION CLOUD Россия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия Mysql Engines (характеристики) InnoDB 1. Поддержка транзакций 2. Использование механизма MVCC 3. Поддержка внешних ключей
SOFTWARE SERVICES EDUCATION CLOUD Россия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия Mysql Engines (характеристики) Memory Engine(HEAP) 1. Хранение данных в памяти 2. Поддержка Hash индексов 3. Поддержка только строк фиксированной длины (CHAR)
SOFTWARE SERVICES EDUCATION CLOUD Россия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия Mysql Engines (характеристики) Archive Engine 1. Подержка только SELECT и INSERT запросов 2. Не поддерживает индексов 3. Поддержка блокировки на уровне строки
SOFTWARE SERVICES EDUCATION CLOUD Россия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия Нахождение "узких мест производительности системы 1. Определение производительности 1. Транзакций в единицу времени 2. Время отклика 3. Расширяемость 4. Конкурентность 2. Профилирование 1. Полное время выполнения задачи 2. Время выполнения каждого запроса 3. Время открытия каждого соединения к mysql 4. Время вызова каждого внешнего ресурса (веб-сервисов и т.д.) 5. Вызов потенциально затратных функций 6. Системное время CPU
SOFTWARE SERVICES EDUCATION CLOUD Россия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия Нахождение "узких мест производительности системы Инструменты для определения производительности 1. abb ( 2.http_load ( 3. JMeter ( 4. mysqlslap ( 5. Sysbench ( 6. Database Test Suite ( 7. MySQL Benchmark Suite ( benchmarks.html/ ) benchmarks.html/ 8. Super Smack (
SOFTWARE SERVICES EDUCATION CLOUD Россия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия Нахождение "узких мест производительности системы Профилирование 1. Логирование запросов (general log, slow log ). Конфигурационные настройки : log = log-slow-queries = long_query_time = 2 log-queries-not-using-indexes log-slow-admin-statements Приложения: mysqldumpslow mysql_slow_log_filter ( )
SOFTWARE SERVICES EDUCATION CLOUD Россия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия Нахождение "узких мест производительности системы Инструментыдля задач профилирования mysql_slow_log_parser ( ) mysqlsla ( SHOW STATUS mysql> 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. Особенно в запросах использующих JOIN 4. Правило идеального запроса- количество проверенных сервером строк количеству возвращенных строк 5. Полное сканирование таблиц – высшее зло! 6. Разбивайте очень сложные запросы на несколько составных 7. Производите операции с большими объемами данных частями
SOFTWARE SERVICES EDUCATION CLOUD Россия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия Оптимизация запросов 8. Декомпозиция JOIN ов 9. Хранение результатов больших выборок в приложении 10. Проверка использования индексов при запросе 11. Использование Explain
SOFTWARE SERVICES EDUCATION CLOUD Россия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия Репликация Репликация – синхронное/асинхронное копирование данных с ведущих серверов на ведомые. Решаемые задачи: 1. Распределение данных (географически). 2. Распределение нагрузки (Load balancing). 3. Backups 4. Отказоустойчивость 5. Тестирование апдейтов и новых версий Mysql.
SOFTWARE SERVICES EDUCATION CLOUD Россия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия Партицирование Партицирование – разбиение данных таблиц на логические части по выбранным критериям Методы : 1. RANGE (По диапазону значений) 2. LIST (По точному списку значений) 3. HASH 4.KEY
SOFTWARE SERVICES EDUCATION CLOUD Россия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия Шардинг Шардинг – разделение данных на уровне ресурсов Способы : 1. Вертикальный (Разделение таблиц по серверам) 2. Горизонтальный (Разделение логических частей данных по серверам)
SOFTWARE SERVICES EDUCATION CLOUD Россия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия Вопросы Вопросы?