

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Comprensione DPUs in EXPLAIN ANAL
<a name="understanding-dpus-explain-analyze"></a>

Aurora DSQL fornisce informazioni DPU (Distributed Processing Unit) a **livello di dichiarazione** nell'output del `EXPLAIN ANALYZE VERBOSE` piano, offrendoti una visibilità più approfondita sui costi delle query durante lo sviluppo. Questa sezione spiega cosa DPUs sono e come interpretarli nell'output. `EXPLAIN ANALYZE VERBOSE`

## Che cos'è una DPU?
<a name="what-is-dpu"></a>

Un'unità di elaborazione distribuita (DPU) è la misura normalizzata del lavoro svolto da Aurora DSQL. È composta da:
+ **ComputedPU**: tempo impiegato per l'esecuzione di query SQL
+ **ReadDPU**: risorse utilizzate per leggere i dati dallo storage
+ **WriteDPU**: risorse utilizzate per scrivere dati nell'archivio
+ **MultiRegionWriteDPU**: risorse utilizzate per replicare le scritture su cluster peer in configurazioni multiregionali.

## Utilizzo della DPU in EXPLAIN ANALYZE VERBOSE
<a name="dpu-usage-explain-analyze"></a>

Aurora DSQL si estende `EXPLAIN ANALYZE VERBOSE` per includere una stima dell'utilizzo della DPU a livello di dichiarazione fino alla fine dell'output. Ciò offre una visibilità immediata sui costi delle query, aiutandoti a identificare i fattori di costo del carico di lavoro, ottimizzare le prestazioni delle query e prevedere meglio l'utilizzo delle risorse.

Gli esempi seguenti mostrano come interpretare le stime della DPU a livello di dichiarazione incluse nell'output EXPLAIN ANALYZE VERBOSE.

### Esempio 1: SELECT Query
<a name="select-query-example"></a>

```
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
```

In questo esempio, l'istruzione SELECT esegue una scansione solo indicizzata, quindi la maggior parte del costo proviene da Read DPU (0.04312), che rappresenta i dati recuperati dallo storage e Compute DPU (0,01607), che riflette le risorse di calcolo utilizzate per elaborare e restituire i risultati. Non esiste una DPU di scrittura poiché la query non modifica i dati. La DPU totale (0,05919) è la somma di Compute\$1Read\$1Write.

### Esempio 2: INSERT Query
<a name="insert-query-example"></a>

```
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
```

Questa istruzione esegue principalmente le scritture, quindi la maggior parte del costo è associato a Write DPU. La Compute DPU (0,01550) rappresenta il lavoro svolto per elaborare e inserire i valori. La Read DPU (0.00307) riflette le letture secondarie del sistema (per le ricerche nel catalogo o il controllo degli indici).

Notate i valori minimi delle transazioni mostrati accanto a Lettura e scrittura. DPUs Questi indicano i costi di base per transazione che si applicano *solo quando l'operazione include operazioni* di lettura o scrittura. Ciò non significa che ogni transazione comporti automaticamente un costo di 0,00375 DPU in lettura o 0,05 DPU in scrittura. Questi minimi vengono invece applicati a livello di transazione durante l'aggregazione dei costi e solo se all'interno della transazione vengono eseguite operazioni di lettura o scrittura. A causa di questa differenza di ambito, le stime a livello di rendiconto `EXPLAIN ANALYZE VERBOSE` potrebbero non corrispondere esattamente alle metriche a livello di transazione riportate nei dati di fatturazione o nei dati di fatturazione. CloudWatch 

## Utilizzo delle informazioni sulla DPU per l'ottimizzazione
<a name="using-dpu-information-optimization"></a>

Le stime della DPU per dichiarazione offrono un modo efficace per ottimizzare le query oltre il semplice tempo di esecuzione. Casi di utilizzo comune comprendono:
+ **Consapevolezza dei costi:** scopri quanto è costosa una query rispetto alle altre.
+ **Ottimizzazione dello schema:** confronta l'impatto degli indici o delle modifiche allo schema sulle prestazioni e sull'efficienza delle risorse.
+ **Pianificazione del budget:** stima del costo del carico di lavoro in base all'utilizzo della DPU osservato.
+ **Confronto tra query:** valuta gli approcci di interrogazione alternativi in base al consumo relativo di DPU.

## Interpretazione delle informazioni sulla DPU
<a name="interpreting-dpu-information"></a>

Tieni a mente le seguenti best practice quando utilizzi dati DPU da: `EXPLAIN ANALYZE VERBOSE`
+ **Usalo in modo direzionale:** considera la DPU segnalata come un modo per comprendere il costo *relativo* di una query piuttosto che come una corrispondenza esatta con le CloudWatch metriche o i dati di fatturazione. Le differenze sono previste perché `EXPLAIN ANALYZE VERBOSE` riporta i costi a livello di rendiconto, mentre aggrega l'attività a livello di transazione. CloudWatch CloudWatch include anche operazioni in background (come ANALYZE o compactions) e il sovraccarico delle transazioni (/) che esclude intenzionalmente. `BEGIN` `COMMIT` `EXPLAIN ANALYZE VERBOSE`
+ La **variabilità della DPU tra le esecuzioni è normale** nei sistemi distribuiti e non indica errori. Fattori come la memorizzazione nella cache, le modifiche al piano di esecuzione, la concorrenza o i cambiamenti nella distribuzione dei dati possono tutti far sì che la stessa query utilizzi risorse diverse da un'esecuzione all'altra.
+ **Operazioni in batch di piccole dimensioni:** se il carico di lavoro genera molte istruzioni di piccole dimensioni, valuta la possibilità di raggrupparle in batch in operazioni più grandi (non superare i 10 MB). In questo modo si riducono le spese generali di arrotondamento e si ottengono stime dei costi più significative.
+ **Utilizzabile per l'ottimizzazione, non per la fatturazione:** i dati in `EXPLAIN ANALYZE VERBOSE` ingresso della DPU sono progettati per la consapevolezza dei costi, l'ottimizzazione delle query e l'ottimizzazione. Non è una metrica adatta alla fatturazione. Affidati sempre alle CloudWatch metriche o ai rapporti di fatturazione mensili per dati autorevoli su costi e utilizzo.