PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Ottimizza le tabelle di sola lettura di PostgreSQL

Colonne utilizzate per il filtro o partecipare (o, in misura minore, ordinamento ) sono di interesse per l'indicizzazione. Le colonne appena selezionate sono poco rilevanti! Per la query seguente vengono indicizzati solo su a e e può essere utile:

SELECT a,b,c,d
FROM   tbl_a
WHERE  a = $some_value
AND    e < $other_value;

Ecco, f ed eventualmente c sono candidati anche loro:

SELECT a,b,c,d
FROM   tbl_a
JOIN   tbl_b USING (f)
WHERE  a = $some_value
AND    e < $other_value
ORDER  BY c;

Dopo aver creato gli indici, verifica se sono effettivamente utili con EXPLAIN ANALYZE . Confronta anche i tempi di esecuzione con e senza gli indici. Eliminare e ricreare gli indici è facile e veloce. Ci sono anche parametri per esperimento con EXPLAIN ANALYZE . La differenza potrebbe essere sbalorditiva o inesistente.
Poiché le tabelle sono di sola lettura, la manutenzione dell'indice è economica. È solo una questione di spazio su disco.

Se vuoi davvero sapere cosa stai facendo, inizia leggendo i documenti .

Se non sai quali query aspettarti...

  1. Prova a registrare un numero sufficiente di query per trovare casi d'uso tipici. Registra le query con il parametro log_statement = all per quello. Oppure registra semplicemente query lente utilizzando log_min_duration_statement .

  2. Crea indici potrebbe essere utile e controllare le statistiche dopo un po' di tempo per vedere cosa viene effettivamente utilizzato. PostgreSQL dispone di un'intera infrastruttura per monitoraggio delle statistiche . Un modo conveniente per studiare le statistiche (e molte altre attività) è pgAdmin dove puoi scegliere la tua tabella / funzione / indice e ottenere tutti i dati nella scheda "statistiche" nel browser degli oggetti (finestra principale).

  3. Procedi come descritto sopra per vedere se gli indici in uso accelerano effettivamente le cose.

  4. Se il pianificatore di query dovesse scegliere di utilizzare uno o più dei tuoi indici ma senza o con effetti negativi, probabilmente c'è qualcosa che non va nella tua configurazione e devi studiare le basi dell'ottimizzazione delle prestazioni:vuoto, analisi, parametri di costo, utilizzo della memoria, ...