Главная Новости

С чего начинать оптимизацию MySQL?

Опубликовано: 23.10.2017

видео С чего начинать оптимизацию MySQL?

Как мы готовим MySQL / Николай Королёв (Badoo)

Кролик надел очки.

— С чего начинать, Ваше Величество? — спросил он.

— Начни с начала, — важно ответил Король, — продолжай, пока не дойдешь до конца.


Льюис Кэрролл. Приключения Алисы в стране чудес.

Эта статья для тех, кто впервые столкнулся с необходимостью оптимизировать производительность MySQL. Статья описывает основные подходы, применяемые сегодня для решения данной задачи в масштабах одного сервера.

Нужна ли оптимизация MySQL?

Итак, вы столкнулись с падением производительности веб-приложения, использующего MySQL. Приложение периодически недоступно, загрузка страниц вашего сайта происходит слишком долго или периодически выдается ошибка "Too many connections". Перед тем, как приступать к оптимизации MySQL, следует проверить следующее:


#PAWNO[MYSQL][NKTV]Урок №14 Делаем оптимизацию моду

Наличие свободного места на диске в рамках дисковой квоты. Отсутствие зацикливания в веб-приложении. Время отклика вашего web-сервера (ping). В случае виртуального хостинга, отсутсвие внешних замедляющих факторов (один из способов это проверить — остановить приложение и выполнить простейший запрос SELECT 2 +2 ; в консоли mysql на сервере. Такой запрос должен выполниться за несколько сотых секунды). Отсутствие задержки при подключении к mysql-серверу с сервера веб-приложения. Если такая задержка присутствует, это может быть связано с неправильной работой системы доменных имен (DNS).

Выполнение описанных выше проверок не гарантирует, что проблемы производительности связаны именно с MySQL, но позволит во многих случаях найти стороннюю причину падения производительности.


SQL запрос EXPLAIN и EXPLAIN QUERY PLAN в базах данных SQLite: оптимизация SQL запросов.

Путь оптимизации

Предостережение, высказанное Дональдом Кнутом: «Преждевременная оптимизация - корень всех зол» справедливо и для MySQL. Нельзя начинать оптимизацию не выявив узкие места. Если вы создаете приложение, которое должно выдерживать в будущем большую нагрузку, то для нахождения узких мест потребуется создать искусственную нагрузку, аналогичную ожидаемой.

rss