Поддерживает ли Snowflake индексы? - PullRequest
0 голосов
/ 21 октября 2019

В документации Snowflake я не смог найти ссылку на использование индексов.

Поддерживает ли Snowflake индексы и, если нет, каков альтернативный подход к настройке производительности при использовании Snowflake?

Ответы [ 2 ]

5 голосов
/ 21 октября 2019

Snowflake не поддерживает индексы, хотя и поддерживает «кластеризацию» для улучшения производительности ввода-вывода.

Я рекомендую прочитать эти ссылки, чтобы ознакомиться с этим:

https://docs.snowflake.net/manuals/user-guide/tables-clustering-keys.html

https://docs.snowflake.net/manuals/user-guide/tables-auto-reclustering.html

Вот действительно хороший пост в блоге на эту тему: https://www.snowflake.com/blog/automatic-query-optimization-no-tuning/

Надеюсь, это поможет ... Рич

2 голосов
/ 22 октября 2019

Снежинка не использует индексы. Это одна из вещей, которая делает Snowflake настолько хорошо масштабируемой для произвольных запросов. Вместо этого Snowflake вычисляет статистику о столбцах и записях в загружаемых вами файлах и использует эту статистику, чтобы выяснить, какие части каких таблиц / записей действительно загружать для выполнения запроса. Он также использует формат файла столбцового хранилища, который позволяет ему читать только те части таблицы, которые содержат поля (столбцы), которые вы фактически используете, и, таким образом, сокращать операции ввода-вывода для столбцов, которые вы не используете в запросе.

Снежинка нарезает большие таблицы (гигабайт, терабайт или больше) на более мелкие «микроразделы». Для каждого микрораздела он собирает статистику о том, какие диапазоны значений содержит каждый столбец. Затем он загружает только микроразделы, которые содержат значения в диапазоне, необходимом для вашего запроса. В качестве примера, скажем, у вас есть столбец меток времени. Если ваш запрос запрашивает данные в период с 1 июня по 1 июля, то разделы, которые не содержат каких-либо данных в этом диапазоне, не будут загружаться или обрабатываться на основе статистики, сохраненной для дат в файлах микроперегородок.

Индексы часто используются для оперативной обработки транзакций, поскольку они ускоряют рабочие процессы, когда вы работаете с одной или несколькими записями, но когда вы выполняете аналитические запросы для больших наборов данных, вы почти всегда работаете с большими подмножествами каждой таблицы в ваших объединениях и агрегатах. Механизм хранения с автоматической статистикой автоматически ускоряет такие большие запросы без необходимости указывать индекс или настраивать какие-либо параметры.

...