553 вопроса по PostgreSQL с технических собеседований
553 вопроса1634 компании353 технологии
Что проверяют на интервью
Как устроена подборка
На странице собраны вопросы по PostgreSQL — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: database, sql, postgresql.
В PostgreSQL 11+ постоянный DEFAULT 'active' обычно добавляется без переписывания всех 50 млн строк. Однако ALTER TABLE всё равно требует сильной блокировки и может остановить конкурирующие запросы.
PostgreSQL сочетает MVCC для видимости версий строк, блокировки для конкурентных изменений и WAL для восстановления. WAL записывает изменения раньше соответствующих страниц данных на диске.
Такую структуру можно использовать для слоистой архитектуры: api — HTTP, application — сценарии, domain — бизнес-правила, inf — адаптеры БД, очередей, кеша и внешних API.
Посмотрите EXPLAIN: Index Scan, Index Only Scan или Bitmap Index Scan указывают на использование индекса. EXPLAIN ANALYZE дополнительно показывает фактическое выполнение.
Начните с pg_stat_statements, журналов медленных запросов и pg_stat_activity. Затем различите дорогой план, ожидание блокировок, I/O и чрезмерную частоту вызовов.
Index bloat — лишний объём индекса из-за устаревших записей и неплотно заполненных страниц. MVCC сохраняет старые версии, а интенсивные изменения и задержки очистки усиливают разрастание.
B-tree — сбалансированный упорядоченный индекс PostgreSQL для равенства, диапазонов и совместимой сортировки. Он поддерживает многоколоночные и уникальные индексы.
Опишите реальный цикл оптимизации: найти запрос по статистике или slow log, посмотреть план, исправить причину и сравнить результат на сопоставимых данных.
Сравнивайте estimated и actual rows, время узлов, loops, чтение buffers, отбрасываемые строки и выход сортировок на диск. Это помогает различать ошибку оценок, лишнюю работу и I/O.
Non-repeatable read — изменение результата повторного чтения одной строки из-за commit другой транзакции. В PostgreSQL минимальный уровень, исключающий это, — Repeatable Read.
B-tree хранит упорядоченные ключи, BRIN — сводки по диапазонам блоков. BRIN особенно компактен на больших таблицах, где значения коррелируют с физическим порядком строк.