Оптимизация MySQL Петр Зайцев Директор, Percona Ltd. pz@mysqlperformanceblog.com

Презентация:



Advertisements
Похожие презентации
Распределенная Архитектура LAMP приложений Петр Зайцев Директор, Percona Ltd.
Advertisements

Экспертиза производительности Типовые ошибки разработчиков Шаромов Денис руководитель отдела техподдержки «1С-Битрикс»
Mysql для высоконагруженных систем Метелкин Михаил Геннадьевич, Ведущий Web-разработчик
Как улучшить производительность проекта за три шага Шаромов Денис руководитель отдела техподдержки.
1.Доступ к словарю базы данных 1.v$ 2.dba_ 3.all_ 4.user_ 2.Просмотр системных view cистемные view - dict (dictionary) столбцы системных view – dict_columns.
Поддержка кластерных решений и разделения модулей на разные базы данных Максим, Смирнов программист.
Особенности использования TimesTen In-Memory Database в высоконагруженной среде Михаил Гранкин, QIWI.
Интернет-магазины, высокие нагрузки, синхронизации бизнес- приложений с веб-системой Александр Сербул Руководитель направления контроля качества интеграции.
Администрирование и безопасность MySQL. Создание и удаление пользователей Под учетной записью пользователя MySQL подразумевается строка в таблице user.
Эффективный полнотекстовый поиск по базам данных Андрей Аксенов, Петр Зайцев Percona Ltd. shodan (at) shodan.ru.
Генерация скрипта создания базы данных с учетом зависимостей Автор : Максим Масунов, 545 группа Санкт - Петербургский государственный университет Математико.
Партнеры конференции: Конференция проводится при поддержке дистрибуторов Citrix в России: ОЛЛИ, Ланит Платиновые спонсоры: Оптимизация доставки приложений.
Разработка многопользовательских онлайн игр. Архитектура Dozory.ru и Chernovik-online.ru Лекция 3.
Соколова В. В. Поддержка баз данных в РНР. Соколова В. В. Лаб 6 Работа с базами данных в РНР В РНР реализована обширная поддержка практически всех существующих.
Устройство и принцип работы операционной системы Windows XP.
1 ТЕМА УРОКА: «Базы данных. Запрос как инструмент обработки данных»
Работа с таблицами в MS Access. Таблицы Единицей хранящейся в БД информации является таблица. Таблица представляет собой совокупность строк и столбцов,
Оптимизация запросов в Microsoft SQL Server Дмитрий Костылев Начальник отдела разработки системного ПО ОАО «Нордеа Банк» SQL Server MVP.
Сравнение производительности версий 5.0 и 6.0. Результаты нагрузочного тестирования: ускорение на 80% Александр Сербул, ведущий специалист отдела качества.
Нарушение целостности структуры SQL-запроса. Внедрение SQL-кода (SQL injection) один из распространённых способов взлома ПО, работающего с базами данных,
Транксрипт:

Оптимизация MySQL Петр Зайцев Директор, Percona Ltd.

Немного о Докладчике Создание веб-сайтов Сопровождение интернет-проектов Консалтинговые услуги – исследования, разработка стратегии продвижения и позиционирования в Интернете. Percona Ltd – Консалтинг в области производительности MySQL LAMP MySQL Inc – Консалтинг, Поддержка, Работа с партнерами по вопросам производительности SpyLOG.RU – Один из основателей, Тех. Директор в далеком 1999

Немного о Докладе Основы оптимизация MySQL –Что можно успеть рассказать за минут Как найти проблему ? Настройки MySQL Оптимизация схемы и запросов

Немного о Главном – Приглашаем работать с нами. Вам интересны вопросы производительности ? Вы отлично знаете MySQL и Unix/Linux ? PHP, Perl, Ruby или Java Владеете английским языком Самостоятельны в решении задач Свяжитесь с нами –

Поиск источника проблем А в MySQL ли дело ? –Инструментация приложений для определения составляющих времени запроса. –Возможность включения ее в боевой инсталляции В чем именно проблема –Пропускная способность (throughput) –Время отклика

Поиск проблемных запросов Лог файл медленных запросв –--log-slow-queries –long-query-time=1 Долгие запросы –--log-queries-not-using-indexes - Запросы не использующие индексы –Проблема может быть не в самых медленных запросах Патч позволяющий логгинг запросов с временем с точностью до миллисекунды

Анализ лога запросов Много инструментов – mysqldumpslow, mysqlsla, mysql_parse_slow etc Анализ долгих запросов –Надо знать их источник Анализ запросов дающих наибольшую нагрузку (аггрегайия) Анализ запросов обрабатывающих много строк

Настройка MySQL Не используйте MySQL с настройками по умолчанию –Если используете его более чем для хранения домашней DVD библиотеки Наиболее важно настроить потребление памяти Для большинства приложений нужно изменить несколько параметров –Не пытайтесь тюнить все

Важные параметры key_buffer_size – кэш индексов MyISAM –Используется для временных таблиц даже если все Innodb –Смотрите сколько misses/sec max_connections - сколько соединений разрешено параллельно table_cache – число открытых таблиц –См рост opened_tables sort_buffer_size –Буффер сортировки – на каждый поток

Еще немного важных параметров query_cache_size –Кэширование результатов запросов (если не используется умное кэширование в приложении innodb_buffer_pool_size –Кэшируются и данные и индексы innodb_log_file_size –Большой лог быстрее запись innodb_flush_log_at_trx_commit=2 –Не скидывать лог на диск при commit

Схема и запросы идут вместе Разрабатывая схему думайте о том как она будет использоваться –А не только об объектах и связях между ними Планируйте в терминах операций а не запросов –Часто есть много путей получения одного и того же результата

Базовая оптимизация схемы Использование подходящих типов данных –Возраст это tinyint а не varchar Правильная индексация –Убедитесь что индекс действиельно используется как вы думаете Нормализация или Де-нормализация Дополнительные агрегированные таблицы

Еще надо учесть JOIN – дорогая штука –Особенно когда требуется ввод/вывод –MySQL умеет использовать nested-loops Планируется ли что база данных будет в основном влезать в память ? –Производительность может резко упасть когда активная часть базы данных перестает влезать в память Фрагментация данных –OPTIMIZE TABLE

Оптимизация запросов EXPLAIN SELECT... –Научитесь читать и понимать –DELETE/UPDATE можно заменить на SELECT –Число строк а плане примерное SHOW LOCAL STATUS –Как именно запрос выполнялся на низком уровне –Handler_XXXX параметры

Любимые команды mysqladmin extended -i100 -r SHOW PROCESSLIST SHOW VARIABLES SHOW INNODB STATUS vmstat 10 iostat -x 10 mpstat 10

Время для Вопросов