teched 2010: escalando aplicações oltp:design de aplicação e considerações para hardware
TRANSCRIPT
Fabricio CataePremier Field EngineerMicrosoft
Escalando aplicações OLTP:Design de aplicação e considerações para hardware
CÓDIGO DA SESSÃO: DBP203
Luciano Caixeta MoreiraConsultor/Instrutor SQL ServerSr. Nimbus
4
AgendaVários aspectos juntos....
HardwarePlanejamento de capacidadeCPU, Memória, Disco, Rede
Software - SQL ServerInstâncias e bancos de dadosÍndices e bloqueiosManutenção e Resource GovernorPlanos de execução e plan cacheParalelismo
Software – AplicaçõesConnection pool, round-trips e sp_executesql.
ProcessadorMemóriaRedeSubsistema de Disco
Hardware
6
HardwarePlanejamento de capacidade
Decisão sobre o Hardware
MétricasTransações por segundoConsultas por minutoCaracterísticas das transações
RecursosProcessadorMemóriaDiscos
Virtualização x Consolidação
7
HardwareQual o significado do Hardware?
8
HardwareProcessador
Aumento na capacidade de processamentoDual-coreQuad-coreMulti-core...
Domínio da plataforma 64-Bitsx64Itanium
Benefícios do 64-Bits
Paralelismo de rotinas
9
HardwareMemó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
10
HardwareRede (Network)
Interface Padrão 1GBit limitada a 60-80 MB/seg
BenchmarkSistemas altamente transacionais = 10-20MB/s
Possíveis GargalosRotinas de importação (BULK INSERT)Rotinas de backup de redeCópia de arquivos
11
HardwareSubsistema de Disco
CPU/MEMORIA DISCO(STORAGE)
12
HardwareCapacidade de Disco
Capacidade de disco (simplificado)Tamanho: 150 GBTransferênciaOperações (IOPS = I/O per Seconds)
Exemplo: Disco 15k.6 147GB Ultra320 SCSI
13
HardwareCapacidade de Disco
Capacidade de disco (simplificado)Tamanho: 150 GBTransferência: 160 MB/sOperações (IOPS): 180-210 IOPS
Exemplo: Disco 15k.6 147GB Ultra320 SCSIVelocidade IOPS
7200 RPM 80-100
10000 (10k) RPM 130-150
15000 (15k) RPM 180-210
14
HardwareCapacidade de Disco
Capacidade de disco (simplificado)Tamanho: 150 GBTransferência: 160 MB/sOperações (IOPS): 150 IOPS
Exemplo: Disco 15k.6 147GB Ultra320 SCSIInterface 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
HardwareCalculando a capacidade (simplificado)
Discos Tamanho Transferência IOPS
1 disco 150 GB 25 MB/s 100
2 discos 300 GB 50 MB/s 200
3 discos 450 GB 75 MB/s 300
4 discos 600 GB 100 MB/s 400
16
HardwareCalculando a capacidade (simplificado)
Discos Tamanho Transferência IOPS
1 disco 150 GB 25 MB/s 100
2 discos 300 GB 50 MB/s 200
3 discos 450 GB 75 MB/s 300
4 discos 6000 GB 100 MB/s 400
… … … …
N discos 320 MB/s
N+1 discos 320 MB/s
N+2 discos 320 MB/s
17
HardwareConsiderações do Subsistema de Disco
Configuração da storageRAID1/RAID1+0/RAID5/RAID10Cache (Escrita/Leitura)
Alinhamento de partição (DISKPART)Windows 2003 – DesalinhadoWindows 2008 – Alinhado em 1 MB
Considerações adicionais...
18
HardwareDesign de aplicação e considerações para Hardware
ObjetivoMaximizar a utilização de recursos em 100%Evitar ao máximo o enfileiramento de recursos
ExemplosContenção e bloqueios Particionamento de dadosÍndicesCache de dados e planosParalelismo
Instâncias e bancos de dadosÍndices e bloqueiosManutenção e Resource GovernorPlanos de execução e plan cacheParalelismo
SQL Server
20
CenárioContenção e bloqueios
SintomasBaixo consumo de CPUBaixa demanda por recurso de disco
ResultadoNão atingimos o objetivo de 100% de utilizaçãoMaior tempo para completar uma tarefa
21
SQL ServerBloqueios
Escritor vs. Múltiplos Leitores?E o famoso NOLOCK?
Possui algum efeito colateral?Lock EscalationNíveis de isolamento
Read UncommittedRead committed (suficiente na maioria dos casos)Repeatable ReadSerializableSnapshot Isolation Level
Habilitar Read Committed Snapshot
22
CenárioDistribuição de Dados
Balanceamento dos recursos utilizadosUtilização individual dos discosUtilizaçã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)
23
Software – SQL ServerBancos 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?
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 discoMaior utilização de memóriaMaios consumo de CPU para ler todos os dados
25
Software – SQL ServerÍndices
ClusterPesquisa por intervalos.Chaves sequenciais, sem alteração e pequenasHot-spot podem trazer gargalos?
Não-clusterVerifique quais índices realmente estão sendo utilizadosSomente trabalhe com o essencial
Covered index é essencialÍndice com include x índice compostoNão vá duplicar sua tabela!
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 indexadasPotencializa consultas complexas... Bom para ambientes OLTP?
27
Software – SQL ServerManutençã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]
28
Software – SQL ServerManutenção
Compressão de dadosMelhora a proporção de registros por páginaCusto de CPU x memória e disco
FILL FACTOR = 80% ~ 100% ocupadoQueremos uma boa utilização do cacheNão para fórmulas mágicasNo caso de page splits + particionamento, histórico recebe um fill factor diferenciado.
29
CenárioCache 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
30
Software – SQL ServerCache 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
31
Software – SQL ServerPlanos de execução
HintsUse com cautela
Parametrização correta e plano com comportamento “bom na média” é muito importante.
OPTION (Optimize for X)OPTION (Optimize for unknown)
Plan guidesCasos mais extremos e maior controle
32
HardwareProcessamento
O que há de errado na figura abaixo?
33
Software – SQL ServerParalelismo
Como configurar o paralelismo?0, 1, 4, 8 ou N?SP_Configure `Max Degree of Paralellism`Hint MAXDOPResource Governor
Uma eterna discussão entre DBAs...Paralelismo é ruim?
34
Software – SQL ServerResource 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.
36
Software – SQL ServerOutras considerações
Configurações importantes e comumente fonte de problemas:
Max worker threadsPriority boost
TempDBMais arquivos de dadosTrace flag 1118
Auto ShrinkNão recomendado!Shrink leva a fragmentação lógica
Connection poolRound-tripsSP_ExecuteSQL
Aplicações
38
SoftwareAplicação cliente
Pool de conexãoMin Pool SizeMax Pool Size
Minimize tráfego de dados e round-tripsComo fazer uma paginação eficiente
sp_executeSQL ou stored procedures
39
ConclusãoMuita 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.
40
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
© 2008 Microsoft Corporation. Todos os direitos reservados. Microsoft, Windows, Windows Vista e outros nomes de produtos são ou podem ser marcas registradas e/ou marcas comerciais nos EUA e/ou outros países.Este documento é meramente informativo e representa a visão atual da Microsoft Corporation a partir da data desta apresentação. Como a Microsoft deve atender a condições de mercado em constante alteração, este
documento não deve ser interpretado como um compromisso por parte da Microsoft, e a Microsoft não pode garantir a precisão de qualquer informação fornecida após a data desta apresentação. A MICROSOFT NÃO DÁ QUALQUER GARANTIA, SEJA ELA EXPRESSA, IMPLÍCITA OU ESTATUTÁRIA, REFERENTE ÀS INFORMAÇÕES DESTA APRESENTAÇÃO.
Por favor preencha a avaliação