PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Optimieren Sie schreibgeschützte PostgreSQL-Tabellen

Spalten, die zum Filtern verwendet werden oder beitreten (oder in geringerem Maße sortieren ) für die Indexierung interessant sind. Gerade ausgewählte Spalten sind kaum relevant! Für die folgende Abfrage wird nur auf ein indiziert und e kann nützlich sein:

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

Hier, f und möglicherweise c sind auch Kandidaten:

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

Testen Sie nach dem Erstellen von Indizes mit EXPLAIN ANALYZE . Vergleichen Sie auch die Ausführungszeiten mit und ohne Indizes. Das Löschen und Neuerstellen von Indizes ist schnell und einfach. Es gibt auch Parameter zum Experimentieren mit EXPLAIN ANALYZE . Der Unterschied kann verblüffend oder gar nicht vorhanden sein.
Da Ihre Tabellen schreibgeschützt sind, ist die Indexpflege günstig. Es ist lediglich eine Frage des Speicherplatzes.

Wenn Sie wirklich wissen wollen, was Sie tun, lesen Sie zunächst die Dokumentation .

Wenn Sie nicht wissen, welche Abfragen Sie erwarten können ...

  1. Versuchen Sie, genügend Abfragen zu protokollieren, um typische Anwendungsfälle zu finden. Protokollanfragen mit dem Parameter log_statement = all dafür. Oder protokollieren Sie einfach langsame Abfragen mit log_min_duration_statement .

  2. Erstellen Sie Indizes das könnte nützlich sein und überprüfen Sie nach einiger Zeit die Statistiken, um zu sehen, was tatsächlich verwendet wird. PostgreSQL hat eine ganze Infrastruktur für Überwachungsstatistiken . Eine praktische Möglichkeit, Statistiken (und viele andere Aufgaben) zu studieren, ist pgAdmin wo Sie Ihre Tabelle / Funktion / Index auswählen und alle Daten auf der Registerkarte "Statistiken" im Objektbrowser (Hauptfenster) abrufen können.

  3. Gehen Sie wie oben beschrieben vor, um zu sehen, ob verwendete Indizes die Dinge tatsächlich beschleunigen.

  4. Wenn der Abfrageplaner sich dafür entscheidet, einen oder mehrere Ihrer Indizes zu verwenden, aber ohne oder mit negativen Auswirkungen, dann stimmt wahrscheinlich etwas mit Ihrer Einrichtung nicht und Sie müssen die Grundlagen der Leistungsoptimierung:Vakuum, Analyse, Kostenparameter, Speichernutzung, ...