Série DP 300 – Configurar o particionamento de tabela e compactacao de dados

Bom dia,

Finalizando o tópico: Configurar recursos para escala e desempenho, conforme abaixo:

O SQL Server oferece suporte ao particionamento de tabelas e índices. Os dados de tabelas e índices particionados são divididos em unidades que podem ser difundidas por mais de um grupo de arquivos em um banco de dados. Os dados são particionados horizontalmente, de forma que os grupos de linhas são mapeados em partições individuais. No post abaixo tem mais informações sobre:

O particionamento pode ser feito criando no filegroup PRIMARY, em um novo filegroup ou em vários filegroups para a tabela particionada. No Azure Managed instance automaticamente são adicionados vários filegroups para o particionamento da tabela. O Azure SQL Database suporta criação de particionamento apenas no filegroup PRIMARY.

Exemplo de particionamento no filegroup PRIMARY:

CREATE PARTITION FUNCTION myRangePF1 (datetime2(0))
AS RANGE RIGHT FOR VALUES (‘2022-04-01’, ‘2022-05-01’, ‘2022-06-01’) ;
GO

CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
ALL TO (‘PRIMARY’) ;
GO

CREATE TABLE dbo.PartitionTable (col1 datetime2(0) PRIMARY KEY, col2 char(10))
ON myRangePS1 (col1) ;
GO

A compressão é implementada no SQL Server no nível do objeto. Cada índice ou tabela pode ser compactado
individualmente e você tem a opção de compactar partições dentro de uma tabela ou índice particionado. Você
Explore o design de banco de dados baseado em desempenhopode avaliar quanto espaço você economizará usando o sistema sp_estimate_data_compression_savings procedimento armazenado. Antes do SQL Server 2019, este procedimento não oferecia suporte a índices columnstore ou compactação de arquivo columnstore.


Compressão de linha
A compactação de linha é bastante básica e não é muito ouvida; no entanto, não oferece o mesmo
quantidade de compactação (medida pela redução percentual no espaço de armazenamento necessário) nessa página
compressão pode oferecer. A compactação de linha basicamente armazena cada valor em cada coluna em uma linha no
quantidade mínima de espaço necessária para armazenar esse valor. Ele usa um formato de armazenamento de comprimento variável para tipos de dados numéricos como integer, float e decimal, e armazena strings de caracteres de comprimento fixo usando formato de comprimento variável.


Compressão de página
A compactação de página é um superconjunto de compactação de linha, pois todas as páginas serão inicialmente compactadas em linha antes de aplicando a compactação da página. Em seguida, uma combinação de técnicas chamadas prefixo e compressão de dicionário é aplicada aos dados. A compactação de prefixo elimina dados redundantes em uma única coluna, armazenando
ponteiros de volta ao cabeçalho da página. Após essa etapa, a compactação do dicionário procura por valores repetidos em
uma página e os substitui por ponteiros, reduzindo ainda mais o armazenamento. Observe que quanto mais redundância em seu
dados, maior será a economia de espaço ao compactar seus dados. A compressão dos dados ajuda reduzir o tamanho do banco de dados e promover perfomance de I/O em cargas altas de trabalho.


Compressão de arquivamento Columnstore
Os objetos Columnstore são sempre compactados, no entanto, eles podem ser compactados ainda mais usando arquivamento
compactação, que usa o algoritmo de compactação Microsoft XPRESS nos dados. Isso é melhor usado para dados que são lidos com pouca frequência, mas precisam ser retidos por motivos regulatórios ou comerciais. Enquanto esses dados
é ainda mais compactado, o custo da CPU de descompactação tende a superar quaisquer ganhos de desempenho de IO
redução.

Um exemplo que compressão que podemos fazer a nível de pagina:

CREATE NONCLUSTERED INDEX IX_SalesOrderDetail ON [Sales].SalesOrderDetail
with(data_compression=page)

Dúvidas, manda ai 🙂

    Standard

    Leave a comment