Как спроектировать таблицу с большим количеством столбцов в ключе сортировки? - PullRequest
0 голосов
/ 04 апреля 2019

Я занимаюсь созданием прототипа красного смещения и нуждаюсь в совете по дизайну ключей сортировки. У меня есть таблица с 5 числовыми значениями и 20 столбцами, которые мы можем использовать для фильтрации. Я использую дату в качестве ключа dist, но я потерян для дизайна ключа сортировки.

У меня есть веса для столбцов сортировки, основанные на историческом использовании, но как мне справиться с этим в красном смещении. Создание сортировки (col1, col2, .. col20), похоже, не лучший способ сделать это. Создать ключ сортировки, используя 5 самых популярных фильтров? Или какой-то другой метод.

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Использование даты в качестве DISTKEY довольно необычно.

Общее правило:

  • Установите DISTKEY для столбца, который часто используется в операторе JOIN. Это гарантирует, что данные в обеих таблицах совмещены в одном и том же слайсе, поэтому они могут ПРИСОЕДИНЯТЬСЯ без необходимости переноса данных между слайсами.
  • Установите SORTKEY для столбца, который наиболее часто используется в операторе WHERE. Это облегчает «перепрыгивание» дисковых блоков, которые не содержат соответствующих данных, поскольку каждый блок помечается минимальным и максимальным значением для столбца.

В общем, избегайте использования чередующейся сортировки, поскольку при запуске VACUUM требуется слишком много служебных данных. Просто выполните сортировку по полю, наиболее часто используемому в WHERE, который часто является столбцом «Дата».

См .: Рекомендации Amazon Redshift по разработке таблиц

0 голосов
/ 04 апреля 2019

У вас есть много вариантов, совсем непростых :) Исходя из ощущений и того, как вы описываете таблицу, я думаю, что вы должны использовать ЗАКЛЮЧЕННУЮ ИСПРАВЛЯЮЩУЮСЯ КЛАВИШУ и добавить до 8 столбцов. Если столбцы не распределены, например, 2 столбца - это даты, которые растут в одно и то же время, такие как начало, конец или идентификаторы, которые растут синхронно, это не хорошее решение. Если данные равномерно распределены по 8 столбцам, то это действительно хороший вариант SORTKEY.

Вам нужно провести много тестов, есть много вариантов, у вас есть только эта таблица или другие таблицы?

Другой вопрос: какой тип DISTSTYLE вы будете использовать? Стол маленький, большой? У вас есть несколько вариантов, зависит от количества свободного места на каждом узле и других факторов. Попробуйте все по одному, если у вас достаточно места.

Смотрите здесь: https://docs.aws.amazon.com/redshift/latest/dg/viewing-distribution-styles.html

Дополнительная информация может помочь мне лучше ориентироваться. Проверьте эту ссылку: https://docs.aws.amazon.com/redshift/latest/dg/tutorial-tuning-tables.html

GL!

...