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

Postgresql:Abfrage 10x langsamer in einem anderen Client

Möglicherweise möchten Sie überprüfen, ob der langsame Client eine SSL-Verschlüsselung durchführt oder nicht. Dies geschieht standardmäßig, wenn es auf dem Server eingerichtet und der Client mit SSL-Unterstützung kompiliert wurde.

Bei Abfragen, die große Datenmengen abrufen, ist der Zeitunterschied erheblich. Auch einige Linux-Distributionen wie Debian/Ubuntu haben SSL standardmäßig aktiviert, sogar für TCP-Verbindungen über localhost.

Als Beispiel sehen Sie hier den Zeitunterschied für eine Abfrage, die 1,5 Millionen Zeilen mit einem Gesamtgewicht von 64 MB mit einem warmen Cache abruft.

Ohne Verschlüsselung:

$ psql "host=localhost dbname=mlists sslmode=disable"
Password: 
psql (9.1.7, server 9.1.9)
Type "help" for help.

mlists=> \timing
Timing is on.
mlists=> \o /dev/null
mlists=> select subject from mail;
Time: 1672.258 ms

Mit Verschlüsselung:

$ psql "host=localhost dbname=mlists"
Password: 
psql (9.1.7, server 9.1.9)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

mlists=> \o /dev/null
mlists=> \timing
Timing is on.
mlists=> select subject from mail;
Time: 7017.935 ms

Um es global auszuschalten, könnte man SSL=off setzen in postgresql.conf .

Um es für bestimmte Bereiche von Clientadressen auszuschalten, fügen Sie Einträge in pg_hba.conf hinzu mit hostnossl im ersten Feld vor dem allgemeineren host Einträge.

Um es clientseitig zu deaktivieren, hängt es davon ab, wie der Treiber den sslmode verfügbar macht Verbindungsparameter. Wenn nicht, wird der PGSSLMODE Umgebungsvariable kann verwendet werden, wenn der Treiber auf libpq implementiert wird .

Wie bei Verbindungen über Unix-Domain-Sockets (local ), SSL wird nie mit ihnen verwendet.