Introdução: SQLServer2005SP2 nos traz a função vardecimal. Esta função permite que os dados decimais originais de comprimento fixo sejam armazenados em um formato de comprimento variável no arquivo de dados. Diz-se que esta função pode economizar espaço para o data warehouse, e o SQLServer2008 é. com base nisso. A função de compactação de dados foi aprimorada.
A função de compactação de dados no SQL Server foi iniciada no SQL Server 2005. Um novo formato de armazenamento chamado vardecimal foi adicionado às edições corporativas e de desenvolvimento. Essa função pode afetar campos decimais e numéricos. Se as tabelas do banco de dados contiverem dados do tipo decimal e numérico, os usuários poderão usar o formato de armazenamento vardecimal para reduzir o tamanho do banco de dados. É importante notar que a quantidade de espaço que pode ser economizada depende de quantas colunas de dados decimais ou numéricos o banco de dados contém, da distribuição dos dados e do tamanho da tabela.
Usar compactação de dados
É essa função de compactação de dados que se tornou outro novo recurso do SQL Server 2008: compactação de dados. Usando esse recurso, você pode reduzir o tamanho de subconjuntos de tabelas de dados, índices e partições. Mas por que essa função que existia anteriormente no SQL Server 2005 deveria ser melhorada na versão de nova geração do sistema? Em um ambiente de mercado onde os custos de armazenamento estão diminuindo constantemente, quais benefícios a tecnologia de compactação de dados pode trazer para as empresas?
Embora os custos de armazenamento não sejam mais um fator sensível ao qual as empresas prestam atenção, isso não significa que o tamanho do banco de dados não terá impacto na eficiência das operações empresariais, porque além de afetar os custos de armazenamento, o tamanho do banco de dados também está fortemente relacionado ao gerenciamento. custos e questões de desempenho.
Em primeiro lugar, como o backup do banco de dados precisa ser feito, quanto maior o tamanho do banco de dados, maior será o tempo de backup e o custo do hardware de backup aumentará. Outro custo de gerenciamento é o custo de manutenção do banco de dados. Em termos de desempenho, quando o SQL Server verifica o disco para ler dados, ele lê os dados em unidades de páginas de dados. Portanto, se uma página de dados contiver mais linhas de dados, mais dados o SQL Server obterá em uma página de dados IO. ser mais, o que também trará melhorias de desempenho.
Em comparação com os dados compactados vardecimais no SQL Server2005SP2, os dados de teste atualmente lançados pelo SQLServer2008 usam uma nova tecnologia de compactação de dados para atingir uma taxa de armazenamento mais alta, juntamente com o aumento do espaço de armazenamento para recuperação de desastres pelas empresas, todos esses são SQLServer2008. esse novo recurso.
Página 2: Dois modos de compactação
Depois de compreender os benefícios reais da compactação de dados, você pode sentir a penetração do conceito. Com a ajuda da compactação de dados, os custos de armazenamento são reduzidos, o desempenho da consulta é melhorado, a E/S é reduzida e as taxas de cliques no buffer são aumentadas. Pode-se observar que esta função ainda é muito eficaz no processo de aplicação. Existem dois métodos de aplicação para compactação de dados no SQL Server 2008, ou seja, compactação de linha e compactação de página.
Selecionando o tipo de compactação durante o Assistente de compactação de dados
Compressão de linha. A compactação de linha pode armazenar tipos de comprimento fixo como tipos de armazenamento de comprimento variável. Por exemplo, uma coluna char(100) armazenada em um formato de armazenamento de comprimento variável usará apenas os dados definidos pela quantidade de armazenamento. O "SQLServer2008" armazenado só precisa armazenar 15 caracteres após a compactação em vez de todos os 100 caracteres, economizando assim 85% de espaço de armazenamento. Esta é uma extensão da ideia do formato de armazenamento vardecimal fornecido no SQLServer2005ServicePack2. Deve-se notar também que este modo de compactação otimizará os valores NULL e 0 de todos os tipos de dados para que não ocupem nenhum byte.
Embora a compactação de dados do SQLServer2008 estenda essa funcionalidade, todos os tipos de dados de comprimento fixo são processados, incluindo inteiro, char e float. Agora os dados não são armazenados em bytes de tamanho fixo, mas nos bytes mínimos necessários, o que pode ser realizado simplesmente habilitando a compactação de linha. Entretanto, a compactação de linha não pode lidar com os tipos de dados XML, BLOB e MAX.
Modo de compactação de página. Esse recurso de compactação, baseado na compactação de linha, minimiza os dados redundantes armazenados, armazenando apenas uma vez os mesmos bytes de evento em uma página. Tabelas e índices são compactados usando compactação de página. Além da compactação de linha, também são usadas compactação de prefixo e compactação de dicionário.
A compactação de dados reduzirá o tamanho da tabela ou das métricas do índice. É melhor avaliar primeiro a economia de espaço após a compactação. Cada página é compactada individualmente e prefixos e dicionários também são armazenados na página. Como uma página é a unidade atômica de alocação de armazenamento, não faz sentido compactar meia página em um quarto de página. Portanto, o processo de compactação só será iniciado quando o conteúdo da página estiver quase cheio.
Há também uma compensação de desempenho ao usar a compactação de linhas e páginas, pois o uso da CPU aumentará, mas o uso de E/S e o consumo de memória diminuirão. Mas todas as opções de compactação podem se tornar opções exclusivas do SQLServer2008 Enterprise Edition.
Página 3: Como usar a compactação de dados
Apêndice (como usar compactação de dados):
(1) Habilitar compactação de linha
Se quisermos habilitar a compactação de linhas em uma tabela específica, podemos executar a seguinte instrução:
CRIAR TABELA Alfa(col1 int,col2 char(1000))
COM (DATA_COMPRESSION = LINHA)
(2) Habilitar compactação de página
Se quisermos habilitar a compactação em uma partição específica, podemos executar a seguinte instrução:
CRIAR TABELA Alpha_Partition(col1 int,col2 char(1000))
ONPartitionScheme(col 1)
COM
(DATA_COMPRESSION = PÁGINA ATIVADA)
PARTIÇÕES(1-3)
(3) Modificar compactação
Se quiser modificar um índice existente para usar compactação, execute a seguinte instrução:
ALTER INDEX Collndx NA RECONSTRUÇÃO Alfa
COM (DATA_C0MPRESSION=PÁGINA)
ALTER INDEX Collndx NA RECONSTRUÇÃO Alfa
partição=2
COM (DATA_COMPRESSION=PÁGINA)
As opções de compactação no SQL Server 2008 podem ser definidas via Opção ao criar uma tabela ou índice, por exemplo:
CREATE TABLE TestTable (col1 int,col2varchar(200))WITH(DATA_COMPRESSION = ROW);
Se precisar alterar as opções de compactação de uma partição, você pode usar a seguinte instrução:
ALTER TABLE TestTable REBUILD PARTITION = 1 COM(DATACOMPRESSION=PAGE);
Se precisar definir diferentes opções de compactação para cada partição da tabela particionada, você pode usar a seguinte instrução: (SQLServer2008 pode usar diferentes opções de compactação para diferentes partições. Isso é muito importante para aplicativos de data warehouse porque a tabela de fatos do data warehouse Geralmente há uma ou várias partições ativas e os dados nessas partições geralmente precisam ser atualizados. Para evitar que a compactação de dados traga carga de processamento adicional para atualizações de dados nessas partições, você pode desativar a opção de compactação para essas partições.
CREATE TABLE PartitionedTable (col1 int, col2varchar(200))
NO PS1 (col1)
COM (DATA_COMPRESSION = LINHA NAS PARTIÇÕES(1),
DATA_COMPRESSION = PÁGINA NA PARTIÇÃO(2 A 4));
Se estiver definindo opções de compactação para um índice, você poderá usar:
CRIAR ÍNDICE IX_TestTable_Col1 ONTestTable(Col1)WITH(DATA_COMPRESSION = ROW);
Se quiser modificar as opções de compactação de um índice, você pode usar:
ALTER INDEX IX_TestTable_Col1 ONTestTableREBUILDWITH(DATA_COMPRESSION = ROW);