Quero criar uma codificação de colunas no Amazon Redshift.
Breve descrição
Para configurar a codificação de colunas no Amazon Redshift, use os comandos ENCODE AUTO e ANALYZE COMPRESSION. Para mais informações, consulte Codificações de compactação.
Se você aplicar compactação a uma coluna de chave de classificação, o desempenho da consulta poderá diminuir, pois ela adiciona verificações de blocos para determinados tipos de consulta. Se você especificar manualmente os tipos de codificação para uma tabela, defina a codificação RAW para a coluna da chave de classificação.
Para mais informações, consulte Práticas recomendadas do Amazon Redshift para projetar tabelas.
Resolução
Usar ENCODE AUTO para maximizar a compactação da coluna
Use ENCODE AUTO para otimizar automaticamente a compactação de colunas em suas tabelas do Amazon Redshift. Por padrão, ENCODE AUTO analisa continuamente os padrões de workload do seu cluster para ajudar a maximizar o desempenho da consulta e reduzir a necessidade de gerenciamento manual da compactação.
Se você especificar um tipo de codificação em qualquer coluna na tabela, ENCODE AUTO será desativado.
Para verificar se você ativou ENCODE AUTO em uma tabela, use a seguinte consulta:
SELECT "table", encoded FROM svv_table_info WHERE "table" = 'table_name';
Observação: substitua table_name pelo nome da sua tabela.
Executar o comando ANALYZE COMPRESSION para revisar uma análise da tabela
Para realizar uma análise de compactação e gerar um relatório que sugira codificação de compactação para sua tabela, execute o comando ANALYZE COMPRESSION:
ANALYZE COMPRESSION lineitem;
Observação: substitua lineitem pelo nome da sua tabela.
Exemplo de saída:
Table | Column | Encoding | Est_reduction_pct
----------+-----------------+----------+-------------------
lineitem | l_orderkey | raw | 0.00
lineitem | l_partkey | az64 | 33.34
lineitem | l_suppkey | az64 | 45.46
lineitem | l_linenumber | az64 | 87.88
lineitem | l_quantity | az64 | 80.00
lineitem | l_extendedprice | az64 | 60.32
lineitem | l_discount | az64 | 90.77
lineitem | l_tax | az64 | 90.77
lineitem | l_returnflag | zstd | 80.99
lineitem | l_linestatus | zstd | 86.86
lineitem | l_shipdate | az64 | 61.15
lineitem | l_commitdate | az64 | 61.26
lineitem | l_receiptdate | az64 | 61.15
lineitem | l_shipinstruct | zstd | 96.50
lineitem | l_shipmode | bytedict | 88.89
lineitem | l_comment | zstd | 70.36
lineitem | l_dummy | zstd | 99.97
(17 rows)
Observação: para cada coluna, o relatório inclui uma estimativa da redução potencial de espaço em disco em comparação com a codificação RAW.
(Opcional) Para ajudar a entender a saída do comando ANALYZE COMPRESSION, visualize a definição da tabela. Execute o seguinte comando:
SHOW TABLE lineitem;
Observação: substitua lineitem pelo nome da sua tabela.
Exemplo de saída:
Show Table DDL statement
-------------------------------------------------
CREATE TABLE public.lineitem (
l_orderkey integer ENCODE raw,
l_partkey integer ENCODE raw,
l_suppkey integer ENCODE raw,
l_linenumber integer ENCODE raw,
l_quantity numeric(15,2) ENCODE raw,
l_extendedprice numeric(15,2) ENCODE raw,
l_discount numeric(15,2) ENCODE raw,
l_tax numeric(15,2) ENCODE raw,
l_returnflag character(1) ENCODE raw,
l_linestatus character(1) ENCODE raw,
l_shipdate date ENCODE raw,
l_commitdate date ENCODE raw,
l_receiptdate date ENCODE raw,
l_shipinstruct character(25) ENCODE raw,
l_shipmode character(10) ENCODE raw,
l_comment character varying(44) ENCODE raw,
l_dummy character varying(10) ENCODE raw
)
DISTSTYLE AUTO
SORTKEY ( l_orderkey );
(1 row)
ANALYZE COMPRESSION atua como uma ferramenta consultiva e não modifica as codificações das colunas da tabela. Para aplicar as codificações sugeridas, recrie a tabela ou execute o comando ALTER TABLE:
ALTER TABLE lineitem ALTER COLUMN l_dummy ENCODE example_compression;
Observação: substitua lineitem pelo nome da tabela, l_dummy pelo nome da coluna e example_compression pela codificação de compactação.
Informações relacionadas
Como faço para detectar e liberar bloqueios no Amazon Redshift?
Compactação de colunas para reduzir o tamanho dos dados armazenados