Best practice per la gestione del piano di query 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à.

Best practice per la gestione del piano di query Aurora PostgreSQL

La gestione del piano di query ti permette di controllare come e quando cambiano i piani di esecuzione delle query. In qualità di amministratore di database (DBA), gli obiettivi principali che desideri raggiungere utilizzando QPM sono prevenire le regressioni a seguito di modifiche al database e controllare quando l'ottimizzatore deve utilizzare un nuovo piano. Di seguito sono riportate alcune best practice consigliate su come utilizzare la gestione del piano di query. L'approccio di gestione del piano proattivo differisce da quello reattivo in termini di modalità e tempistiche dell'approvazione dei nuovi piani.

Gestione del piano proattiva per prevenire la regressione delle prestazioni

Per evitare che si verifichino regressioni delle prestazioni del piano, è possibile far evolvere le baseline del piano eseguendo una procedura che confronta le prestazioni dei piani appena individuati con le prestazioni della baseline esistente dei piani approvati e quindi approva automaticamente il set di piani più rapido come nuova baseline. In questo modo, la baseline dei piani migliora nel tempo man mano che vengono individuati i piani più rapidi.

  1. In un ambiente di sviluppo, identificare le istruzioni SQL che hanno il maggiore impatto sulle prestazioni o sulla velocità effettiva del sistema. Quindi acquisire i piani per queste dichiarazioni come descritto in Acquisizione manuale dei piani per specifiche istruzioni SQL e Acquisizione automatica dei piani.

  2. Esportare i piani acquisiti dall'ambiente di sviluppo e importarli nell'ambiente di produzione. Per ulteriori informazioni, consulta Esportazione e importazione dei piani.

  3. In produzione, eseguire l'applicazione e applicare l'utilizzo di piani gestiti approvati. Per ulteriori informazioni, consulta Utilizzo dei piani gestiti per Aurora PostgreSQL. Durante l'esecuzione dell'applicazione, aggiungere nuovi piani quando l'ottimizzatore li rileva. Per ulteriori informazioni, consulta Acquisizione automatica dei piani.

  4. Analizzare i piani non approvati e approvare quelli che funzionano bene. Per ulteriori informazioni, consulta Valutazione delle prestazioni del piano.

  5. Mentre l'applicazione continua a essere eseguita, l'ottimizzatore inizia a usare i nuovi piani secondo le necessità.

Garantire la stabilità del piano dopo un aggiornamento di versione principale

Ogni versione principale di PostgreSQL include miglioramenti e modifiche all'ottimizzatore di query progettati per potenziare le prestazioni. Tuttavia, i piani di esecuzione delle query generati dal servizio di ottimizzazione nelle versioni precedenti potrebbero causare regressioni delle prestazioni nelle versioni aggiornate più recenti. È possibile utilizzare la gestione del piano di query per risolvere i problemi di prestazione e garantire la stabilità del piano dopo un aggiornamento della versione principale.

L'ottimizzatore utilizza sempre il piano di costo minimo approvato, anche se esistono più piani approvati per la stessa istruzione. Dopo un aggiornamento, l'ottimizzatore potrebbe scoprire nuovi piani, ma questi verranno salvati come piani non approvati. Questi piani vengono eseguiti solo se approvati utilizzando lo stile reattivo di gestione del piano con il parametro unapproved_plan_execution_threshold. È possibile massimizzare la stabilità del piano utilizzando lo stile proattivo di gestione del piano con il parametro evolve_plan_baselines. In questo modo si confrontano le prestazioni dei nuovi piani con quelle dei vecchi piani e si approvano o rifiutano i piani che sono almeno il 10% più veloci rispetto al piano migliore successivo.

Dopo l'aggiornamento, utilizza la funzione evolve_plan_baselines con le associazioni dei parametri di query per confrontare le prestazioni del piano prima e dopo l'aggiornamento. I seguenti passaggi presuppongono che tu abbia utilizzato piani gestiti approvati nel tuo ambiente di produzione, come descritto in Utilizzo dei piani gestiti per Aurora PostgreSQL.

  1. Prima di procedere con l'aggiornamento, esegui l'applicazione e assicurati che il gestore del piano di query sia in esecuzione. Mentre l'applicazione è in esecuzione, aggiungi i nuovi piani rilevati dall'ottimizzatore. Per ulteriori informazioni, consulta Acquisizione automatica dei piani.

  2. Valuta le prestazioni di ciascun piano. Per ulteriori informazioni, consulta Valutazione delle prestazioni del piano.

  3. Dopo l'aggiornamento, analizza di nuovo i piani approvati utilizzando la funzione evolve_plan_baselines. Confronta le prestazioni prima e dopo l'utilizzo delle associazioni dei parametri di query. Se il nuovo piano è veloce, aggiungilo all'elenco dei piani approvati. Se è più veloce di un altro piano in base alle stesse associazioni di parametri, è possibile contrassegnare il piano più lento come Rejected (Rifiutato).

    Per ulteriori informazioni, consulta Approvazione dei piani migliori. Per ulteriori informazioni su questa funzione, consulta apg_plan_mgmt.evolve_plan_baselines.

Per ulteriori informazioni, consulta Garantire prestazioni coerenti dopo gli aggiornamenti delle versioni principali con la gestione del piano di query di Amazon Aurora edizione compatibile con PostgreSQL.

Nota

Quando esegui un aggiornamento di una versione principale utilizzando la replica logica di AWS DMS, assicurati di replicare lo schema apg_plan_mgmt per garantire che i piani esistenti vengano copiati nell'istanza aggiornata. Per ulteriori informazioni sulla replica logica, consulta Utilizzo della replica logica per eseguire l'aggiornamento a una versione principale per Aurora PostgreSQL.

Gestione del piano reattiva per rilevare e correggere le regressioni delle prestazioni

Rileva quali piani causano regressioni delle prestazioni monitorando l'applicazione mentre è in esecuzione. Quando rilevi regressioni, rifiuta o correggi manualmente i piani inefficienti seguendo questi passaggi:

  1. Durante l'esecuzione dell'applicazione, applica l'uso dei piani gestiti e aggiungi automaticamente i piani appena rilevati come non approvati. Per ulteriori informazioni, consulta Utilizzo dei piani gestiti per Aurora PostgreSQL e Acquisizione automatica dei piani.

  2. Monitorare l'applicazione in esecuzione per le regressioni delle prestazioni.

  3. Quando viene rilevata una regressione del piano, impostare lo stato del piano su rejected. La volta successiva che l'ottimizzatore esegue l'istruzione SQL, ignora automaticamente il piano rifiutato e utilizza invece un piano approvato diverso. Per ulteriori informazioni, consulta Rifiuto o disabilitazione dei piani più lenti.

    In alcuni casi, si potrebbe preferire correggere un piano danneggiato piuttosto che rifiutarlo, disabilitarlo o cancellarlo. Usare l'estensione pg_hint_plan per sperimentare il miglioramento di un piano. Con pg_hint_plan, si usano commenti speciali per indicare all'ottimizzatore di ignorare il modo in cui normalmente crea un piano. Per ulteriori informazioni, consulta Correzione dei piani mediante pg_hint_plan.