Acquisizione dei piani di esecuzione Aurora PostgreSQL nelle repliche - 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 nelle repliche

QPM (Query Plan Management) consente di acquisire i piani di query generati dalle repliche di Aurora e di archiviarli sull'istanza database principale del cluster di database Aurora. È possibile raccogliere i piani di query da tutte le repliche Aurora e mantenere un insieme di piani ottimali in una tabella centrale persistente sull'istanza primaria. Potrai applicare tali piani su altre repliche secondo necessità. Ciò consente di mantenere la stabilità dei piani di esecuzione e di migliorare le prestazioni delle query tra i cluster database e le versioni del motore.

Prerequisiti

Attiva capture_plan_baselines parameter in una replica di Aurora: imposta il parametro capture_plan_baselines su automatico o manuale per acquisire i piani nelle repliche di Aurora. Per ulteriori informazioni, consulta apg_plan_mgmt.capture_plan_baselines.

Installa l'estensione postgres_fdw: è necessario installare l'estensione foreign data wrapper postgres_fdw per acquisire i piani nelle repliche di Aurora. Per installare l'estensione, esegui il comando seguente in ogni database.

postgres=> CREATE EXTENSION IF NOT EXISTS postgres_fdw;

Gestione dell'acquisizione del piano per le repliche di Aurora

Attiva l'acquisizione del piano per le repliche di Aurora

Per creare o rimuovere l'acquisizione del piano nelle repliche Aurora devi disporre dei privilegi di rds_superuser. Per ulteriori informazioni sui ruoli e le autorizzazioni degli utenti, consulta Informazioni su ruoli e autorizzazioni di PostgreSQL.

Per acquisire i piani, chiama la funzione apg_plan_mgmt.create_replica_plan_capture nell'istanza database di scrittura, come illustrato di seguito:

postgres=> CALL apg_plan_mgmt.create_replica_plan_capture('cluster_endpoint', 'password');
  • cluster_endpoint: cluster_endpoint (endpoint di scrittura) fornisce il supporto di failover per l'acquisizione del piano nelle repliche Aurora.

  • password: per migliorare la sicurezza, ti consigliamo di seguire queste linee guida durante la creazione della password:

    • Deve contenere almeno 8 caratteri.

    • Deve contenere almeno una lettera maiuscola, una lettera minuscola e un numero.

    • Deve contenere almeno un carattere speciale (?, !, #, <, >, *, eccetera).

Nota

Se modifichi l'endpoint, la password o il numero di porta del cluster, devi eseguire nuovamente l'operazione apg_plan_mgmt.create_replica_plan_capture() con l'endpoint del cluster e la password per reinizializzare l'acquisizione del piano. In caso contrario, l'acquisizione dei piani dalle repliche Aurora genererà un errore.

Disattiva l'acquisizione del piano per le repliche Aurora

È possibile disattivare il parametro capture_plan_baselines nelle repliche Aurora impostandone il valore su off nel gruppo Parametri.

Rimuovi l'acquisizione del piano per le repliche Aurora

È possibile rimuovere completamente l'acquisizione dei piani per le repliche Aurora, ma prima di farlo ti consigliamo di rifletterci bene. Per rimuovere l'acquisizione dei piani, chiama apg_plan_mgmt.remove_replica_plan_capture come mostrato:

postgres=> CALL apg_plan_mgmt.remove_replica_plan_capture();

Per attivare l'acquisizione del piano nelle repliche Aurora con l'endpoint e la password del cluster, è necessario chiamare nuovamente apg_plan_mgmt.create_replica_plan_capture().

Risoluzione dei problemi

Di seguito, è possibile trovare idee per la risoluzione dei problemi e soluzioni alternative se il piano non viene acquisito come previsto nelle repliche Aurora.

  • Impostazioni dei parametri: controlla se il parametro capture_plan_baselines è impostato sul valore corretto per attivare l'acquisizione del piano.

  • L'estensione postgres_fdw è installata: utilizza la seguente query per verificare se postgres_fdw è installata.

    postgres=> SELECT * FROM pg_extension WHERE extname = 'postgres_fdw'
  • create_replica_plan_capture() è stata chiamata: utilizza il seguente comando per verificare se la mappatura dell'utente è presente. Altrimenti, chiama create_replica_plan_capture() per inizializzare la funzionalità.

    postgres=> SELECT * FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  • Endpoint e numero di porta del cluster: controlla se l'endpoint e il numero di porta del cluster sono corretti. Quando questi valori sono errati, non viene visualizzato alcun messaggio di errore.

    Utilizza il seguente comando per verificare se l'endpoint è utilizzato in create() e per controllare in quale database risiede:

    postgres=> SELECT srvoptions FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  • reload(): è necessario chiamare apg_plan_mgmt.reload() dopo aver chiamato apg_plan_mgmt.delete_plan() nelle repliche Aurora per rendere effettiva la funzione di eliminazione. Ciò garantisce che la modifica sia stata implementata con successo.

  • Password: è necessario inserire la password in create_replica_plan_capture() seguendo le linee guida menzionate. In caso contrario, verrà restituito un errore. Per ulteriori informazioni, consulta Gestione dell'acquisizione del piano per le repliche di Aurora. Utilizza un'altra password che soddisfi i requisiti.

  • Connessione tra più regioni: l'acquisizione dei piani nelle repliche di Aurora è supportata anche nel database globale Aurora, dove l'istanza di scrittura e le repliche Aurora possono trovarsi in regioni diverse. L'istanza di scrittura e la replica che si trovano in regioni diverse devono essere in grado di comunicare utilizzando il Peering VPC. Per ulteriori informazioni, consulta Peering VPC. Se si verifica un failover che coinvolge più regioni, è necessario riconfigurare l'endpoint su un nuovo endpoint primario del cluster di database.