2017-01-20 2 views
0

Я использую временные таблицы temp, TempStaging, для выполнения некоторых слияний. Данные в некоторых столбцах для главной таблицы MainTable кодируются в lzo, скажем, C1. Выход слияния возвращается в MainTable.Кодирование в временных таблицах в RedShift

Чтобы обеспечить такой же ключ ключа для TempStaging, я создаю его, используя таблицу create. По некоторым причинам я не могу использовать Create Table as.

Так что я должен кодировать столбец C1 in в lzo? Или оставить его без кодировки? Будет ли RedShift замыкаться на короткое замыкание [декодирование при выборе из MainTable, кодирование при записи в TempStaging, декодирование при выборе из TempTable для слияния, Кодирование назад при записи в MainTable]

Потому что я думаю, что если это короткое замыкание не Мне лучше оставить кодировку, откупив некоторую память за счет повышения производительности процессора.

-Amit

ответ

0

данных в Redshift всегда декодируется, когда он считывается из таблицы AFAIK. Есть несколько БД, которые могут работать непосредственно на сжатых данных, но Redshift этого не делает.

Нет абсолютного правила о том, следует ли использовать кодировку в таблице темпа. Это зависит от того, сколько данных написано. Я нашел, что быстрее с кодировкой 90%% времени, так что это мой подход по умолчанию.

Как вы заметили, гарантируя, что таблица temp использует тот же ключ ключа, является приоритетом № 1. Вы можете указать ключ dist (и кодировку столбца) в CREATE TABLE AS:

CREATE TABLE my_new_table 
DISTKEY(my_dist_key_col) 
AS 
SELECT * 
FROM my_old_table 
; 
Смежные вопросы