Codificação mostly - Amazon Redshift

Codificação mostly

Codificações mostly são úteis quando o tipo de dados de uma coluna é maior do que a maioria dos valores armazenados exige. Ao especificar uma codificação mostly para esse tipo de coluna, você pode compactar a maioria dos valores na coluna para um tamanho menor de armazenamento padrão. Os valores restantes que não podem ser compactados são armazenados na forma bruta. Por exemplo, você pode compactar uma coluna de 16 bits, tal como uma coluna INT2, para um armazenamento de 8 bits.

Geralmente, as codificações mostly funcionam com os seguintes tipos de dados:

  • SMALLINT/INT2 (16 bits)

  • INTEGER/INT (32 bits)

  • BIGINT/INT8 (64 bits)

  • DECIMAL/NUMERIC (64 bits)

Escolha a variação apropriada da codificação mostly para atender ao tamanho do tipo de dado para a coluna. Por exemplo, aplique MOSTLY8 a uma coluna que seja definida como uma coluna de inteiros de 16 bits. A aplicação de MOSTLY16 a uma coluna com um tipo de dados de 16 bits ou MOSTLY32 a uma coluna com um tipo de dados de 32 bits não é autorizada.

As codificações mostly podem ser menos eficazes do que nenhuma compactação quando um número relativamente alto de valores na coluna não pode ser compactado. Antes de aplicar uma dessas codificações a uma coluna, execute uma verificação. A maioria dos valores que você pretende carregar agora (e prováveis futuros carregamentos) devem caber nos intervalos exibidos na seguinte tabela.

Codificação Tamanho de armazenamento compactado Intervalo de valores que podem ser compactados (valores fora do intervalo são armazenados na forma bruta)
MOSTLY8 1 byte (8 bits) -128 a 127
MOSTLY16 2 bytes (16 bits) -32768 a 32767
MOSTLY32 4 bytes (32 bits) -2147483648 a +2147483647
nota

Para valores decimais, ignore o ponto decimal para determinar se o valor se enquadra no intervalo. Por exemplo, 1.234,56 é tratado como 123.456 e pode ser compactado em uma coluna MOSTLY32.

Por exemplo, a coluna VENUEID na tabela VENUE é definida como uma coluna de inteiros brutos, o que significa que seus valores consomem 4 bytes de armazenamento. Contudo, o atual intervalo de valores na coluna é de 0 a 309. Portanto, recriar e recarregar essa tabela com a codificação MOSTLY16 para VENUEID reduziria o armazenamento de cada valor nessa coluna para 2 bytes.

Se os valores de VENUEID referenciados em outra tabela estavam sobretudo no intervalo de 0 a 127, pode fazer sentido codificar essa coluna de chave estrangeira como MOSTLY8. Antes de fazer a escolha, execute várias consultas nos dados da tabela de referência para descobrir se os valores caem principalmente no intervalo de 8 bits, 16 bits ou 32 bits.

A tabela a seguir mostra os tamanhos compactados para valores numéricos específicos quando as codificações MOSTLY8, MOSTLY16 e MOSTLY32 são usadas:

Valor original Tamanho original INT ou BIGINT (bytes) Tamanho compactado MOSTLY8 (bytes) Tamanho compactado MOSTLY16 (bytes) Tamanho compactado MOSTLY32 (bytes)
1 4 1 2 4
10 4 1 2 4
100 4 1 2 4
1000 4 O mesmo tamanho de dados brutos 2 4
10000 4 2 4
20000 4 2 4
40000 8 O mesmo tamanho de dados brutos 4
100000 8 4
2000000000 8 4