Очень широкий вопрос, трудно дать краткий ответ. В любом случае, позвольте мне попытаться подвести итог здесь, в Redshift
есть два типа ключей, distkey
и sortkey
.
distkey - distkey таблицы - это столбец, по которому она распределяется по каждому узлу. Строки с одинаковым значением в этом столбце гарантированно находятся на одном узле.
sortkey - sortkey таблицы - это столбец, по которому она сортируется в каждом узле. Это должно применяться к столбцам, которые вы обычно делаете order by
.
Позволяет сосредоточиться на distkey
здесь.
Ключ распространения может быть двух типов: «Четный» или «Все». Ключи распределения используются для достижения следующего.
- Распределение данных равномерно для параллельной обработки
- Минимизация перемещения данных
Следует использовать стиль распространения «Все» - иметь медленно изменяющиеся данные, разумный размер (т. Е. Несколько миллионов, но не сотни миллионов строк), отсутствующий общий ключ распределения для частых объединений.
«Четный» стиль распространения должен использоваться для таблиц, которые не часто объединяются или агрегируются, а также для больших таблиц без приемлемых ключей-кандидатов.
Вот несколько хороших материалов для чтения.
https://www.slideshare.net/AmazonWebServices/deep-dive-on-amazon-redshift-64919704
https://www.youtube.com/watch?v=iuQgZDs-W7A
https://docs.aws.amazon.com/redshift/latest/dg/c_best-practices-best-dist-key.html
https://docs.aws.amazon.com/redshift/latest/dg/c_Distribution_examples.html
Надеюсь, это даст вам возможность продвинуться вперед.