O documento discute considerações importantes para o hardware e software na escalabilidade de aplicações OLTP no SQL Server. Aborda tópicos como planejamento de capacidade de hardware, processador, memória, disco e rede, além de instâncias e bancos de dados, índices, cache e paralelismo no SQL Server.
1. Fabricio Catae
Premier Field Engineer
Microsoft
Escalando aplicações
OLTP:Design de aplicação e
considerações para hardware
CÓDIGO DA SESSÃO: DBP203
Luciano Caixeta Moreira
Consultor/Instrutor SQL Server
Sr. Nimbus
2. 4
Agenda
Vários aspectos juntos....
Hardware
Planejamento de capacidade
CPU, Memória, Disco, Rede
Software - SQL Server
Instâncias e bancos de dados
Índices e bloqueios
Manutenção e Resource Governor
Planos de execução e plan cache
Paralelismo
Software – Aplicações
Connection pool, round-trips e sp_executesql.
4. 6
Hardware
Planejamento de capacidade
Decisão sobre o Hardware
Métricas
Transações por segundo
Consultas por minuto
Características das transações
Recursos
Processador
Memória
Discos
Virtualização x Consolidação
6. 8
Hardware
Processador
Aumento na capacidade de processamento
Dual-core
Quad-core
Multi-core...
Domínio da plataforma 64-Bits
x64
Itanium
Benefícios do 64-Bits
Paralelismo de rotinas
7. 9
Hardware
Memória
Simples: Quanto mais memória melhor.
Memória Livre = memória que pode ser usada
Memória Disponível = memória que pode ser
facilmente convertida em memória livre
Eficiência na utilização da memória
8. 10
Hardware
Rede (Network)
Interface Padrão
1GBit limitada a 60-80 MB/seg
Benchmark
Sistemas altamente transacionais = 10-20MB/s
Possíveis Gargalos
Rotinas de importação (BULK INSERT)
Rotinas de backup de rede
Cópia de arquivos
10. 12
Hardware
Capacidade de Disco
Capacidade de disco (simplificado)
Tamanho: 150 GB
Transferência
Operações (IOPS = I/O per Seconds)
Exemplo: Disco 15k.6 147GB Ultra320 SCSI
11. 13
Hardware
Capacidade de Disco
Capacidade de disco (simplificado)
Tamanho: 150 GB
Transferência: 160 MB/s
Operações (IOPS): 180-210 IOPS
Exemplo: Disco 15k.6 147GB Ultra320 SCSI
Velocidade IOPS
7200 RPM 80-100
10000 (10k) RPM 130-150
15000 (15k) RPM 180-210
12. 14
Hardware
Capacidade de Disco
Capacidade de disco (simplificado)
Tamanho: 150 GB
Transferência: 160 MB/s
Operações (IOPS): 150 IOPS
Exemplo: Disco 15k.6 147GB Ultra320 SCSI
Interface Transferência
Ultra ATA/133 133 MB/s
SATA 300 300 MB/s
Ultra320 SCSI 320 MB/s
FC 4Gb 400 MB/s
USB 1.0 1.2 MB/s
USB 2.0 60 MB/s
15. 17
Hardware
Considerações do Subsistema de Disco
Configuração da storage
RAID1/RAID1+0/RAID5/RAID10
Cache (Escrita/Leitura)
Alinhamento de partição (DISKPART)
Windows 2003 – Desalinhado
Windows 2008 – Alinhado em 1 MB
Considerações adicionais...
16. 18
Hardware
Design de aplicação e considerações para
Hardware
Objetivo
Maximizar a utilização de recursos em 100%
Evitar ao máximo o enfileiramento de recursos
Exemplos
Contenção e bloqueios
Particionamento de dados
Índices
Cache de dados e planos
Paralelismo
17. Instâncias e bancos de dados
Índices e bloqueios
Manutenção e Resource Governor
Planos de execução e plan cache
Paralelismo
SQL Server
18. 20
Cenário
Contenção e bloqueios
Sintomas
Baixo consumo de CPU
Baixa demanda por recurso de disco
Resultado
Não atingimos o objetivo de 100% de utilização
Maior tempo para completar uma tarefa
19. 21
SQL Server
Bloqueios
Escritor vs. Múltiplos Leitores?
E o famoso NOLOCK?
Possui algum efeito colateral?
Lock Escalation
Níveis de isolamento
Read Uncommitted
Read committed (suficiente na maioria dos casos)
Repeatable Read
Serializable
Snapshot Isolation Level
Habilitar Read Committed Snapshot
20. 22
Cenário
Distribuição de Dados
Balanceamento dos recursos utilizados
Utilização individual dos discos
Utilização coletiva do canal de comunicação e da
controladora
Disco 1
Tabela A
Tabela X
(parte 3)
Disco 2
Tabela B
Tabela X
(parte 2)
Disco 3
Tabela C
Tabela X
(parte 3)
21. 23
Software – SQL Server
Bancos de dados
Faça a divisão dos seus dados em diversos
filegroups (cuidado com LUNs x RAID groups).
Cuide do crescimento dos seus arquivos.
Particionamento é muito importante
SQL Server 2000: tabelas, constraints e view.
SQL Server 2005: partition functions e schemes.
Alinhe o particionamento de seus dados e
índices.
Separar dados e índices é realmente proveitoso?
Existe vantagem em criar diversos arquivos de
log?
22. 24
Cenário
Índices
Uma busca através de um índice é milhares de
vezes mais rápido do que uma busca sem índice
Dependendo do tamanho do índice, o ganho
pode ser anulado
Maior espaço em disco
Maior utilização de memória
Maios consumo de CPU para ler todos os dados
23. 25
Software – SQL Server
Índices
Cluster
Pesquisa por intervalos.
Chaves sequenciais, sem alteração e pequenas
Hot-spot podem trazer gargalos?
Não-cluster
Verifique quais índices realmente estão sendo
utilizados
Somente trabalhe com o essencial
Covered index é essencial
Índice com include x índice composto
Não vá duplicar sua tabela!
24. 26
Software – SQL Server
Índices
Primary key e Foreign key são boas candidatas
para índices não cluster.
Índices com filtro
Minimizam tamanho do seu índice NCL.
Cláusulas where devem estar alinhadas com
definição.
Views indexadas
Potencializa consultas complexas...
Bom para ambientes OLTP?
25. 27
Software – SQL Server
Manutenção
Estatísticas são bem vindas e custo de
armazenamento é muito baixo.
O threshold de atualização automática das
estatísticas pode ser muito alto.
Necessidade de planos de manutenção.
AUTO CREATE STATISTICS
Mantenha os índices com baixa fragmentação
interna e fragmentação lógica.
REORGANIZE é seu amigo.
REBUILD [ONLINE]
26. 28
Software – SQL Server
Manutenção
Compressão de dados
Melhora a proporção de registros por página
Custo de CPU x memória e disco
FILL FACTOR = 80% ~ 100% ocupado
Queremos uma boa utilização do cache
Não para fórmulas mágicas
No caso de page splits + particionamento, histórico
recebe um fill factor diferenciado.
27. 29
Cenário
Cache de dados e planos
Compilar e otimizar uma Query consome muito
recurso de CPU e pode demorar segundos
O tempo de acesso ao disco é de milissegundos
Por que não manter essas informações em
Cache?
O tempo de acesso à memória é de nanossegundos
28. 30
Software – SQL Server
Cache de planos
Cuidado com workloads adhoc
“Poluem” a cache de planos com muitos planos que
potencialmente não mais serão utilizados.
OPTIMIZE FOR ADHOC WORKLOADS
Alterações de estatísticas ou outras alterações
estruturais podem causar recompilação.
Opção ASYNC é uma boa alternativa
29. 31
Software – SQL Server
Planos de execução
Hints
Use com cautela
Parametrização correta e plano com
comportamento “bom na média” é muito
importante.
OPTION (Optimize for X)
OPTION (Optimize for unknown)
Plan guides
Casos mais extremos e maior controle
31. 33
Software – SQL Server
Paralelismo
Como configurar o paralelismo?
0, 1, 4, 8 ou N?
SP_Configure `Max Degree of Paralellism`
Hint MAXDOP
Resource Governor
Uma eterna discussão entre DBAs...
Paralelismo é ruim?
32. 34
Software – SQL Server
Resource Governor
Ajuda eficiente para controlar as prioridades dos
workloads no SQL Server.
Aplicação eficiente da função de classificação e
dos grupos para se ter um bom resultado.
A fila de tarefas não é infinita, então modere o
número de pools e grupos.
Memória, CPU, Paralelismo, importância, etc.
Novas aplicações não precisam atrapalhar as
soluções mais críticas e entram em um pool com
menos recursos.
33. 36
Software – SQL Server
Outras considerações
Configurações importantes e comumente fonte
de problemas:
Max worker threads
Priority boost
TempDB
Mais arquivos de dados
Trace flag 1118
Auto Shrink
Não recomendado!
Shrink leva a fragmentação lógica
35. 38
Software
Aplicação cliente
Pool de conexão
Min Pool Size
Max Pool Size
Minimize tráfego de dados e round-trips
Como fazer uma paginação eficiente
sp_executeSQL ou stored procedures
36. 39
Conclusão
Muita coisa, e agora?
Achar o balanço ideal para sua solução nem
sempre é simples.
Porém existem diversas boas práticas (e ações
simples) que podem melhorar seu ambiente.
Desenvolvedores e DBAs devem trabalhar
juntos.
Sim, pode até doer, mas...
Novos recursos exigem novas soluções e
adaptações continuas dos recursos, então não
pare no tempo.
38. 41
Conteúdo relacionado
DBP402 - Compilação, planos de execução e cache de planos: como evitar as
armadilhas
SUP403 - SQL Server com foco em Diagnóstico de Desempenho
DBP301 - Mitos e realidades sobre consolidação e virtualização com
Microsoft SQL Server
DBP305 - Estratégias para otimizar a concorrência dentro do Microsoft
SQL Server 2008 R2
Fabricio:
Numero de processadores: antigamente 8 procs = HUGE MACHINE, hoje um notebook pode ter 4-core. Server tem 32 processadores (8 quad-core)
Itanium não é mais a plataforma MS
AWE Nunca mais
1 rotina = 1 query? = 1 processador (desconsiderando o paralelismo)