Noções básicas sobre DPUs em EXPLAIN ANALYZE - Amazon Aurora DSQL

Noções básicas sobre DPUs em EXPLAIN ANALYZE

O Aurora DSQL fornece informações da Unidade de Processamento Distribuído (DPU) em nível de instrução na saída do plano EXPLAIN ANALYZE VERBOSE, oferecendo maior visibilidade do custo da consulta durante o desenvolvimento. Esta seção explica o que são DPUs e como interpretá-las na saída EXPLAIN ANALYZE VERBOSE.

O que é DPU?

Unidade de Processamento Distribuído (DPU) é a medida normalizada do trabalho realizado pelo Aurora DSQL. É composta por:

  • ComputeDPU: tempo gasto na execução de consultas SQL.

  • ReadDPU: recursos usados para ler dados do armazenamento.

  • WriteDPU: recursos usados para gravar dados no armazenamento.

  • MultiRegionWriteDPU: recursos usados para replicar gravações em clusters emparelhados em configurações multirregionais.

Uso de DPU em EXPLAIN ANALYZE VERBOSE

O Aurora DSQL estende EXPLAIN ANALYZE VERBOSE para incluir uma estimativa de uso da DPU em nível de instrução no final da saída. Isso oferece visibilidade imediata do custo da consulta, ajudando você a identificar os fatores de custo da workload, ajustar a performance da consulta e prever melhor o uso dos recursos.

Os exemplos a seguir mostram como interpretar as estimativas de DPU em nível de instrução incluídas na saída de EXPLAIN ANALYZE VERBOSE.

Exemplo 1: consulta SELECT

EXPLAIN ANALYZE VERBOSE SELECT * FROM test_table;
QUERY PLAN
----------------------------------------------------
Index Only Scan using test_table_pkey on public.test_table  (cost=125100.05..171100.05 rows=1000000 width=36) (actual time=2.973..4.482 rows=120 loops=1)
  Output: id, context
  -> Storage Scan on test_table_pkey (cost=125100.05..171100.05 rows=1000000 width=36) (actual rows=120 loops=1)
      Projections: id, context
      -> B-Tree Scan on test_table_pkey (cost=125100.05..171100.05 rows=1000000 width=36) (actual rows=120 loops=1)
Query Identifier: qymgw1m77maoe
Planning Time: 11.415 ms
Execution Time: 4.528 ms
Statement DPU Estimate:
  Compute: 0.01607 DPU
  Read: 0.04312 DPU
  Write: 0.00000 DPU
  Total: 0.05919 DPU

Neste exemplo, a instrução SELECT executa uma verificação somente de índice, então a maior parte do custo vem da DPU de leitura (0,04312), representando os dados recuperados do armazenamento e da DPU de computação (0,01607), o que reflete os recursos computacionais utilizados para processar e exibir os resultados. Não há DPU de gravação, pois a consulta não modifica os dados. A DPU total (0,05919) é a soma de computação + leitura + gravação.

Exemplo 2: consulta INSERT

EXPLAIN ANALYZE VERBOSE INSERT INTO test_table VALUES (1, 'name1'), (2, 'name2'), (3, 'name3');
QUERY PLAN
----------------------------------------------------
Insert on public.test_table  (cost=0.00..0.04 rows=0 width=0) (actual time=0.055..0.056 rows=0 loops=1)
  ->  Values Scan on "*VALUES*"  (cost=0.00..0.04 rows=3 width=122) (actual time=0.003..0.008 rows=3 loops=1)
        Output: "*VALUES*".column1, "*VALUES*".column2
Query Identifier: jtkjkexhjotbo
Planning Time: 0.068 ms
Execution Time: 0.543 ms
Statement DPU Estimate:
  Compute: 0.01550 DPU
  Read: 0.00307 DPU (Transaction minimum: 0.00375)
  Write: 0.01875 DPU (Transaction minimum: 0.05000)
  Total: 0.03732 DPU

Essa instrução executa principalmente gravações, portanto, a maior parte do custo está associada à DPU de gravação. A DPU de computação (0,01550) representa o trabalho realizado para processar e inserir os valores. A DPU de leitura (0,00307) reflete leituras secundárias do sistema (para pesquisas de catálogos ou verificações de índice).

Observe os mínimos de transação mostrados ao lado de DPUs de leitura e gravação. Eles indicam os custos básicos por transação que se aplicam somente quando a operação inclui leituras ou gravações. Eles não significam que cada transação gera automaticamente em uma cobrança de 0,00375 de DPU de leitura ou 0,05 de DPU de gravação. Em vez disso, esses mínimos são aplicados em nível de transação durante a agregação de custos e somente se as leituras ou gravações ocorrerem dentro dessa transação. Devido a essa diferença no escopo, as estimativas em nível de instrução em EXPLAIN ANALYZE VERBOSE podem não corresponder exatamente às métricas em nível de transação relatadas no CloudWatch ou nos dados de faturamento.

Usar informações de DPU para otimização

As estimativas de DPU por instrução oferecem uma maneira poderosa de otimizar as consultas além do tempo de execução. Entre os casos de uso comuns estão:

  • Consciência de custos: entenda o quanto uma consulta é cara em relação a outras.

  • Otimização do esquema: compare o impacto dos índices ou das alterações do esquema na performance e na eficiência dos recursos.

  • Planejamento de orçamento: estime o custo da workload com base no uso observado da DPU.

  • Comparação de consultas: avalie abordagens de consulta alternativas de acordo com seu consumo relativo de DPU.

Interpretar informações de DPU

Lembre-se das seguintes práticas recomendadas ao usar dados de DPU de EXPLAIN ANALYZE VERBOSE:

  • Use de forma direcionada: trate a DPU relatada como uma forma de entender o custo relativo de uma consulta, em vez de uma correspondência exata com as métricas ou os dados de faturamento do CloudWatch. As diferenças são esperadas porque EXPLAIN ANALYZE VERBOSE indica o custo em nível de instrução, enquanto o CloudWatch agrega atividades em nível de transação. O CloudWatch também inclui operações em segundo plano (como ANALYZE ou compactações) e sobrecarga de transação (BEGIN/COMMIT) que EXPLAIN ANALYZE VERBOSE exclui intencionalmente.

  • A variabilidade da DPU entre as execuções é normal em sistemas distribuídos e não indica erros. Fatores, como armazenamento em cache, alterações no plano de execução, simultaneidade ou mudanças na distribuição de dados, podem fazer com que a mesma consulta consuma recursos diferentes de uma execução para outra.

  • Operações pequenas em lotes: se sua workload emitir muitas instruções pequenas, pense em agrupá-las em operações maiores (que não excedam 10 MB). Isso reduz a sobrecarga de arredondamento e produz estimativas de custo mais significativas.

  • Use para ajuste, não para cobrança: os dados em EXPLAIN ANALYZE VERBOSEforam projetados para reconhecimento de custos, ajuste de consultas e otimização. Não é uma métrica de faturamento. Sempre confie nas métricas do CloudWatch ou nos relatórios de faturamento mensais para acessar dados confiáveis de custo e uso.