TechEd 2010: Escalando aplicações OLTP:Design de aplicação e considerações para hardware

Preview:

Citation preview

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

Recommended