Informazioni sulle statistiche

Completato

Quando una query viene eseguita, è necessario creare un piano per decidere come accedere ai dati. Se ad esempio una query SELECT restituisce ogni riga, non c'è alcun vantaggio nell'usare un indice e sarebbe più efficiente eseguire la scansione dell'intera tabella. In questo scenario, la pianificazione della query è semplice, ma la maggior parte dei piani di query non sono così semplici da risolvere.

Si immagini uno scenario in cui si esegue una query che ha cercato ogni ordine compreso tra 10 e 20 dollari. Inizialmente, non sappiamo se la query restituisce tutti i dati nella tabella o solo un piccolo subset. Questa incertezza rende difficile pianificare la strategia di query fino alla visualizzazione dei dati. Se sappiamo che la tabella contiene ordini con un prezzo d'acquisto che varia da 1 a 800 dollari, potrebbe essere usato un indice per cercare un piccolo subset di dati. Tuttavia, potrebbero non essere presenti informazioni sufficienti per generare un piano di query appropriato. In questo esempio, anche se gli ordini hanno un prezzo d'acquisto compreso tra 1 e 800 dollari, il 95% degli ordini è compreso tra 10 e 20 dollari e un'analisi dei dati è in realtà il piano più efficace.

In scenari come quello dell'esempio precedente, PostgreSQL ha bisogno di statistiche dettagliate per poter utilizzare il piano di query ottimale.

Per monitorare le statistiche di pianificazione e di esecuzione esiste un'estensione di PostgreSQL chiamata pg_stat_statements. pg_stat_statements è abilitata per impostazione predefinita in Database di Azure per PostgreSQL e consente a tutti i membri del ruolo pg_read_all_stats di eseguire una query sulle statistiche usando più viste pg_stat. La query seguente restituisce l'attività di query usando la vista pg_stat_activity:

SELECT * FROM pg_stat_activity;

Screenshot della query pg_stat_activity.

Disattivazione di pg_stat_statements

Se le query sono univoche e non si ripete periodicamente la stessa query, i dati cronologici delle query sono meno utili. Inoltre, se le viste pg_stat non vengono usate, non offrono alcun vantaggio. La gestione di pg_stat_statements comporta un sovraccarico che può arrivare al 50%. In questi casi è possibile disattivare il rilevamento di pg_stat_statements.

Per disattivare il rilevamento di pg_stat_statements, seguire questa procedura:

  1. Passare al portale di Azure e selezionare il server di Database di Azure per PostgreSQL.

  2. Selezionare Parametri del server e passare all'impostazione pg_stat_statements.track.

    Screenshot del comando pg_statements.

  3. Per disattivare il rilevamento selezionare NONE.

  4. Per un rilevamento più preciso, selezionare ALL.

  5. L'impostazione predefinita è TOP.

  6. Seleziona Salva.