Snowflake опубликовал paper - Workload Insights From The Snowflake Data Cloud: What Do Production Analytic Queries Really Look Like? Что сделали ✅ Проанализировали ~667 млн продакшен-запросов из популярных BI-инструментов к Snowflake (в одном облачном регионе за неделю в октябре 2024). ✅ Смотрели тексты SQL и планы выполнения: фильтры, джоины, агрегации, ORDER BY/LIMIT, UNION ALL, глубину выражений. ✅ Сопоставили с TPC-DS и указали, где бенчмарк не эффективен. Результаты: __1. Общая картина нагрузки Read-heavy нагрузка: SELECT (47%) + SHOW (31%) = 78% всех запросов. DDL-операций (4%) в 2 раза больше, чем DML (2%). Соотношение чтение/запись ≈ 25:1. 2. Характеристики SQL ORDER BY (54%) и GROUP BY (55%) — более чем в половине запросов. JOIN встречается в 46% запросов. CTE в 25%, оконные функции — в 11%. LIMIT в 25% случаев, но в реальности часто ограничение идёт на миллионы строк (из-за дефолтов BI-клиентов). 3. Операторы и ресурсы По частоте операторов: Projection (44%), Filter (16%), Aggregate (14%), Table Scan (10%), Join (10%). По CPU: Table Scan + Filter ≈ 48%, Join ≈16%, Aggregate ≈15%, Projection ≈10%. Основная нагрузка на чтение и джойны. 4. Джойны 20% JOIN-запросов содержат 10+ джойнов, отдельные доходят до 1000+. Типы: Inner 59%, Outer 37%, Semi/Anti ~4%. Ключи: ~46% текстовые, ~41% числовые, ~11% даты/время. Поведение: 70% preserving, 16% exploding (результат больше входа), 13% filtering. 5. Агрегации Лидер — any_value (58%), затем sum (15%), count (12%), max (11%), min (5%). Много агрегаций по текстовым колонкам (34%), а не только по числам (49%). В TPC-DS почти нет текстовых агрегатов (98% numeric). 6. Фильтры Фильтрация в основном по тексту (58%), числовые только 25%. Популярные предикаты: = (22%), IS NOT NULL (17%), логические связки (15%), CONTAINS (3%). 15% фильтров имеют вложенность >5 уровней. Селективность сильно варьируется: 13% обнуляют выборку, 19% не фильтруют ничего, 46% — высокоселективные. 7. LIMIT и UNION ALL LIMIT часто используется BI-системами для выгрузки миллионов строк (71% без ORDER BY возвращают 1M–10M строк). UNION ALL в большинстве случаев ≤10, но есть хвост с сотнями инпутов. 8. Отличия от TPC-DS В реальных BI-нагрузках есть: Метаданные-запросы (SHOW, SESSION) — в бенчмарках отсутствуют. Текстовые ключи и фильтры. Outer joins. Глубокие выражения и длинные графы джойнов. Большие LIMIT-ы и нестандартные агрегации (any_value).__ В целом такой обзор показывает, что традиционные benchmarks на базе TPC-DS далек от того, что происходит в реальности. BI инструментам вообще все-равно на качество запроса и плана, что приводит к излишним расходам. Возможно такой анализ был бы полезен вендорам, которые хотят улучшить эффективность работы BI и Snowflake.