großer postgres Prozess

Konfiguration des PostgreSQL Datenbankservers.
Antworten
rene
Neuer Benutzer
Beiträge: 4
Registriert: Do 2. Jan 2014, 11:36

großer postgres Prozess

Beitrag von rene »

ich habe PostgreSQL 9.2.2 32 bit auf einem Windows 2003 Server laufen

Konfiguration:
shared_buffers = 512MB
temp_buffers = 128MB
work_mem = 32MB
maintenance_work_mem = 64MB

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)

WORAN kann das liegen?

akretschmer
Erfahrener Benutzer
Beiträge: 7733
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: großer postgres Prozess

Beitrag von akretschmer »

rene hat geschrieben:ich habe PostgreSQL 9.2.2 32 bit auf einem Windows 2003 Server laufen

Konfiguration:
shared_buffers = 512MB
temp_buffers = 128MB
work_mem = 32MB
maintenance_work_mem = 64MB

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)

WORAN kann das liegen?


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.

rene
Neuer Benutzer
Beiträge: 4
Registriert: Do 2. Jan 2014, 11:36

Re: großer postgres Prozess

Beitrag von rene »

1. Der Server geht in die Knie, wenn dass bei 100 gleichzeitigen Verbindungen passiert
2. Die Speichernutzng nimmt nur bei einer Tabelle solche Ausmaße an

castorp
Erfahrener Benutzer
Beiträge: 1210
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: großer postgres Prozess

Beitrag von castorp »

rene hat geschrieben:1. Der Server geht in die Knie, wenn dass bei 100 gleichzeitigen Verbindungen passiert
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...
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

rene
Neuer Benutzer
Beiträge: 4
Registriert: Do 2. Jan 2014, 11:36

Re: großer postgres Prozess

Beitrag von rene »

Selbst wenn es normal ist, dass der Speicher genutzt wird, warum nur bei einer Tabelle und noch dazu bei der kleineren?

Antworten