|
Модераторы: skyboy |
|
skyboy |
|
||||
неОпытный Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
Итак. Все тормозит, код клиентской части просто идеальный, записей в БД "вроде бы немного". Что делать? Заниматься profiling'ом.
Что для этого есть в mysql? 1. slow query log - механизм, который производит запись запроса в отдельный лог в том случае, если этот запрос выполнялся дольше указанного периода(в секундах - минимально 1, по умолчанию стоит 10 секунд). Хорошо эту штуку включить, если она не включена и есть доступ к конфигам - можно уже после обнаружения "тормозов" посмотреть, как система себя раньше "вела" - появились ли сбои по причине увеличения объема данных или проблема была и раньше, просто была незаметна из-за небольшой нагрузки. 2. конструкция explain отображает ход выполнения указанного запроса. надо разобраться с нотацией результатов выполнения этой конструкции, да и информация пригодится только при условии наличия хотя бы базовых знаний о принципе работы СУБД, но здесь лучше разобраться раз и с удовольствием пользоваться. 3. начиная с версии 5.0.37 в mysql появился встроенный profiler, который позволяет в пределах сессиий запоминать время выполнения запросов и по выбранному запросу давать развернутую информацию. пример выполнения скажет за себя:
выдает
на примере видно: основная задержка - checking permissions(без учета их выполнение заняло бы около 0,05 с) --------------------- Типичный процесс исправления узких мест вижу таким: 1. Лезем в загодя включенный slow query log и выуживаем долгие запросы. 2. Через любой клиент выполняем эти запросы, предварительно включив профилирование(set profiling=1;) Выясняем, по какой причине запрос долго выполняется. 3. при помощи explain выясняем, какая именно конструкция приводит к тормозам, если на пункте 2 узким местом оказалось что-то, не имеющее отношения к системе безопасности(checking permissions), передачи данных(sending data) - короче говоря, надо разобраться ещё, что можно ускорить за счет оптимизации запроса, а для чего - надо лезть в конфиги(причем не только mysql сервера). В принципе, пункты 2 и 3 вполне могут идти в другом порядке. Добавлено @ 09:24 Если что-то пропустил, прошу дополнить. |
||||
|
|||||
skyboy |
|
|||
неОпытный Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
Век живи – век учись.
В комплекте бинарников mysql идет консольная тулза mysqlslap, назначение которой - эмуляция клиентской загрузки. По сути - инструмент нагрузочного тестирования. Правда, на хостинге у себя я его не обнаружил, что, пожалуй, оправдано |
|||
|
||||
lumega |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 13.2.2008 Репутация: нет Всего: нет |
Добавлю, что есть графический инструмент для профилирования - Neor Profile SQL. Позволяет позволяет делать и профилирование и explain.
|
|||
|
||||
kaa |
|
|||
Опытный Профиль Группа: Участник Сообщений: 817 Регистрация: 5.11.2005 Репутация: нет Всего: 2 |
страницей промазал
Это сообщение отредактировал(а) kaa - 20.4.2015, 11:57 |
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |