Acquisizione dei piani di esecuzione Aurora PostgreSQL - Amazon Aurora

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à.

Acquisizione dei piani di esecuzione Aurora PostgreSQL

La gestione del piano di query di Aurora PostgreSQL offre due diverse modalità di acquisizione dei piani di esecuzione delle query: automatica o manuale. La modalità viene scelta impostando il valore di apg_plan_mgmt.capture_plans_baselines su automatic o su manual. Puoi acquisire i piani di esecuzione per specifiche istruzioni SQL utilizzando l'acquisizione manuale del piano. In alternativa, puoi acquisire tutti i piani (o quelli più lenti) che vengono eseguiti due o più volte durante l'esecuzione dell'applicazione utilizzando l'acquisizione automatica del piano.

Durante l'acquisizione dei piani, l'ottimizzatore imposta lo stato del primo piano acquisito dell'istruzione gestita su approved. L'ottimizzatore imposta lo stato di qualsiasi altro piano acquisito per un'istruzione gestita su unapproved. Tuttavia, a volte, più di un piano potrebbe essere salvato con lo stato approved. Ciò può accadere quando vengono creati più piani per un'istruzione in parallelo e prima che venga eseguito il commit del primo piano per l'istruzione.

Per controllare il numero massimo di piani che possono essere acquisiti e archiviati nella visualizzazione dba_plans, imposta il parametro apg_plan_mgmt.max_plans nel gruppo di parametri a livello di istanza database. La modifica del parametro apg_plan_mgmt.max_plans richiede il riavvio dell'istanza database per rendere effettivo il nuovo valore. Per ulteriori informazioni, vedi il parametro apg_plan_mgmt.max_plans.

Acquisizione manuale dei piani per specifiche istruzioni SQL

Se hai un set di istruzioni SQL da gestire, inserisci le istruzioni in un file script SQL e quindi acquisisci manualmente i piani. Di seguito è riportato un esempio di psql per acquisire manualmente i piani di query per un set di istruzioni SQL.

psql> SET apg_plan_mgmt.capture_plan_baselines = manual; psql> \i my-statements.sql psql> SET apg_plan_mgmt.capture_plan_baselines = off;

Dopo aver acquisito un piano per ogni istruzione SQL, l'ottimizzatore aggiunge una nuova riga alla visualizzazione apg_plan_mgmt.dba_plans.

Ti consigliamo di utilizzare le istruzioni EXPLAIN o EXPLUTE EXPLAIN nel file di script SQL. Assicurati di includere abbastanza variazioni nei valori dei parametri per acquisire tutti i piani di interesse.

Se conosci un piano migliore del piano a costo minimo dell'ottimizzatore, puoi forzare l'ottimizzatore a utilizzare il piano migliore. Per farlo, specifica uno o più hint dell'ottimizzatore. Per ulteriori informazioni, consulta Correzione dei piani mediante pg_hint_plan. Per confrontare le prestazioni dei piani unapproved e approved e approvarli, rifiutarli o eliminarli, consulta Valutazione delle prestazioni del piano.

Acquisizione automatica dei piani

Utilizza l'acquisizione automatica dei piani per situazioni come le seguenti:

  • Non conosci le istruzioni SQL specifiche da gestire.

  • Hai centinaia o migliaia di istruzioni SQL da gestire.

  • L'applicazione utilizza un'API client. Ad esempio, JDBC utilizza le istruzioni preparate senza nome o le istruzioni in modalità bulk che non possono essere espresse in psql.

Per acquisire i piani automaticamente
  1. Attivare l'acquisizione automatica dei piani impostando apg_plan_mgmt.capture_plan_baselines su automatic nel gruppo di parametri a livello di istanza database. Per ulteriori informazioni, consulta Modifica dei parametri in un gruppo di parametri DB in .

  2. Riavviare l'istanza database.

  3. Durante l'esecuzione dell'applicazione, l'ottimizzatore acquisisce i piani per ogni istruzione SQL eseguita almeno due volte.

    Durante l'esecuzione dell'applicazione con le impostazioni predefinite dei parametri della gestione del piano di query, l'ottimizzatore acquisisce i piani per ogni istruzione SQL eseguita almeno due volte. L'acquisizione di tutti i piani mentre si utilizzano i valori predefiniti ha un overhead di runtime molto ridotto e può essere abilitato in produzione.

Per disattivare l'acquisizione automatica dei piani
  • Impostare il parametro apg_plan_mgmt.capture_plan_baselines su off nel gruppo di parametri a livello di istanza database.

Per misurare le prestazioni dei piani non approvati e approvarli, rifiutarli o eliminarli, consulta Valutazione delle prestazioni del piano.