Изоляция тестов создания заказа и состояния БД
Каждый тест должен сам создавать свои данные и получать чистое состояние приложения/БД. Session-scoped клиент не должен неявно связывать test_create_order и test_order_isolated.
Читать ответПодготовка к интервью
Разбирайте реальные вопросы, сверяйтесь с подробными ответами и готовьтесь по технологиям и компаниям.
Проверьте, насколько резюме подходит выбранной позиции, и получите рекомендации по улучшению.
Каталог
Каждый тест должен сам создавать свои данные и получать чистое состояние приложения/БД. Session-scoped клиент не должен неявно связывать test_create_order и test_order_isolated.
Читать ответПо трём ID и пустому кешу число SQL-запросов определить нельзя: всё зависит от реализации загрузки. Может быть один пакетный запрос, три отдельных или больше из-за связанных данных.
Читать ответВ PostgreSQL можно использовать INSERT ... ON CONFLICT ... DO NOTHING, если по бизнес-правилам повторную вставку допустимо пропустить. Но совместимость с ожиданиями приложения нужно проверить.
Читать ответORM обычно отделяет SQL-шаблон от значений параметров и передаёт их драйверу для безопасной привязки. Пользовательские данные не должны становиться частью синтаксиса запроса.
Читать ответIdentity Map хранит соответствие идентичности строки и Python-объекта внутри Session. При повторной загрузке той же ORM-сущности SQLAlchemy переиспользует уже известный экземпляр.
Читать ответНачните с pg_stat_statements, журналов медленных запросов и pg_stat_activity. Затем различите дорогой план, ожидание блокировок, I/O и чрезмерную частоту вызовов.
Читать ответIndex bloat — лишний объём индекса из-за устаревших записей и неплотно заполненных страниц. MVCC сохраняет старые версии, а интенсивные изменения и задержки очистки усиливают разрастание.
Читать ответУдаляйте колонку поэтапно: сначала уберите зависимости приложения и фоновых процессов, переждите окно совместимости и только отдельной миграцией удалите столбец.
Читать ответB-tree — сбалансированный упорядоченный индекс PostgreSQL для равенства, диапазонов и совместимой сортировки. Он поддерживает многоколоночные и уникальные индексы.
Читать ответОпишите реальный цикл оптимизации: найти запрос по статистике или slow log, посмотреть план, исправить причину и сравнить результат на сопоставимых данных.
Читать ответСравнивайте estimated и actual rows, время узлов, loops, чтение buffers, отбрасываемые строки и выход сортировок на диск. Это помогает различать ошибку оценок, лишнюю работу и I/O.
Читать ответПо вопросу нельзя определить конкретную систему склада. Обычно Redis наполняется приложением из основной БД, через события/CDC либо используется как самостоятельное оперативное хранилище.
Читать ответ