Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

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

Nota
titleAtenção: Tipos de compressão

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, há também 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 Basic Table Compression (compressão básica de tabelas) é disponibilizada com a licença Enterprise do Oracle Database, e não representa custos à parte deste licenciamento para uso; já o pacote Oracle Advanced Compression (compressão avançada) contempla diferentes tipos de compressão. Dentre estes, foram avaliados os tipos Advanced Row Compression e Advanced Index Compression no nível High.

Aviso

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.

Expandir
titleTipos de compressão e licenciamento

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áficaImage RemovedImage Added

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. Avalie, junto a um DBA, quais tabelas devem receber a compressão e qual modo é o ideal para seu ambiente.

Testes com a compressão

Nos testes realizados foi utilizado o Oracle Database 19c Enterprise, com os binários Harpia e release 12.1.33 do Protheus.

A base de dados foi inicialmente carregada com pouco mais de 100GB; o gráfico abaixo representa o tamanho total da base sem compressão (NoCompress), com a compressão básica de tabelas aplicada (Basic) e com a compressão avançada de índices e tabelas (Advanced). Neste caso, a compressão avançada trouxe 88% de redução no tamanho total da base.

Nota
titleAtenção - Percentual de redução
Este percentual é variável de acordo com sua arquitetura e com os dados existentes na base; o valor apresentado é apenas uma referência oriunda do teste de homologação da feature.

Totvs custom tabs box
tabsCompressão básica, Compressão avançada, Removendo a compressão
ids01,02,03
Informações

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.

Nota

Nos scripts, substitua '%schema%' para o Schema do Protheus.

Nota
titleOrdem dos scripts

Ao executar a compressão ou remover a compressão, realize primeiro as operações nas tabelas

Totvs custom tabs box items
defaultyes
referencia01

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 representam o padrão de alterações de um ERP. É 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.  


Expandir
titleScript para a compactação básica de tabelas
Bloco de código
languagesql
set pagesize 0
set feedback off
select 'ALTER TABLE '||owner||'.'||table_name||' MOVE COMPRESS;' 
from dba_tables 
where OWNER='%schema%';
Totvs custom tabs box items
defaultno
referencia02
Aviso
titleAtenção

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.

Expandir
titleScripts para a compactação avançada
Bloco de código
languagesql
titleCompressão avançada de tabelas
set pagesize 0
set feedback off
select 'ALTER TABLE '||owner||'.'||table_name||' MOVE ROW STORE COMPRESS ADVANCED;'
from dba_tables 
where OWNER='%schema%';
Bloco de código
languagesql
titleRebuild com compressão avançada de índices
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 '%$$%'
and index_name not LIKE '%_PK';
Bloco de código
languagesql
titleRebuild de índices primários (PK)
set pagesize 0
set feedback off
select 'alter index '||owner||'.'||index_name||' rebuild;' from dba_indexes
where OWNER='%schema%'
and index_name LIKE '%_PK';
Totvs custom tabs box items
defaultno
referencia03

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.

Expandir
titleScripts para a remoção da compactação
Bloco de código
languagesql
titleRemovendo a compressão de tabelas
set pagesize 0
set feedback off
select 'ALTER TABLE '||owner||'.'||table_name||' MOVE NOCOMPRESS;' 
from dba_tables
where OWNER='%schema%';
Bloco de código
languagesql
titleRebuild de índices removendo a 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 '%$$%'
and index_name not LIKE '%_PK';
Bloco de código
languagesql
titleRebuild de índices primários (PK)
set pagesize 0
set feedback off
select 'alter index '||owner||'.'||index_name||' rebuild;' from dba_indexes
where OWNER='%schema%'
and index_name LIKE '%_PK';