Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Adicionado informação sobre retorno da consulta
Informações

Para mais informações sobre esta feature, consulte também a documentação do fabricante.

Aviso
titleAtenção

Este procedimento pode levar uma quantidade considerável de tempo. Faça a análise de seu cenário antes de iniciá-lo e determine um horário para esta manutenção.

Índice
outlinetrue


O que é a compactação de dados?

A compactação de base de dados é 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.

Esta feature está disponível nas seguintes versões:

Versão SQL ServerEdição SQL Server
SQL Server 2008 Enterprise
SQL Server 2008 R2Enterprise
SQL Server 2012Enterprise
SQL Server 2014Enterprise
SQL Server 2016Enterprise, Standard
SQL Server 2017Enterprise, Standard
SQL Server 2019Enterprise, Standard
Informações

Reforçamos que edições limitadas e tipicamente classificadas como Express não são homologadas ou suportadas para uso com o Protheus.

Compactação por linha ou por página?

Para o Protheus, o tipo de compactação mais eficiente é o de página, pois desta maneira os registros redundantes serão armazenados em um local da página e referenciados nas outras ocorrências.

A compactação de linha não é muito eficiente para o produto, já que o Protheus preenche automaticamente alguns campos com espaços vazios.

Posso fazer a compactação dos índices e tabelas?

Sim. Coloque o nível de compactação para páginas.

Dica

Você pode executar a compactação do banco de dados inteiro ou de tabelas específicas, conforme sua necessidade.

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

Você pode ter ganhos em espaço e no tempo de leitura no banco de dados pois, ao economizar espaço, o desempenho de cargas de trabalho intensivas de I/O pode ser melhorado, já que os dados serão armazenados em menos páginas e, consequentemente, as consultas precisarão ler menos páginas do disco. 

Nota
titleAtenção

Pode haver um overhead de CPU para a compactação e descompactação de dados. 

Quais os impactos da compactação de dados?

Além do espaço em disco e velocidade, você pode ter um aumento no consumo de CPU. 

Dica

Outras manutenções no banco de dados, como atualização de estatísticas e rebuild, são importantes para otimizar ainda mais o seu ambiente. 

Nota
titleAtenção

É imprescindível o apoio de um DBA em manutenções como rebuild, coleta de estatísticas, e compressão de dados e index

Cuidados a serem tomados

Aviso
titleCuidado

O modo de recuperação do banco de dados deve estar em simple para a compactação de dados. Com o modo full, o datafile do banco de dados pode ter um crescimento muito grande, comprometendo o espaço em disco.

Após a finalização da manutenção, é possível configurar o modo de recuperação de volta ao que for recomendado para sua arquitetura.   

Nota
titleAtenção

Pode haver um overhead de CPU para a compactação e descompactação de dados, conforme a documentação do fabricante

Faça a análise do seu cenário antes de executar a compressão. É possível que seja necessário mais de uma janela de manutenção para a aplicação da compressão.


Expandir
titleScripts para a compactação
Informações
titleRetorno da consulta

Ao executar os scripts, o resultado trará o comando de alteração de índices e tabelas preparado. Copie o resultado e, em uma nova consulta, execute o script.

É possível que em alguns resultados o banco de dados retorne NULL. Nestes casos, remova as linhas NULL antes de executar o script.

Totvs custom tabs box
tabsCompactação de índices,Compactação de tabelas,Verificando a compactação
ids01,02,03
Totvs custom tabs box items
defaultyes
referencia01
SELECT
'ALTER INDEX ' + QUOTENAME(name)
+ ' ON '
+ QUOTENAME(OBJECT_SCHEMA_NAME(object_id))
+ '.'
+ QUOTENAME(OBJECT_NAME(object_id))
+ ' REBUILD PARTITION = ALL WITH (FILLFACTOR = 90, DATA_COMPRESSION = PAGE)'
FROM sys.indexes
WHERE OBJECTPROPERTY(object_id, 'IsMSShipped') = 0
AND OBJECTPROPERTY(object_id, 'IsTable') = 1
ORDER BY CASE type_desc
WHEN 'CLUSTERED' THEN 1
ELSE 2
END
Totvs custom tabs box items
defaultno
referencia02
SELECT
'ALTER TABLE ' + name
+ ' REBUILD WITH (DATA_COMPRESSION = PAGE);'
FROM sysobjects
WHERE xtype = 'U'
Totvs custom tabs box items
defaultno
referencia03
SELECT
    st.name,
sp.data_compression,
sp.data_compression_desc
FROM sys.partitions sp
INNER JOIN sys.tables st
ON st.object_id = sp.object_id
WHERE data_compression = 0