Non-repeatable read — изменение результата повторного чтения одной строки из-за commit другой транзакции. В PostgreSQL минимальный уровень, исключающий это, — Repeatable Read.
Выберите реальную задачу и объясните, почему ORM было достаточно либо почему потребовался SQL: сложная агрегация, оконные функции, пакетное обновление или точный контроль плана.
B-tree хранит упорядоченные ключи, BRIN — сводки по диапазонам блоков. BRIN особенно компактен на больших таблицах, где значения коррелируют с физическим порядком строк.
Перечислите базы, с которыми действительно работали, и уточните глубину опыта: моделирование, запросы, индексы, транзакции, миграции и диагностика проблем.
JOIN-загрузка получает связанные объекты в одном SQL-запросе, а пакетная загрузка сначала читает родителей, затем связи отдельными запросами и объединяет их в памяти.
Advisory locks блокируют логический ключ, выбранный приложением, а не автоматически строки таблицы. Для короткой бизнес-операции удобна блокировка до конца транзакции.
Программа не запускает корутину main, а ошибки БД маскируются под успешный импорт. Дополнительно нужны корректные транзакции, идемпотентность и валидация заказов.
WAL-архивация сохраняет завершённые сегменты для восстановления, а streaming replication передаёт WAL реплике. Если необходимые сегменты исчезнут, отставшая реплика не сможет продолжить обычное получение.
Измерьте полный запрос и отдельно SQL, количество обращений, сериализацию и ожидание соединения. N+1 — один запрос за списком плюс отдельные запросы за связями каждой записи.
Сначала разделите время ожидания соединения, собственно SQL и сетевую часть. Низкий CPU БД не исключает locks, насыщение пула, I/O или изменившийся маршрут после Kubernetes deployment.
MongoDB уместна, когда данные естественно образуют документы с вложенной структурой и часто читаются как единый агрегат. Выбор должен следовать модели и нагрузке, а не только желанию избежать схемы.