Составной ключ сортировки против ключа сортировки - PullRequest
0 голосов
/ 17 октября 2018

Позвольте мне задать другой вопрос о сортировке красного смещения.Мы планируем установить ключ сортировки для столбцов, часто используемых в операторе WHERE.

Пока что наилучшей комбинацией для нашей системы является: DISTSTYLE EVEN + COMPOUND SORTKEY + COMPRESSED Column (за исключением столбца First SortKey)

Просто интересно, что может быть лучше, просто SORTKEY или COMPOUND SORTKEY для наших таблиц BI, которые могут иметь разнообразные запросы в соответствии с анализом пользователей.

Например, мы устанавливаем составной ключ сортировки в соответствии с частотой в выражении WHERE нескольких запросов следующим образом.

COMPOUND SORTKEY
(
PURCHASE_DATE <-- set as first sort key since it's date column.
STORE_ID,
CUTOMER_ID,
PRODUCT_ID
)

Но иногда он может быть запрошен только «ID ПРОДУКТА» в реальных запросах, но не с другими перечисленными ключами сортировки, и не может быть запрошен в отличие от порядка COMPOUND KEY.

В таком случае, могу ли я спросить «СОЕДИНЕНИЕ КОРПУСА» может быть бесполезным или просто КЛЮЧ СОРТИРОВКИ может быть более эффективным ...?

Буду очень признателен, если вы расскажете мне оВаша идея и опыт.

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Ваш составной ключ сортировки выглядит разумным для меня.Важно понимать, что ключи сортировки Redshift не являются индексом , который используется или не используется. Ключ сортировки используется для физического упорядочения данных на диске.

Оптимизатор запросов «использует» ключ сортировки, просматривая «карту зоны» (минимальное и максимальное значения) для каждогоблокировать во время выполнения запроса.Это происходит для всех столбцов независимо от того, находятся ли они в ключе сортировки .

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

См. Этот предыдущий пример для запроса проверки эффективности ключа сортировки: Используется ли мой ключ сортировки?

Ознакомьтесь с нашим руководством по эффективному проектированию таблиц: "Amazon Redshift Engineering'sУсовершенствованный настольный дизайн Playbook ".В руководстве обсуждается правильное использование чередующихся ключей сортировки, но обратите внимание, что они должны использоваться только в очень специфических обстоятельствах.

0 голосов
/ 17 октября 2018

Простые правила для Amazon Redshift:

  • Используйте DISTKEY для столбца, который чаще всего используется с JOIN
  • Используйте SORTKEY для столбца (столбцов), которыйнаиболее часто используется с WHERE

Вы правы, что вышеуказанный составной ключ сортировки будет использоваться, только если PURCHASE_DATE включен в WHERE.

Альтернативой являетсяиспользовать чередующиеся ключи сортировки , которые дают одинаковый вес многим столбцам и могут использоваться там, где в WHERE часто используются разные поля.Однако чередующиеся ключи сортировки намного медленнее VACUUM и их редко стоит использовать.

Поэтому постарайтесь использовать SORTKEY в большинстве ваших запросов, но не слишком беспокоитесь одругие запросы, если только у вас нет особых проблем с производительностью.

См .: Redshift Sort Keys - Выбор Best Sort Style |Hevo Blog

...