Вопросы по GreenPlum
Из реальных собеседований (Q/A)
- Как вы выбираете distribution key в Greenplum?
- Если таблица небольшая (до ~100 тыс. строк) и используется как словарь для join, используется
REPLICATED. - Если это конечная витрина без дальнейших join (фильтрация/отчетность), используется
DISTRIBUTED RANDOMLY. - Если заранее известны поля группировки, возможна дистрибуция по ним.
- В большинстве случаев используется
DISTRIBUTED BYпо ключу join, чтобы минимизировать пересылку данных между сегментами.
- Что такое Data Skew?
- Data Skew (перекос данных) это ситуация, когда на одном сегменте данных сильно больше, чем на других.
- Запрос выполняется со скоростью самого медленного сегмента, поэтому общая производительность падает.
- Какие типы таблиц вы используете в Greenplum?
Append Optimized Tables- Колоночное хранение
- Фокус на DWH-нагрузке (без выраженной транзакционной нагрузки)
- Когда вы используете replicated таблицы?
- Когда таблицы выступают в роли словарей (маленькие таблицы, часто используемые в join).
- Как реализуется партиционирование таблиц?
- Чаще всего по дате (по месяцам).
- При необходимости используются субпартиции по дополнительным признакам.
- Использовали ли
EXPLAIN/EXPLAIN ANALYZE?
- Да, для анализа и оптимизации запросов.
- Какие методы оптимизации запросов применяли?
- Разделение сложного запроса на этапы (временные таблицы).
- Выбор только нужных колонок.
- Предварительные преобразования данных.
- Корректная дистрибуция по ключу join.
- Проверка плана выполнения (
EXPLAIN). - Контроль отсутствия
Nested Loopна больших объемах. - Актуализация статистики таблиц.
- Какой самый сложный запрос вы писали?
- Запрос примерно на 1000 строк.
- Работа с интервальными данными.
- Использование оконных функций (например,
LAG). - Задачи типа "поиск островов".
- Использовали ли оконные функции, CTE, аналитические функции?
- Да, использовались:
- Оконные функции (
LAG, ранжирование, агрегирующие). CTE(WITH).- Агрегации.
- Процентили, медиана.
- Массивные агрегации.
Базовые вопросы
- Что такое GreenPlum?
- Что такое дистрибуция и какие виды существуют?
- Что такое партицирование и какие виды существуют?
- Что такое MPP-архитекрута?
- Какие индексы существуют в GP?
- Какие виды таблиц по хранению данных бывают в GP?
- Какими методами можно подлючать внешние таблицы?
- Какой порт используется по умолчанию для подключения к БД?