AWR: quão «exadatas» são as operações do banco de dados?

Neste pequeno post, gostaria de esclarecer um mal-entendido relacionado à análise de bancos de dados AWR que operam em Oracle Exadata. Há quase 10 anos, constantemente me deparo com a pergunta: qual é a contribuição do Exadata Software para o desempenho? Ou utilizando palavras recém-criadas: quanto uma base de dados "exadatiza" seu funcionamento?

AWR: quão «exadatas» são as operações do banco de dados?

Frequentemente, a essa pergunta correta, na minha opinião, é dada uma resposta incorreta com referência às estatísticas do AWR. Nela, é apresentado o método de espera do sistema, que considera o tempo de resposta como a soma do tempo de operação dos processadores (DB CPU) e o tempo de espera de várias classes.

Com o surgimento do Exadata, a estatística do AWR passou a incluir esperas de sistema específicas relacionadas ao funcionamento do Exadata Software. Normalmente, os nomes dessas esperas começam com a palavra “cell” (o servidor de armazenamento Exadata é chamado de célula), sendo mais comuns as esperas com nomes significativos como “cell smart table scan”, “cell multiblock physical read” e “cell single block physical read”.

Na maioria das vezes, a proporção dessas esperas do Exadata no tempo total de resposta é baixa, e, portanto, elas nem aparecem na seção Top10 Foreground Events by Total Wait Time (neste caso, é preciso procurá-las na seção Foreground Wait Events). Com grande dificuldade, encontramos um exemplo de AWR diário de nossos clientes, no qual as esperas do Exadata figuravam na seção Top10 e, no total, representaram cerca de 5%:

Evento

Esperas

Tempo Total de Espera (segundos)

Esperas Médias

% do tempo de DB

Classe de Espera

DB CPU

115.2K

70.4

SQL*Net mais dados do dblink

670,196

5471.5

8.16ms

3.3

Rede

cell single block physical read

5,661,452

3827.6

676.07us

2.3

Usuário I/O

Sync ASM rebalance

4,350,012

3481.3

800.30us

2.1

Outros

cell multiblock physical read

759,885

2252

2.96ms

1.4

Usuário I/O

direct path read

374,368

1811.3

4.84ms

1.1

Usuário I/O

SQL*Net mensagem do dblink

7,983

1725

216.08ms

1.1

Rede

cell smart table scan

1,007,520

1260.7

1.25ms

0.8

Usuário I/O

direct path read temp

520,211

808.4

1.55ms

0.5

Usuário I/O

enq: TM — contenção

652

795.8

1220.55ms

0.5

Aplicação

A partir de tais estatísticas do AWR, muitas conclusões incorretas são frequentemente tiradas:

1. A contribuição da mágica do Exadata para o desempenho do banco de dados não é alta — não ultrapassa 5%, e o banco de dados "exadatiza" mal.

2. Se esse banco de dados for transferido de Exadata para uma arquitetura clássica de "servidor + array", o desempenho mudará pouco. Pois mesmo que esse array se revele três vezes mais lento que o sistema de armazenamento Exadata (o que é quase impossível para arrays All Flash modernos), multiplicando 5% por três obteremos um aumento na proporção de esperas de entrada e saída para 15% — esse banco de dados certamente sobreviverá!

Ambas essas saídas são imprecisas e, além disso, distorcem a compreensão da ideia contida no Exadata Software. O Exadata não apenas proporciona uma entrada e saída rápida, mas funciona de maneira fundamentalmente diferente em comparação com a arquitetura clássica de "servidor + armazenamento". Se uma base de dados realmente 'exadatiza' - então a lógica SQL é transferida para o sistema de armazenamento. Storage servidores graças a uma série de mecanismos especiais (em primeiro lugar os Exadata Storage Indexes, mas não apenas) encontram os dados necessários e os enviam para os servidores DB. Eles fazem isso de forma bastante eficiente, portanto, a proporção de esperas características do Exadata no tempo de resposta geral é baixa. 

Como essa proporção mudará fora do Exadata? Como isso afetará o desempenho da base de dados como um todo? O melhor jeito de responder a essas perguntas é através de testes. Por exemplo, a espera 'cell smart table scan' fora do Exadata pode se transformar em um pesado Table Full Scan, de modo que a entrada e saída consuma todo o tempo de resposta e o desempenho piore dramaticamente. É por isso que é incorreto, ao analisar o AWR, considerar a porcentagem total de esperas do Exadata como uma contribuição da sua mágica para o desempenho e, ainda mais, usar essa porcentagem para prever o desempenho fora do Exadata. Para entender o quanto o trabalho da base 'exadatiza', é necessário estudar as estatísticas da seção 'Instance Activity Stats' do AWR (onde há muitas estatísticas com nomes esclarecedores) e compará-las entre si.

E para entender como a base de dados se comportará fora do Exadata, a melhor maneira é fazer um clone da base a partir do backup na arquitetura alvo e analisar o desempenho desse clone sob carga. Normalmente, os proprietários do Exadata têm essa possibilidade.

Autor: Aleksey Struchenko, chefe da área de BD da 'Infossistemas Jet'

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster