in 2 Datenbankinstanzen ist jeweils eine Tabelle vorhanden (gleiches Schema)
Tab1 ca. 1.000.000 und Tab2 ca. 3.000.000 Datensätze
Tab1 ca. 130MB und Tab2 ca. 330MB
öffne ich im PGAdmin das Abfragefenster und schicke das Statement “SELECT COUNT(*) FROM Tab1;” ab, wächst der Speicherverbrauch der postgres.exe auf über 140 MB
das gleiche bei der zweiten Tabelle ca. 11 MB
beide Tabellen haben nur einen Index - auf der Schlüsselspalte (integer)
Was genau gefällt Dir nicht daran, daß der Speicher genutzt wird?
Ein count(*) ohne weitere WHERE-Condition führt zu einem kompletten sequentellen Scan der Tabelle - da ist also alles einmal quer durch den RAM zu ziehen, JEDER EINZELNE DATENSATZ.
Dir ist schon klar, dass jede dieser 100 Verbindungen die 32MB work_mem pro Sortieroperation verwenden darf? Ein einzelnes Statement kann mehr als eine Sortieroperation benötigen (z.B. ein Sort, ein Hash-Join).
Wieviel Speicher da verbraucht wird kannst Du ja ausrechnen…