Профилирование 35 запросов Django перед оптимизацией связей
Лучший первый шаг — снять профиль запросов и найти причину 35 обращений. После этого выборочно применяют select_related или prefetch_related к действительно нужным связям.
Читать ответПодготовка к интервью
Разбирайте реальные вопросы, сверяйтесь с подробными ответами и готовьтесь по технологиям и компаниям.
Проверьте, насколько резюме подходит выбранной позиции, и получите рекомендации по улучшению.
Каталог
Лучший первый шаг — снять профиль запросов и найти причину 35 обращений. После этого выборочно применяют select_related или prefetch_related к действительно нужным связям.
Читать ответОпишите реальные задачи с каждой системой, глубину участия и конкретные решения: запросы и транзакции, индексы, миграции, кеширование или очереди. Не ограничивайтесь списком названий.
Читать ответPostgreSQL обычно выбирают для транзакционных реляционных данных, MongoDB — для документной модели, ClickHouse — для аналитического чтения больших объёмов. Выбор определяется запросами и гарантиями.
Читать ответФункция вызывается внутри SQL-выражения и возвращает значение или набор; процедура вызывается через CALL. Процедура может управлять транзакциями, но только при соблюдении ограничений вызова.
Читать ответIdentity Map хранит соответствие ORM-идентичности и Python-объекта внутри Session. При загрузке той же строки SQLAlchemy использует уже присутствующий экземпляр, а не создаёт независимую копию.
Читать ответWAL хранит журнал изменений, необходимый для восстановления PostgreSQL после сбоя. Журнал записывается раньше соответствующих страниц данных и используется также для репликации и PITR.
Читать ответСначала найдите источник лишних записей: compaction, вторичные индексы, большие документы или частые обновления одного ключа. Решение зависит от движка, а не от ярлыка NoSQL.
Читать ответАрхивирование сохраняет WAL-сегменты, а streaming replication передаёт WAL реплике. Отключённая реплика может отстать; удержание WAL и сбой архивации способны заполнить диск primary.
Читать ответОбычный VACUUM очищает ненужные версии строк для переиспользования места; VACUUM FULL переписывает таблицу компактно с сильной блокировкой. Autovacuum автоматически запускает обслуживание по активности таблиц.
Читать ответДля LIKE 'prefix%' индекс иногда позволяет ограничить диапазон поиска, а для LIKE '%part%' обычный B-tree обычно не помогает. Результат зависит от СУБД, collation и operator class.
Читать ответОднозначного победителя нет: Hash рассчитан на равенство, но B-tree часто столь же практичен и поддерживает больше операций. Быстрее определяется измерением на конкретных данных и запросе.
Читать ответНаиболее прямой следующий шаг — проверить фильтры, сортировку, селективность и подобрать индекс по плану. Сам по себе Seq Scan не доказывает, что нужен любой индекс.
Читать ответ