Новое в Redshift: основные вопросы настройки запросов - PullRequest
0 голосов
/ 02 мая 2018

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

Вот так ...

  1. Распределение против широковещательных операций:
    До сих пор я не нашел ничего в руководстве, которое убедительно говорит мне разницу. Что я заметил в Плане, так это то, что, если я выберу стиль распространения ALL, я все равно вижу, как происходят операции BCAST. Может кто-нибудь объяснить, пожалуйста, разницу между этими операциями?
  2. Узлы против ломтиков:
    Я обращаю внимание на руководство, в контексте операций распределения, в одном месте это указывает, что данные распределены по узлам, а в другом - это указывает, что данные распределены по слайсам. Я анализирую план в среде разработчика с одним узлом и двумя срезами. Вот моя слабо сформированная интерпретация: Оптимизатор не зависит от узла; это заботится о ломтиках. Данные могут быть распределены на узел, инцидентный срезу, являющемуся резидентом этого целевого узла. Кто-то может подтвердить или опровергнуть это?
  3. Соединения высокой мощности Я пытаюсь настроить две большие таблицы транзакций с несколькими операциями соединения с высокой мощностью (без первичного / внешнего ключа). Прошел несколько разнообразных итераций с участием стилей dist и клавиш сортировки в дополнение к чтению нескольких блогов по настройке.
    Слабо сформулированная интерпретация: Redshift выделяется как схемы «звезда / снежинка», в которых объединения обычно имеют низкую мощность (Dims и таблицы фактов), но борются с транзакционными таблицами. Кто-то может подтвердить или опровергнуть это?

Я ценю ваши идеи.

Спасибо!

1 Ответ

0 голосов
/ 02 мая 2018

Эта тема, вероятно, слишком широка, чтобы ее можно было рассмотреть в одном вопросе.

  1. Широковещательная рассылка для dist все отличается от других широковещательных рассылок - данные уже есть на каждом узле. Распределение означает, что для завершения объединения Redshift re распределяет данные по всем слайсам, используя новый ключ dist.
  2. Узлы подразделяются на кусочки. Большинство операторов запросов работают на уровне слайса.
  3. Redshift может выполнять огромные объединения на резидентных данных диска быстрее, чем любая другая система, которую я использовал (YMMV). Для максимальной скорости огромные объединения должны быть сделаны для таблиц с одинаковыми ключами dist и sort - используя столбцы dist и sort. См. Примечание "Объединение" здесь.

Из предыдущего ответа эти ссылки должны содержать необходимые объяснения:

...