Что доводилось делать в базе PostgreSQL: вьюшки, процедуры, функции, триггеры, индексы
Что проверяют
Насколько глубоко вы заходили в базу и где для вас проходит граница между логикой в приложении и логикой в PostgreSQL. Пять сущностей перечислены не случайно: по тому, какие из них вы разберёте живыми примерами, а какие назовёте по учебнику, видно реальный опыт. С питониста дополнительно спрашивают, не прячетесь ли вы целиком за ORM.
Как отвечать
Не пересказывайте определения, идите по своим задачам:
- вьюшки: что закрывали, повторяющийся join в отчётах или срез для аналитиков. Если были материализованные, скажите про
REFRESH MATERIALIZED VIEW CONCURRENTLYи про то, что ему нужен уникальный индекс; - функции и процедуры: функция вызывается внутри
SELECT, процедура только черезCALL, зато процедура умеет управлять транзакцией внутри себя. Процедуры в PostgreSQL появились не сразу, до этого всё писали функциями; - триггеры: аудит, история изменений, поддержание
updated_at. Сразу назовите цену: логика не видна из кода приложения, срабатывает на каждую строку и мешает массовой загрузке; - индексы: тут ждут не «создал индекс», а как вы поняли, что он нужен.
EXPLAIN (ANALYZE, BUFFERS)до и после, порядок колонок в составном индексе, частичный индекс сWHERE,GINдляjsonbи поиска по тексту; - связка с Python: миграции, работа через ORM и сырой SQL там, где ORM даёт плохой план, и почему часть расчётов осталась в приложении.
Чего не делали, о том скажите честно, добавив, зачем оно нужно.
Где спотыкаются
Выдумывают опыт и цифры. Фраза «ускорил отчёт на тридцать процентов» разваливается первым же уточнением «чем мерили». Честнее так: время запроса в логах упало с секунд до десятков миллисекунд, смотрел по плану.
Путают обычную вьюшку с материализованной. Обычная это сохранённый запрос, она не хранит данных и сама по себе ничего не ускоряет: её тело подставляется в основной запрос. Ускоряет материализованная, ценой устаревающих данных.
Хвалятся тем, что «навесили индексы на все колонки». Каждый индекс это замедление вставки и обновления плюс место на диске. Ждут, что вы вспомните про неиспользуемые индексы в системной статистике и про построение индекса без блокировки на живой таблице.