Насколько большие таблицы приходилось обрабатывать и делать запросы?
Что проверяют
Где для вас проходит граница между «помещается в память ноутбука», «считаем на стороне базы» и «нужен распределённый движок». Ответ показывает, меряете ли вы данные по-инженерному: не только строками, но и объёмом на диске, шириной строки, кардинальностью и тем, как таблица разложена.
Как отвечать
Дайте конкретику по порядку величин: сколько строк, сколько это занимает места, как таблица партиционирована, на каком движке жила и какие запросы вы к ней писали. Аналитический контур на колоночной базе и транзакционный PostgreSQL это разные истории, назовите свою.
Потом про приёмы, которыми вы укладывались в приемлемое время:
- считать на стороне базы, а не тянуть выгрузку в ноутбук, оконные функции вместо ручных циклов;
- партиционирование по дате и отсечение лишних партиций, выбор только нужных столбцов;
- предагрегаты и витрины для повторяющихся отчётов вместо пересчёта сырых данных;
- чтение пачками, колоночные форматы вроде parquet, экономные типы;
- чтение плана через
EXPLAIN (ANALYZE, BUFFERS)и разговор про него, а не догадки.
Хорошо закончить тем, как вы работаете с выборкой на этапе исследования: сначала срез за короткий период, потом полный прогон.
Где спотыкаются
Называют десять миллионов строк большими данными и добавляют, что ускорили запросы на какую-то долю. Десять миллионов узких строк это обычная таблица для одной машины, а процент без плана запроса и замеров до и после звучит как заготовка из шаблона.
Сводят оптимизацию к индексам. На аналитическом сканировании почти всей таблицы индекс часто не помогает вовсе, а помогают партиционирование, колоночное хранение, сужение набора столбцов и предрасчёт. Плюс индексы замедляют запись и занимают место, об этом стоит сказать самому.
Тянут таблицу целиком в датафрейм и удивляются нехватке памяти. В памяти данные занимают заметно больше, чем на диске, поэтому в ответе ждут чтение по частям, экономные типы, категориальные столбцы и инструменты, которые умеют считать без полной загрузки.