workshop performance tuning

45
www.fabioprado.net www.fabioprado.net Fábio Prado Performance Tuning O que é, por onde começar e o que fazer?

Upload: wagner-pereira

Post on 11-Dec-2015

68 views

Category:

Documents


3 download

DESCRIPTION

Performance Tunning

TRANSCRIPT

www.fabioprado.netwww.fabioprado.net

Fábio Prado

Performance Tuning

O que é, por onde começar e o que fazer?

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

2

Visão geral

• Nesta apresentação veremos:

— O que é Tuning?

— Objetivos do tuning

— Problemas mais comuns

— Onde e por que tunar?

— Atividades de tuning (teoria, dicas e exemplos)

— Considerações gerais sobre segurança e performance.

O que é tuning?

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

4

O que é tuning?

• Tuning se escreve com somente 2 Ns! Tunningcom 3 Ns está errado!

— Ver artigo O que é Tuning?

• Em TI, refere-se basicamente ao conceito de propor e aplicar mudanças para otimizar o

desempenho na recuperação ou atualização de dados;

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

5

O que é tuning?

• É um termo que desperta um interesse cada vez maior nos profissionais de TI, devido ao aumento:

— Do legado de sistemas corporativos (ERPs, GEDsetc.) e sistemas web;

— Da quantidade de usuários de BDs;

— Da quantidade de dados.

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

6

Principais objetivos do Tuning

• Minimizar tempo de resposta na recuperação de dados;

• Otimizar a taxa de transferência de dados;

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

7

Problemas mais comuns

• Os problemas mais comuns que impactam negativamente na performance dos BDs são:

— Gargalos de CPU;

— Estruturas de memória subdimensionadas;

— I/O ruim;

— Instruções SQL ineficientes ou pesadas;

— Regressão de performance após tunar SQL;

— Contenção de recursos e alta concorrência;

— Má configuração do BD.

Por onde começar?

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

9

Entendendo o Processo de Tuning

• Para otimizar é necessário:

1- Entender e identificar o problema;

2- Elaborar o diagnóstico;

3- Executar o diagnóstico, ou seja, tunar;

4- Validar o diagnóstico.

www.fabioprado.net

Entendendo o Processo de Tuning

Melhorou

Identifique o problema

Elabore o diagnóstico

Execute o diagnóstico

Teste o desempenho

FIM

NÃO Melhorou

Diagnóstico: nome dado a um processo analítico que é utilizado para chegar a alguma conclusão e à conclusão, por si própria

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

11

• Pense primeiro no diagnóstico e depois no tuning;

• Após alterar, teste:

— Não acredite na sorte, lendas, mitos ou boatos;

— Verifique se foi obtido o ganho de performance desejado;

— Se necessário, volte atrás.

• Não existe uma fórmula mágica nem milagres

para tunar o desempenho de qualquer BD:

—Se existisse, ela seria o padrão da instalação do SGBD!

Dicas importantes

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

12

Por onde começar?

Ganhos de performance por área de atuação Fonte: Tuning When you can´t touch the code, Michael R. Ault - DBAGroup

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

13

Por onde começar?

SQL ruim é a causa nº 1 de

problemas de performanceFonte: Oracle Essentials - Oracle Database 11g, Editora O´Reilly

O que fazer?

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

15

Atividades de tuning

• Os 3 tipos de atividades de tuning que

podem ser realizadas em um BD são:

1- Planejamento de performance;

2- Tuning de instância e BD;

3- SQL Tuning.

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

16

1- Planejamento de performance

• Definição e configuração do ambiente em que o BD será instalado, considerando-se osseguintes itens:

— Hardware;

— Software;

— Sistema Operacional;

— Infraestrutura de rede.

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

17

1- Planejamento performance

Impacto do RAID em OLTP

70% leitura – 30% escrita

Carga de 400 GB de dados

Análise de tempo de resposta de RAID 10 X RAID 5

Fonte: Comprehending the Tradeoffs between Deploying Oracle® Database on RAID 5 and RAID 10 Storage Configurations, A Dell® Technical White Paper

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

18

1- Planejamento performance

HW Upgrade

16 GB RAM DDR-3 (800 MHz)6 GB RAM DDR-2 (400 MHz)

2 cpu quad-core 64 bits Xeon de 2.13 GHz

2 cpu single-core 64 bits Xeon de 3.8 GHz

Intel E5506Intel E7520

Máquina novaMáquina antiga

Ganho médio de 233% no tempo de execução de instruções SQL

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

19

1- Planejamento performance

HW Upgrade

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

20

2- Tuning de Instância e BD

• Ajuste de parâmetros e configurações do BD para otimizar performance;

• Faz parte do trabalho de um DBA gerenciar a segurança do Banco de Dados sem prejudicar a sua performance, e vice-versa.

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

21

2- Tuning de Instância e BD

Diagnóstico

• Como identificar o problema e elaborar o diagnóstico?

— Consulte as visões de performance dinâmicas;

— Analise os Wait Events;

— Gere e analise SQL Traces:

� Ver artigo Analisando SQL traces em Bancos de Dados Oracle.

— Utilize as seguintes ferramentas:

� Statspack;

� AWR;

� ADDM.

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

22

2- Tuning de Instância e BD

Diagnóstico - VPDs

• Consulte as visões de perf. dinâmicas:

—Exemplos: V$SQL, V$SQLSTAT, V$SYSSTAT, V$SESSTAT,

V$SYS_TIME_MODEL, V$SYSMETRIC etc;

—Ver artigo Entendendo as visões de performance dinâmicas.

Evolução das Visões de Performance Dinâmicas por versão do Oracle Database

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

23

2- Tuning de Instância e BD

Diagnóstico - WEs

• Consulte e analise os Wait Events:

Evolução dos Wait Events por versão do Oracle Database

104 140220

400

800

1146

1567

0

200

400

600

800

1000

1200

1400

1600

1800

7.0.12 8 8i 9i 10GR1 11GR2 12CR1

Versão

Qu

an

tid

ad

e

www.fabioprado.net

2- Tuning de Instância e BD

Diagnóstico - WEs

• Apenas 15 wait events representam 90% de todos que são coletados (segundo pesquisa da Confio

Software). Exemplos:

� db file sequential read

� db file scattered read

� direct patch read / direct path read temp

� global cache cr request

� buffer busy waits / read by other session

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

24

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

25

2- Tuning de Instância e BD

Diagnóstico - AWR

• Analisando um AWR Report:

www.fabioprado.net

2- Tuning de Instância e BD

Diagnóstico - AWR

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

26

www.fabioprado.net

2- Tuning de Instância e BD

Diagnóstico - AWR

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

27

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

28

2- Tuning de Instância e BD

Otimização

Swingbench 15 sessões por 5 minutos, 11GR2, antes:— I/O síncrono: FILESYSTEMIO_OPTIONS = NONE

— 1 GB de SGA + PGA: MEMORY_MAX_TARGET, MEMORY_TARGET = 1G

— Commit síncrono: COMMIT_WAIT = WAIT

— 1 processo escritor: DB_WRITER_PROCESSES = 1

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

29

2- Tuning de Instância e BD

Otimização

SwingBench 15 sessões por 5 minutos, 11GR2, depois:— I/O assíncrono: FILESYSTEMIO_OPTIONS = SETALL— 2 GB de SGA + PGA: MEMORY_MAX_TARGET, MEMORY_TARGET = 2G— Commit assíncrono: COMMIT_WAIT = NOWAIT

— 3 processos escritores: DB_WRITER_PROCESSES = 3

A média de TPM aumentou de 267 p/ 529 (melhorou 198%)

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

30

3- SQL Tuning

• SQL Tuning é uma atividade complexa e querequer muito esforço. Não tente economizartempo acreditando em lendas, mitos e boatos!

• Existem muitas dicas e técnicas, mas nãoexiste uma receita de bolo que se aplica emqualquer situação;

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

31

3- SQL Tuning

Mitos

O que é mais rápido, COUNT(1) ou COUNT(*)?

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

32

3- SQL Tuning

Diagnóstico

• Gere e analise um plano de execução paraidentificar o problema e elaborar o diagnóstico:

— Habilitando Autotrace (SET AUTOTRACE);

— Executando o comando EXPLAIN PLAN;

— Consultando a visão V$SQL_PLAN e outras visõesrelacionadas;

— Gerando arquivos de SQL Trace (ver artigoAnalisando SQL traces em Bancos de Dados Oracle).

www.fabioprado.net

3- SQL Tuning

Diagnóstico – Explain plan

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

34

3- SQL Tuning

Dicas e técnicas

• Algumas dicas para otimizar instruções SQL:

— Crie índices para otimizar consultas frequentes e verifique se eles estão sendo utilizados;

— Utilize paralelismo em instruções SQL longas;

— Utilize a cláusula CASE;

— Utilize variáveis bind;

— Utilize hints;

— Utilize stored procedures.

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

35

3- SQL Tuning

Otimizando com índices

Custo antes do índice = 77791

Custo depois do índice = 1659 (46.89 X melhor)

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

36

3- SQL Tuning

Otimizando com Paralelismo

SELECT /*+ PARALLEL */ ...

Custo sem paralelismo = 7040

Custo com paralelismo = 969 (7.26 X melhor)

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

37

3- SQL Tuning

Otimizando com a instrução CASE

SELECT COUNT(1)FROM ...

WHERE SALARY < 2000UNION ALLSELECT COUNT(1)FROM ...WHERE SALARY BETWEEN

2001 AND 4000UNION ALL...

Custo sem CASE = 250000

Custo com CASE = 51913 (4.81 X melhor)

Considerações finais

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

39

Segurança X Performance

Performance

Segurança

Quanto mais recursos de

segurança forem

implementados, menor será

a performance do BD.

www.fabioprado.net

Segurança X Performance

• TDE degrada performance de instruções SQL;

• LOGGING aumenta tempo de gravação;

• CONSTRAINTS aumentam tempo de gravação;

• LOCKS ocasionam espera e aumentam tempo de gravação;

• COMMITS frequentes aumentam quantidade de gravações;

• Auditoria aumenta consumo de CPU e I/O.

www.fabioprado.net

Referências

Criptografando tabelas com o TDE

http://www.fabioprado.net/2011/02/implementando-seguranca-com-o-tde.html

O que é Tuning?

http://www.fabioprado.net/2014/04/o-que-e-tuning-como-tunar.html

Oracle Database Performance Tuning Guide 11G

Release 2

http://docs.oracle.com/cd/E11882_01/server.112/e16638/toc.htm

Oracle Database SQL Tuning Guide 12c Release 1

http://docs.oracle.com/cd/E16655_01/server.121/e15858.pdf

Oracle Database 11g Performance Tuning Recipes

Editora: Apress, Autor: Sam R. Alapati, Darl Kuhn e Bill Padfield

Oracle Essentials - Oracle Database 11g

Editora: O´Reilly, Autor: Rick Greenwald, Robert Stackowiak e Jonathan Stern

Paralelismo automático no Oracle Database 11G - Parte 1

http://www.fabioprado.net/2013/02/paralelismo-automatico-no-oracle.html

Treinamento Database Performance Tuning FABIOPRADO.NET

http://www.fabioprado.net/p/performance-tuning-oracle-database.html

Tuning When you can´t touch the code

http://www.nyoug.org/Presentations/2000/no_touch_s.pdf

www.fabioprado.net

FIM

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

43

1) O que fazer para gerar o diagnóstico de uma instrução SQL?

Questões

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

44

Questões

2) Cite 2 ferramentas que podem ser utilizadas para gerar o diagnóstico do BD.

www.fabioprado.net

julho de 14 Workshop Performance Tuning© 2014 Fábio Prado. Todos os direitos reservados.

45

Questões

3) Quais os objetivos principais do tuning?