PGAdminIII: über Netzwerk performanter als alles andere

Hallo,

ich habe heute mit 2 PCs Tests gemacht (speziell mit einer Tabelle).
Beide sind WIND0WS-Rechner.

IP Rechner1: 192.168.1.10
IP Rechner2: 192.168.1.15

Diese Test-Tabelle liegt in einer Datenbank auf Rechner1.

‘Test-Tabelle’ hat 6 Spalten, davon sind 2 Foreign Keys (on update & delete cascade) und 1 Unique not null primary key.

Mein Test-Query:
‘SELECT * FROM Test-Tabelle’

Es befinden sich 1,5mio Zeilen in dieser Test-Tabelle.

1. Test mit PGAdminIII

Rechner1 startet PGAdminIII, verbindet sich auf den ‘localhost:5432’ und setzt ‘SELECT * FROM table’ ab. Dauer der Abfrage: ~100 Sekunden.

Rechner2 startet PGAdminIII, verbindet sich auf den ‘192.168.1.10:5432’ und setzt ‘SELECT * FROM table’ ab. Dauer der Abfrage: ~10 Sekunden.

Rechner1 startet PGAdminIII, verbindet sich auf den ‘192.168.1.10:5432’ und setzt ‘SELECT * FROM table’ ab. Dauer der Abfrage: ~100 Sekunden.

2. Test mit anderer Software

Rechner1 startet Software, verbindet sich auf den ‘localhost:5432’ und setzt ‘SELECT * FROM table’ ab. Dauer der Abfrage: ~100 Sekunden.

Rechner2 startet Software, verbindet sich auf den ‘192.168.1.10:5432’ und setzt ‘SELECT * FROM table’ ab. Dauer der Abfrage: ~100 Sekunden.

[u]Ergebnis des Tests:
[/u]

Ich möchte gerne wissen, wie es PGAdminIII macht, dass er über Netzwerk/Remotedatenbank um Faktor 10 schneller ist ???

Also an der Adresse des Servers liegt es schonmal nicht (1. und 3. Schritt des 1.Tests mit PGAdminIII).

Gibt es Parameter in der postgresql.conf, welche bestimmen, dass Remoteanfragen mehr Ressourcen bekommen oder anders ausgeführt werden?
Welchen Parameter müsste man wie verändern, um lokal auch so schnell zu werden?

Order liegt es an keinem Parameter?

MfG!!!

ok ich habe es jetz noch mit pgsql.exe getestet.
pgsql.exe ist lokal genauso schnell wie es PGAdminIII remote ist.

das vorläufige Ergebnis ist, dass unsere “andere Software” genauso langsam ist, wie PGAdminIII es lokal ist.
PGAdminIII ist nicht Remote schneller, sondern lokal langsamer!


Nun möchte ich wissen:
Was macht PGAdminIII lokal so langsam (Faktor 10), und warum ist unsere ‘andere Software’ auch so langsam (lokal UND remote)?

Oder st die Frage doch: was macht PGAdminIII remote so schnell und pgsql.exe remote UND lokal so schnell?

MfG

Reste von Tischbrandschutzmauern aka Firewalls?

Andreas

wie meinst du das?
die firewall wurde vor dem test deaktiviert, falls du das meisnt`?

pgAdminIII ist so langsam, weil es ein GUI aufbauen muss. Das benötigt die meiste Zeit, dagegen ist die Zeit für das Netzwerk schon fast zu vernachlässigen.
Zu diesem Thema gab es schon den ein oder anderen Thread hier im Forum.

Wenn eure Applikation also genauso langsam ist wie pgAdminIII, dürfte das ebenfalls am GUI liegen bzw. an der Art und Weise, wie ihr die Daten lest und weiter verarbeitet.
Vielleicht könnt ihr die einzelnen Schritte ja mal ausmessen.

Vielen dank für die Antwort!

Das ist für mich auch nachvollziehbar… nur eine Sache nicht:

In meinem Test habe ich übe remote (mit PGAdminIII) eine sehr gute Zeit hinbekomen.

Rechner2 startet PGAdminIII, verbindet sich auf den ‘192.168.1.10:5432’ und setzt ‘SELECT * FROM table’ ab. Dauer der Abfrage: ~10 Sekunden.

weiß jemand warum PGAdminIII über remote schneller den GUI aufbauen kann?
könnte man das über einen Trick auch lokal hinbekommen?

MfG



edit

habe mal weitergetestet:
ich habe jetzt mal Rechner1 auf Rechner2 verbunden und habe den gleichen Test mit PGAdminIII gemacht.
Hier ist der Faktor “nur” 4 und nicht 10.
Das hat also mit der Leistung des Rechners zu tun, auf dem Abgefragt wird.

Das sagt mir:
der “Trick” um das lokal hinzubekommen,
wäre, dass die GUI im Hintergrund erst komplett aufgebaut werden muss,
bevor man sie anzeigt.
Also so, wie es der Remote-Rechner bei remote-Abfragen wahrscheinlich macht.?

…ein weiterer Test mit unserer “anderen Software”:
wie haben die GUI komplett weggenommen --> keine Daten wurden auf den Bildschirm gebracht… das brachte nahezu keine verbesserung.

Du solltest mal den Part eures Programmes im Detail ausmessen, der die Daten aus der Datenbank liest und im Programm weiter verarbeitet.
Das dürfte der “Hot Spot” sein.

Weitere Tests:

Rechner2 startet PGAdminIII, verbindet sich auf den ‘192.168.1.10:5432’ und setzt ‘EXPLAIN ANALYZE VERBOSE SELECT * FROM Tabelle;’ ab.

" {SEQSCAN "
" :startup_cost 0.00 "
" :total_cost 29018.23 "
" > :p > lan_rows 1499923 "
" > :p > lan_width 36 "
" :targetlist ("
" {TARGETENTRY "
" :expr "
" {VAR "
" :varno 1 "
" :varattno 1 "
" :vartype 23 "
" :vartypmod -1 "
" :varlevelsup 0 "
" :varnoold 1 "
" :varoattno 1"
" }"
" :resno 1 "
" :resname Spalte1 "
" :ressortgroupref 0 "
" :resorigtbl 25444 "
" :resorigcol 1 "
" :resjunk false"
" }"
" {TARGETENTRY "
" :expr "
" {VAR "
" :varno 1 "
" :varattno 2 "
" :vartype 701 "
" :vartypmod -1 "
" :varlevelsup 0 "
" :varnoold 1 "
" :varoattno 2"
" }"
" :resno 2 "
" :resname Spalte2 "
" :ressortgroupref 0 "
" :resorigtbl 25444 "
" :resorigcol 2 "
" :resjunk false"
" }"
" {TARGETENTRY "
" :expr "
" {VAR "
" :varno 1 "
" :varattno 3 "
" :vartype 1114 "
" :vartypmod -1 "
" :varlevelsup 0 "
" :varnoold 1 "
" :varoattno 3"
" }"
" :resno 3 "
" :resname Spalte3 "
" :ressortgroupref 0 "
" :resorigtbl 25444 "
" :resorigcol 3 "
" :resjunk false"
" }"
" {TARGETENTRY "
" :expr "
" {VAR "
" :varno 1 "
" :varattno 4 "
" :vartype 23 "
" :vartypmod -1 "
" :varlevelsup 0 "
" :varnoold 1 "
" :varoattno 4"
" }"
" :resno 4 "
" :resname Spalte4 "
" :ressortgroupref 0 "
" :resorigtbl 25444 "
" :resorigcol 4 "
" :resjunk false"
" }"
" {TARGETENTRY "
" :expr "
" {VAR "
" :varno 1 "
" :varattno 5 "
" :vartype 23 "
" :vartypmod -1 "
" :varlevelsup 0 "
" :varnoold 1 "
" :varoattno 5"
" }"
" :resno 5 "
" :resname Spalte5 "
" :ressortgroupref 0 "
" :resorigtbl 25444 "
" :resorigcol 5 "
" :resjunk false"
" }"
" {TARGETENTRY "
" :expr "
" {VAR "
" :varno 1 "
" :varattno 6 "
" :vartype 701 "
" :vartypmod -1 "
" :varlevelsup 0 "
" :varnoold 1 "
" :varoattno 6"
" }"
" :resno 6 "
" :resname Spalte6 "
" :ressortgroupref 0 "
" :resorigtbl 25444 "
" :resorigcol 6 "
" :resjunk false"
" }"
" )"
" :qual <> "
" :lefttree <> "
" :righttree <> "
" :initPlan <> "
" :extParam (b)"
" :allParam (b)"
" :nParamExec 0 "
" :scanrelid 1"
" }"
“”
“Seq Scan on Tabelle (cost=0.00…29018.23 rows=1499923 width=36) (actual time=0.025…199.157 rows=1500000 loops=1)”
“Total runtime: 249.040 ms”

Rechner2 startet PGAdminIII, verbindet sich auf den ‘localhost:5432’ und setzt ‘EXPLAIN ANALYZE VERBOSE SELECT * FROM Tabelle;’ ab.

“Seq Scan on Tabelle (cost=0.00…27500.00 rows=1500000 width=36) (actual time=0.057…2098.330 rows=1500000 loops=1)”
" Output: Spalte1, Spalte2, Spalte3, Spalte4, Spalte5, Spalte6"
“Total runtime: 3973.961 ms”

Also die Zeiten der Abfrage sind schon deutlich unterschiedlich.
Man kann den Faktor 10 erkennen, wenn man sich die beiden ‘actual time=’ - Werte rechts von ‘…’ ansieht.
Hauptfrage nach wie vor: Warum holt PGAdminIII die Daten schneller übers Netzwerk, als von sich selbst lokal auf dem PC.
Warum bekomme ich bei der gleichen EXPLAIN-Abfrage lokal 3 Zeilen und remote 127 ?

MfG