В предыдущих статьях мы разобрали типичные проблемы с базой данных в Django, рассказали какие настройки нужно подкрутить в БД, научились находить и диагностировать "плохие" запросы. Теперь можно их исправить и получить заметное ускорение приложения.

Все хорошие запросы похожи друг на друга, каждый "плохой" запрос плох по своему

Исправление запросов можно превратить в чек-лист, который будет содержать 20% усилий дающих 80% результата. Начнем с него, а затем расшифруем методы исправления запросов.

Чек-лист исправления запроса

Исправление "плохого" запроса связано с поиском оптимального сочетания:

  1. Объем данных поднимаемого с диска/индекса
  2. Время чтения данных
  3. Время фильтрации данных
  4. Объем передаваемых данных на клиент

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

Тебе самостоятельно нужно подумать, что в твоей ситуации "оптимально", а следующие пункты помогут понять на что смотреть:

1. Какой запрос нужно исправлять?

Получить доступ к полному материалу
Полный текст доступен в курсе