O que é a compressão de dados?

Este é um recurso que pode ser utilizado com o Protheus para melhorar a performance e otimizar o consumo de espaço em disco do banco de dados. Com isto, você pode reduzir o tamanho do banco de dados em até 70%, ganhando agilidade na leitura, escrita e no tempo de restore. 

Alguns dos métodos utilizados no teste e expostos nesta página fazem parte do pacote Oracle Advanced Compression (disponível a partir da versão 12c), que deve ser contratado à parte com o fabricante. Confira a página do fornecedor sobre a compressão avançada e o data sheet disponibilizado. Além destas páginas também há um artigo no blog da Oracle sobre a compressão.

Tipos de compressão de dados no Oracle

Oracle Advanced Compression

Esta feature está disponível a partir da versão 9i, tendo alguns métodos disponíveis a partir da versão 12c. 

A compressão basic é disponibilizada com a licença Enterprise do Oracle, e não representa custos à parte deste licenciamento para uso; já o pacote Oracle Advanced Compression contempla diferentes tipos de compressão. Dentre estes, foram avaliados os tipos Advanced Row Compression e Advanced Index Compression, nos níveis Low e High.

Não há opções de compressão para edições Standard das databases. Antes de realizar qualquer operação de compressão, verifique junto ao fornecedor se isto representará algum custo adicional. A TOTVS não se responsabiliza por custos adicionais causados pelo uso das features descritas nesta página.

Conforme constatado abaixo, não há opção de compressão para databases Standard. Para mais informações sobre features e licenciamento, consulte a documentação do fabricante.

Exibindo Nota fotográfica


Quais são os benefícios da compressão de dados?

Há uma redução significativa no espaço em disco consumido, bem como diminuição de quantidade de I/O, otimizando o desempenho de instruções SELECT e DELETE.

Quais os impactos da compressão de dados?

Além do descrito acima, é provável o aumento do consumo de CPU na máquina de banco de dados. 

O tipo de compressão escolhida influencia na frequência de manutenções e execuções de script na base de dados. Antes de executar qualquer manutenção, meça o esforço necessário para o gerenciamento da base com compressão aplicada.

Qual tipo de compressão utilizar?

Foram avaliadas as seguintes opções: Basic Table Compression, Advanced Row Compression e Advanced Index Compression.

Os scripts disponibilizados realizam um select em sua base de dados. Selecione o resultado do select e, com acompanhamento de um DBA, execute o retorno para que a compressão seja efetuada.

A compressão básica para tabelas (Basic Table Compression) é disponibilizada com a versão Enterprise do Oracle e não tem custo adicional para ser utilizada. Esta atua somente em cargas diretas (ALTER TABLE), e não nos dados carregados com operações DML (Insert, Updates) que é o padrão de alteração de um ERP. Portanto, é importante ressaltar que isto demandará manutenções frequentes na base de dados. Caso seja possível realizar paradas frequentes em seu ambiente para manutenções periódicas, este tipo de compressão pode atender, tendo o custo do esforço para executá-la. Sempre consulte um DBA para avaliação do ambiente e estudo do impacto de uma alteração em sua base de dados.  


set pagesize 0
set feedback off
select 'ALTER TABLE '||owner||'.'||table_name||' MOVE COMPRESS;' 
from dba_tables 
where OWNER='%schema%';

A compressão avançada é uma feature adicional, contratada separadamente com o fornecedor.

Este tipo de compressão se adequa melhor à ambientes OLTP (On-Line Transaction Processing), ou seja, sistemas transacionais, e compacta dados manipulados por quaisquer operações SQL.

set pagesize 0
set feedback off
select 'alter index '||owner||'.'||index_name||' rebuild COMPRESS ADVANCED HIGH;' 
from dba_indexes
where OWNER='%schema%'
and index_name not LIKE '%$$%';
set pagesize 0
set feedback off
select 'ALTER TABLE '||owner||'.'||table_name||' MOVE ROW STORE COMPRESS ADVANCED;'
from dba_tables 
where OWNER='%schema%';

A remoção da compressão de dados pode ser necessária em determinados casos, por exemplo, ao migrar uma base de dados para outra versão ou para uma instalação que não possua o licenciamento necessário desta feature. Nestes casos, disponibilizamos os scripts para a remoção da compressão.

set pagesize 0
set feedback off
select 'alter index '||owner||'.'||index_name||' rebuild NOCOMPRESS;' 
from dba_indexes
where OWNER='%schema%'
and index_name not LIKE '%$$%';
set pagesize 0
set feedback off
select 'ALTER TABLE '||owner||'.'||table_name||' MOVE NOCOMPRESS;' 
from dba_tables
where OWNER='%schema%';