Уровни изоляции
В PostgreSQL REPEATABLE READ предотвращает перезапись конкурентно изменённой строки из старого снимка, завершая такую транзакцию ошибкой. Её нужно повторить целиком; для более общих инвариантов рассмотрите SERIALIZABLE.
Читать ответПодготовка к интервью
Разбирайте реальные вопросы, сверяйтесь с подробными ответами и готовьтесь по технологиям и компаниям.
Проверьте, насколько резюме подходит выбранной позиции, и получите рекомендации по улучшению.
Каталог
В PostgreSQL REPEATABLE READ предотвращает перезапись конкурентно изменённой строки из старого снимка, завершая такую транзакцию ошибкой. Её нужно повторить целиком; для более общих инвариантов рассмотрите SERIALIZABLE.
Читать ответСначала остановлю выпуск и исправлю проверку принадлежности данных пользователю. Ускорение не оправдывает утечку чужих транзакций, а нестабильность теста не делает нарушение допустимым.
Читать ответНужны наблюдаемость, проверенное резервное копирование, контроль роста данных и ограничение нагрузки. При деградации сначала определите, где ожидание: CPU, диск, locks, соединения или план запроса.
Читать ответB-Tree подходит для равенства, диапазонов и сортировки; GIN — для поиска компонентов сложного значения; GiST — расширяемая структура для пространственных и других специализированных операторов.
Читать ответУникальное ограничение или уникальный индекс на область операции и Idempotency-Key. Оно атомарно не позволяет двум конкурентным транзакциям создать две записи с одним логическим ключом.
Читать ответНет, у таблицы PostgreSQL может быть только одно ограничение PRIMARY KEY. Оно может включать несколько колонок; дополнительные уникальные ограничения не являются вторым первичным ключом.
Читать ответСначала разделите ожидание соединения, сеть, блокировки и собственно выполнение SQL. Низкий CPU не исключает задержки из-за пула, диска или locks; откат без локализации может не помочь.
Читать ответУровень изоляции относится к транзакции. Его можно задать для конкретной транзакции, а настройки сессии, роли или базы определяют значение по умолчанию для новых транзакций.
Читать ответХранимая процедура уязвима, если склеивает SQL из недоверенных строк и затем выполняет его. ORM снижает риск при параметризованных операциях, но не даёт стопроцентной защиты для raw SQL и динамических фрагментов.
Читать ответСначала прекращайте приём новой работы и организуйте контролируемое завершение зарегистрированных задач до закрытия пула БД. Для гарантии восстановления после убийства Pod нужна сохранённая очередь или запись задания.
Читать ответЧастые UPDATE и DELETE создают мёртвые версии строк и индексные записи, которые не исчезают немедленно. Размер также включает свободное место, индексы и возможные TOAST-данные.
Читать ответНе выпускайте образ с невоспроизводимой готовностью зависимостей. Добавьте ограниченное ожидание/повторы подключения, корректные probes и интеграционную проверку в окружении, похожем на Kubernetes.
Читать ответ