Использует ли Redshift одинаковое распределение ключей, когда две таблицы имеют одинаковые ключи распространения? - PullRequest
0 голосов
/ 10 июля 2019

У меня есть несколько таблиц, которые содержат поле customer_id.

Существует не так много customer_ids, но базовые данные большие (100 с Гб на идентификатор клиента).

Все мои запросы всегда так или иначе используют этот customer_id: объединение, агрегирование или фильтрация.

Следовательно, это поле представляется наилучшим кандидатом на распространение ключа.

Вопрос: Если я установлю одинаковый ключ DISTRIBUTION KEY (customer_id) для всех моих таблиц, узнает ли красное смещение, что мне нужны данные для определенного клиента на одном узле для всех этих таблиц? Если да, как это решается? просто используя имя столбца, похожее на все эти таблицы? Мне это кажется странным, но я не смог найти ничего по теме.

1 Ответ

0 голосов
/ 10 июля 2019

Amazon Redshift будет хеш значение в столбце DISTKEY.

Например, если в вашем кластере всего 4 фрагмента, он будет хешировать ключ и использовать модуль по модулю.из 4. Это приведет к тому, что любое значение будет иметь значение 0-3.Затем он использует значение для распределения этих строк по определенному срезу.

Если количество узлов и, следовательно, срезов, изменяется, то хеш будет пересчитан для каждой строки.

Всегда помнитеосновные правила:

  • Установить DISTKEY для наиболее часто присоединяемого столбца
  • Установить SORTKEY для столбцов, наиболее часто используемых в WHERE
...