Compressão de Dados no
Microsoft SQL Server 2008
Pedro Antonio Galvão Junior.
MVP – Windows Server System – SQL Server.
Membro/Palestrante e Colunista Técnico Oficial Microsoft Brasil.
Coordenador de Projetos/DBA – Látex São Roque.
Professor – Núcleo de Tecnologia da Informação – AES São Roque.
[email protected]
Agenda
•
•
•
•
•
Microsoft SQL Server 2008.
Gerenciando o tamanho dos Dados no Storage.
Vardecimal Storage.
Compressão de Dados.
Compressão de backup de banco de dados.
Microsoft SQL Server 2008
GERENCIANDO O TAMANHO
DOS DADOS NO STORAGE
Gerenciando o Tamanho dos
Dados no Storage
Tamanho de utilização reduzido no Storage
Otimização de I/O-bound na performance da query
Tradeoff para a CPU custo aumentado no read/write
Problemas e Soluções
• Quais seriam os problemas?
• Soluções:
– Data Compression
– Backup Compression
Problemas de armazenamento
Large Database
Storage Cost
Manageability Cost
Backup/Recovery
Create/Rebuild of indexes
Bulk Import
Consistency Checking (e.g. CheckDB)
Soluções
Reduzir o espaço de armazenamento
Eficiência no armazenamento das página de dados e linhas
(+) Maior alocação de dados em memória.
(+) Maior performance para carga de dados.
(-) Menor custo ou degração da utilização de CPU
Solução baseada no Microsoft SQL Server
2005:
Vardecimal
Storage
Format
SQL Server
Compression
2008: Backup
Compression
2008: ROW
and PAGE
Compression
VARDECIMAL STORAGE
Vardecimal Storage
Os tipos de dados decimal e numeric normalmente são
armazenados no disco como dados de comprimento fixo. O tipo de
dados numeric é funcionalmente equivalente ao tipo de dados
decimal. No SQL Server 2005 Service Pack 2 (SP2) e nas versões
posteriores, os tipos de dados decimal e numeric podem ser
armazenados como uma coluna de comprimento variável usando o
formato de armazenamento vardecimal. Esse formato de
armazenamento está disponível somente nas edições Enterprise,
Developer e Evaluation do SQL Server.
Efeitos:
Redução do espaço de armazenamento de dados;
Elevação de quantidade transferidos por segundo;
Pequeno aumento de utilização de CPU;
Mudanças não permitidas na estrutura da aplicação;
Observações - Vardecimal Storage
 Requer SQL Server 2005 SP2 ou versões posteriores.
O formato de armazenamento vardecimal não pode ser habilitado nos bancos de
dados do sistema: mestre, modelo, msdb, tempdb ou distribuição. Quando uma
consulta classifica dados armazenados em formato de armazenamento vardecimal,
eles são classificados no tempdb em um estado decimal fixo. Geralmente, os dados
irão exigir um espaço significativamente maior no tempdb do que o espaço ocupado
pela tabela de origem do formato de armazenamento vardecimal no banco de dados
de origem.
O formato de armazenamento vardecimal não pode ser aplicado a exibições,
exibições indexadas, índices XML e índices de texto completo. No entanto, as tabelas
subjacentes a esses objetos podem usar o formato de armazenamento vardecimal.
 Tabelas internas, como as tabelas de metadados e notificação, não podem usar o
formato de armazenamento vardecimal.
Observações - Vardecimal Storage
Funções com valor de tabela não podem usar o formato de armazenamento
vardecimal.
A coluna numeric armazenada em uma tabela no formato de armazenamento
vardecimal também não pode ser criptografada.
Não há suporte para partições heterogêneas (ou seja, partições com formato
decimal fixo e de armazenamento vardecimal).
Novas tabelas criadas a partir da tabela com formato de armazenamento vardecimal
usando a sintaxe Transact-SQL SELECT … INTO… não herdam o formato de
armazenamento vardecimal.
Não é possível alterar os estados de formato de armazenamento vardecimal de
bancos de dados habilitados para espelhamento de banco de dados. É necessário
remover o espelhamento de banco de dados para habilitar o formato de
armazenamento vardecimal no banco de dados. No entanto, não é necessário remover
o espelhamento de banco de dados quando tabelas individuais são habilitadas ou
desabilitadas para o formato de armazenamento vardecimal.
Vardecimal Storage
Precisão da
coluna
Tamanho de
decimal fixo
original (bytes)
Área máxima de
dados
vardecimais
(bytes)
Sobrecarga para
armazenar
deslocamento
(bytes)
Armazenamento
vardecimal
máximo usado
(bytes)
1-3
4-6
7-9
10-12
13-15
16-18
19
20-21
22-24
25-27
28
29-30
31-33
34-36
37-38
5
5
5
9
9
9
9
13
13
13
13
17
17
17
17
3
4
5
6
8
9
10
10
11
13
14
14
15
16
18
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
5
6
7
8
10
11
12
12
13
15
16
16
17
18
20
COMPRESSÃO DE DADOS
Compressão de Dados
• Melhora na performance de Consultas
• Habilitado por tabela ou indice
• Tradeoff em utilização de CPU
Data Compression
DateId
CarrierTracking
OfferID
PriceDisc
20070601 4911-403C-98
10
0.00
20070601 4911-403C-99
10
0.00
20070602 6431
10
0.00
20070602 6431-4D57-83
10
0.00
20070602 6431-4D57-84
10
0.00
20070602 6431-4D57-85
10
100.00
20070603 4E0A-4F89-AE
10
0.00
Data Compression
DateId
CarrierTracking
OfferID
PriceDisc
20070601 4911-403C-98
10
0.00
20070601 4911-403C-99
10
0.00
20070602 6431
10
0.00
20070602 6431-4D57-83
10
0.00
20070602 6431-4D57-84
10
0.00
20070602 6431-4D57-85
10
100.00
20070603 4E0A-4F89-AE
10
0.00
DateId
OfferID
PriceDisc
20070601 4911-403C-98
10
0.00
20070601 4911-403C-99
10
0.00
20070602 6431
10
0.00
20070602 6431-4D57-83
10
0.00
20070602 6431-4D57-84
10
0.00
20070602 6431-4D57-85
10
100.00
20070603 4E0A-4F89-AE
10
0.00
CarrierTracking
• Microsoft® SQL
Server™ 2005
Service Pack 2 (SP2)
– VarDecimal
• Permite utilizar
valores decimais
para armazenamento
de dados de
tamanho variável.
Data Compression
DateId
CarrierTracking
OfferID
PriceDisc
20070601 4911-403C-98
10
0.00
20070601 4911-403C-99
10
0.00
20070602 6431
10
0.00
20070602 6431-4D57-83
10
0.00
20070602 6431-4D57-84
10
0.00
20070602 6431-4D57-85
10
100.00
20070603 4E0A-4F89-AE
10
0.00
DateId
OfferID
PriceDisc
20070601 4911-403C-98
10
0.00
20070601 4911-403C-99
10
0.00
20070602 6431
10
0.00
20070602 6431-4D57-83
10
0.00
20070602 6431-4D57-84
10
0.00
20070602 6431-4D57-85
10
100.00
20070603 4E0A-4F89-AE
10
0.00
CarrierTracking
• Coluna com
tamanho fixo:
– SQL Server 2008
estende a lógica de
tamanho fixo para
todos os tipos de
campos:
• int, bigint, etc.
Data Compression
DateId
OfferID
PriceDisc
20070601 4911-403C-98
10
0.00
20070601 4911-403C-99
10
0.00
20070602 6431
10
0.00
20070602 6431-4D57-83
10
0.00
20070602 6431-4D57-84
10
0.00
20070602 6431-4D57-85
10
100.00
20070603 4E0A-4F89-AE
10
0.00
DateId
OfferID
PriceDisc
1
CarrierTracking
CarrierTracking
2
2007060
4911-403C-9
3
– A lista de prefixos é
armazenada
na
página para prefixos
comuns.
6431-4D57-8
1 1
2 8
10
0.00
1 1
2 9
10
0.00
1 2
3
10
0.00
1 2
3 3
10
0.00
1 2
3 4
10
0.00
1 2
3 5
10
100.00
1 3
4E0A-4F89-AE
10
0.00
4
• Compressão de
Prefixo:
– Valores individuais
são substituidos:
• Token para prefixo
• Sufixo para valor
Data Compression
DateId
1
CarrierTracking
2
2007060
OfferID
3
4911-403C-9
PriceDisc
6431-4D57-8
1 1
2 8
10
0.00
1 1
2 9
10
0.00
1 2
3
10
0.00
1 2
3 3
10
0.00
1 2
3 4
10
0.00
1 2
3 5
10
100.00
1 3
4E0A-4F89-AE
10
0.00
DateId
CarrierTracking
OfferID
PriceDisc
4
1
2007060
1
1
1
1
2 8
3
4
1
1
2 9
3
4
1
2
3
3
4
1
2
3 3
3
4
1
2
3 4
3
4
1
2
3 5
3
4E0A-4F89-AE
3
1 3
2
2
2
3
10
3
4911-403C-9
4
4
6431-4D57-8
0.00
100.00
4
• Dicionário de compressão:
– O valor comum é
armazenado na página
– Valores comuns são
substituidos por tokens
• 2X para 7X taxa de
compressão real para
dados fato no DW de
forma antecipada,
dependendo do dado
Compressão de linha
Antes da Compressão
Depois da
Compressão
34 [int]
4 bytes
1 byte
32,767 [smallint]
2 bytes
2 bytes
Redmond [char(50)]
50 bytes
7 bytes
WA [char(2)]
2 bytes
2 bytes
Value [Datatype]
Compression Pagina
Page Header
aaabb
aaaab
aaabcc bbbb
Page Header
Page Header
aaabcc aaaacc abcd
aaabcc aaaacc abcd
abcd
aaabb
4
b
abcd
aaabcc [bbbb
0bbbb] abcd
aaaccc aaaacc bbbb
aaaab
4
b
abcd
aaaccc
aaaacc [0bbbb
bbbb]
3
ccc
4b
[0bbbb]
4b
0
4b
0
1
[0bbbb]
3ccc
[0bbbb]
1
Revisão: Compressão de Dados
Quais efeitos NÃO resultam em compressão de
dados?
1. Decréssimo na utilzação do storage (espaço)
2. Diminuição do custo de CPU
3. Ganho em performance de uma query
4.Todas acima.
Revisão: Compressão de Dados
Identique a sequência correta dos passos
durante a compressão de página.
3 Dictionary compression
1 Row compression
2 Prefix compression
COMPRESSÃO DE BACKUP
Compressão de Backup
• Economia de espaço
em disco
• Backups e
Restaurações mais
rápidos
• Detecção automática
da compressão no
processo de RESTORE
Considerações sobre a
Compressão de Backup
• Disponível apenas no Microsoft SQL Server
2008 Enterprise Edition
• Desativado por Padrão
• Métodos de utilizar a compressão:
– EXEC sp_configure ‘backup compression default’, ‘1’
– RECONFIGURE WITH OVERRIDE
– BACKUP…WITH COMPRESSION
Considerações sobre a
Compressão de Backup (cont.)
• Somente um tipo de
backup no conjunto de
mídia (Media Set)
• Dados compactados
podem não sofrer
compressão durante o
Backup
Demonstração
Compressão de Backup
Conclusão
• Embora a criação de backups compactados seja suportada apenas no SQL
Server 2008 Enterprise e posterior, toda edição do SQL Server 2008 ou
posterior pode restaurar um backup compactado.
• O SQL Server 2008 oferece suporte a compactação de linha e de página para
tabelas e índices. A compactação de dados pode ser configurada para os
seguintes objetos de banco de dados:
–
–
–
–
–
Uma tabela inteira que é armazenada como um heap.
Uma tabela inteira que é armazenada como um índice clusterizado.
Um índice não clusterizado inteiro.
Uma exibição indexada inteira.
Para tabelas e índices particionados, a opção de compactação pode ser configurada para cada
partição e as várias partições de um objeto não precisam ter a mesma configuração de
compactação.
Maiores informações
• Visite TechNet www.microsoft.com/technet/brasil
• Visite MSDN www.microsoft.com/msdn/brasil
• SQL Server Express home page
http://http://www.microsoft.com/brasil/sql/sqlex
press.mspx
• SQL Server Express Edition overview
http://msdn.microsoft.com/library/default.asp?url=/li
brary/en-us/dnsse/html/sseoverview.asp
Fóruns e Colunas Técnicas
• Media Center:
https://www.technetbrasil.com.br/mediacenter/subje
ct.aspx?center=16
• Fórum – TechNet – SQL Server:
http://forums.microsoft.com/TechnetBR/default.aspx?ForumGroupID=198&SiteID=29
• Fórum – MSDN – SQL Server:
http://forums.microsoft.com/MSDNBR/default.aspx?ForumGroupID=148&SiteID=21
Questões ?
• [email protected]
Blog
• http://juniorgalvao-mvp2007.spaces.live.com
Seu potencial. Nossa inspiração.
© 2006 Microsoft Corporation. Todos os direitos reservados.
O propósito desta apresentação é apenas informativa. Microsoft não faz nenhuma garantia expressa ou implícita nesta apresentação.
MR
Download

SQL Server High Availability