sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgresql:Fråga 10 gånger långsammare i en annan klient

Du kanske vill kontrollera om den långsamma klienten gör SSL-kryptering eller inte. Det händer som standard när det är konfigurerat på servern och klienten har kompilerats med SSL-stöd.

För frågor som hämtar stora mängder data är tidsskillnaden betydande. Också vissa Linux-distributioner som Debian/Ubuntu har SSL på som standard, även för TCP-anslutningar via localhost.

Som ett exempel, här är tidsskillnaden för en fråga som hämtar 1,5 miljoner rader som väger totalt 64 MB, med en varm cache.

Utan kryptering:

$ 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

Med kryptering:

$ 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

För att stänga av det globalt kan man ställa in SSL=off i postgresql.conf .

För att stänga av det för specifika intervall av klientadresser, lägg till poster i pg_hba.conf med hostnossl i det första fältet före den mer generiska host poster.

För att stänga av om klientsidan beror det på hur drivrutinen exponerar sslmode anslutningsparameter. Om den inte gör det, PGSSLMODE miljövariabel kan användas om drivrutinen är implementerad ovanpå libpq .

När det gäller anslutningar via Unix-domänuttag (local ), SSL används aldrig med dem.




  1. ClassNotFoundException - com.microsoft.jdbc.sqlserver.SQLServerDriver

  2. Hur man lagrar DateTimeOffset i PostreSQL

  3. SQL:sök/ersätt men bara första gången ett värde visas i posten

  4. PL/SQL:skriv om SELECT-satsen med IN-parametern i den lagrade proceduren