Á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 compressão basic  Basic Table Compression (compressão básica de tabelas) é disponibilizada com a licença Enterprise do Oracle Database, e não representa custos adicionais à 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 , nos níveis Low e High.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.

Image Added

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

Há uma redução significativa no espaço em disco consumido, e 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?

Aumento 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.

Image Added

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, após isto, realize a operação nos índices; isto evitará que os índices fiquem desatualizados.

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';