Redshift: Какая может быть подходящая комбинация DIST KEY и SORT KEY для мастер-таблиц? - PullRequest
0 голосов
/ 05 октября 2018

Позвольте мне спросить о том, что может быть подходящим distkey (стиль dist) и ключом сортировки для главных таблиц в Redshift.

У нас есть несколько основных таблиц с разными размером, назначением и количеством элементов, и теперь мы проверяем, чтоКомбинация SORTKEY и DISTKEY была бы более подходящей.

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

Ex.MST_CUSTOMER (около 7 миллионов, 850 МБ в SQL Server)

CUSTOMER_ID     <-- Primary Key, Unique and High Cardinality
CUSTOMER_CATEGORY   <-- Low Cardinality (like VIP, BZ) but not always uses in BI query
CUST_NAME
CUST_ADDRESS...

Во-первых, если мы можем использовать оба столбца для SORTKEY, который является лучшим порядком в этом случае?

1.Should Low cardinality comes first (CUST_CATEGORY, CUST_ID) 
2.Hifh frequency comes first (CUST_ID, CUST_CATEGORY)
3.should chose only single column eigher of CUST_ID or CUST_CATEGORY

Ив общем, могу ли я спросить, какая комбинация является лучшей в таком случае?

1.DISTSTYLE KEY & COMPOUND SORTKEY
2.DISTSTYLE KEY & SORTKEY
3.DISTSTYLE ALL & INTERLEAVED SORTKEY...

Я думаю, что если бы мы часто находили 'DS_BCAST_INNER' в плане запросов, нам лучше рассмотреть 'DISTSTYLE ALL'.Но все еще не уверен, что может быть лучшей практикой для мастер-столов.

Любое предложение будет оценено снова.

С наилучшими пожеланиями

1 Ответ

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

Если вы часто присоединяетесь по customer_id, тогда сделайте это ключом сортировки.Customer_category будет хорошим вторичным ключом сортировки.Данные должны распространяться вместе с данными, к которым они будут присоединены.Если у вас есть таблицы фактов, распределенные по идентификатору клиента, сделайте этот ключ распределения.Это также зависит от того, сколько новых клиентов вы получите.Если продажи сильно перекошены для новых клиентов, то распределение ваших данных будет искажено, и customer_id не будет хорошим ключом распределения.

...