Как профилируешь запросы в базе Django
Python
Middle
Без компании
Как профилируешь запросы в базе Django
Ответы
Для профилирования запросов в Django можно использовать несколько инструментов:
- **django-debug-toolbar** - самый популярный вариант. Показывает SQL-запросы, время выполнения и другие метрики:
```
# settings.py
INSTALLED_APPS += ['debug_toolbar']
MIDDLEWARE += ['debug_toolbar.middleware.DebugToolbarMiddleware']
INTERNAL_IPS = ['127.0.0.1']
```
- **connection.queries** - встроенный способ для просмотра выполненных запросов:
```
from django.db import connection
# После выполнения запросов
print(len(connection.queries)) # Количество запросов
for q in connection.queries:
print(q['sql'], q['time'])
```
- **django-silk** - более продвинутый профилировщик, который сохраняет историю запросов и позволяет анализировать их.
- **explain()** - для анализа конкретного запроса:
```
queryset.explain() # Покажет план выполнения запроса
```
Для продакшена можно использовать Sentry или New Relic, которые также показывают медленные запросы.