Что такое MVCC в PostgreSQL?
MVCC хранит несколько версий строк и выбирает видимые для снимка транзакции. Благодаря этому обычное чтение не должно блокировать каждое конкурентное изменение той же строки.
Читать ответПодготовка к интервью
Разбирайте реальные вопросы, сверяйтесь с подробными ответами и готовьтесь по технологиям и компаниям.
Проверьте, насколько резюме подходит выбранной позиции, и получите рекомендации по улучшению.
Каталог
MVCC хранит несколько версий строк и выбирает видимые для снимка транзакции. Благодаря этому обычное чтение не должно блокировать каждое конкурентное изменение той же строки.
Читать ответDependency Injection передаёт объекту зависимости извне и помогает соблюдать Dependency Inversion, но не является всей системой SOLID. Транзакцию удобно оформлять как ограниченный по времени ресурс.
Читать ответДля предварительной подготовки аналитики в PostgreSQL подходят materialized views или отдельные агрегатные таблицы. Приложение читает готовые результаты вместо повторного тяжёлого расчёта.
Читать ответПлохой индекс — индекс, стоимость которого не оправдывается запросами: дублирующий, неиспользуемый или неподходящий по составу и условию. Он занимает место и замедляет изменения данных.
Читать ответПрименяйте expand–migrate–contract: сначала совместимое расширение схемы, затем перенос данных и клиентов, и только потом удаление старого. Старые и новые версии должны временно работать вместе.
Читать ответИз вариантов наиболее полный — отдельный контролируемый запуск миграций и readinessProbe приложения. Readiness не допускает трафик до готовности, а миграции не конкурируют при старте каждой реплики.
Читать ответНет: планировщик может преобразовать подходящий EXISTS в соединение и выбрать разные способы выполнения. Конкретный план зависит от запроса, статистики, индексов и объёмов.
Читать ответСтандарт не запрещает более сильные гарантии: он допускает фантомы при Repeatable Read, но не требует их появления. PostgreSQL предотвращает их стабильным MVCC-снимком транзакции.
Читать ответCTE — именованный результат запроса, объявленный через WITH и доступный внутри одного SQL-выражения. Он помогает разделить сложную выборку на логические части.
Читать ответCHAR(n) задаёт строковый тип фиксированной длины с дополнением пробелами, VARCHAR(n) — переменной длины с ограничением. Конкретные хранение и сравнение зависят от СУБД.
Читать ответPhantom read — изменение набора строк того же условия из-за commit другой транзакции. PostgreSQL Repeatable Read использует стабильный MVCC-снимок и не показывает такие новые строки.
Читать ответРепликация поддерживает копии данных на нескольких узлах. Она помогает доступности, распределению чтений и восстановлению, но не является заменой резервным копиям.
Читать ответ