Performance bei parallelen SELECTs

Hallo zusammen,

ich hab folgendes Problem: Führe ich eine recht komplexe SELECT-Anweisung auf unserer Datenbank aus, so erhalte ich in annehmbarer Zeit ein Ergebnis (1-5 sek), laufen jedoch ähnliche SELECT-Anweisungen parallel, so habe ich das Gefühl, dass sie sich gegenseitig blockieren. Das Ergebnis kommt erst nach der 5 bis 10-fachen Zeit oder sogar noch länger.

Die SELECTS erfolgen über eine Tabelle (ca. 6Mio. Datensätzen), dabei werden diverse sum()-Funktionen über einige Felder verwendet, das ganze über 1 Feld gruppiert.

Kommt man da mit Parameter-Tuning weiter? Oder was kann ich sonst tun?

Gruß
Henry

Also, Nachfrage: exakt selbes SELECT, in einer Session schnell, gleichzeitig in mehreren Sessions lahm? Kann es sein, daß der Hauptspeicher ausgeht? Selects blockieren nicht oder so, von daher sollte das so nicht eintreten. Kannst Du im Explain nachschauen, was da passiert? Ich meine, wenn da ein Seq-Scan auf 6 Millionen Sätze nötig ist, dann machen das wahrscheinlich alle Sessions.

Die SELECTS erfolgen über eine Tabelle (ca. 6Mio. Datensätzen), dabei werden diverse sum()-Funktionen über einige Felder verwendet, das ganze über 1 Feld gruppiert.

Kommt man da mit Parameter-Tuning weiter? Oder was kann ich sonst tun?

Erst mal genau ergründen, wo die Bremse ist. Wenn mehrere Sessions immer wieder seqscans benötigen, könnte man vielleicht überlegen, ob man via Trigger oder so das, was da abgefragt wird, schon bei INSERT/UPDATE/DELETE zu berechnen.

Ansonsten erst mal shared_buffers hochsetzen, wenn möglich.


Andreas