PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Postgresql:query 10 volte più lente in un client diverso

Potresti voler controllare se il client lento esegue la crittografia SSL o meno. Succede per impostazione predefinita quando è impostato sul server e il client è stato compilato con il supporto SSL.

Per le query che recuperano grandi quantità di dati, la differenza di tempo è significativa. Inoltre, alcune distribuzioni Linux come Debian/Ubuntu hanno SSL attivo per impostazione predefinita, anche per le connessioni TCP tramite localhost.

Ad esempio, ecco la differenza di tempo per una query che recupera 1,5M di righe per un totale di 64Mbyte, con una cache calda.

Senza crittografia:

$ 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

Con crittografia:

$ 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

Per disattivarlo a livello globale, è possibile impostare SSL=off in postgresql.conf .

Per disattivarlo per intervalli specifici di indirizzi client, aggiungi voci in pg_hba.conf con hostnossl nel primo campo prima del più generico host voci.

Per disattivare il lato client, dipende da come il driver espone il sslmode parametro di connessione. In caso contrario, il PGSSLMODE la variabile di ambiente può essere utilizzata se il driver è implementato su libpq .

Per quanto riguarda le connessioni tramite socket di dominio Unix (local ), SSL non viene mai utilizzato con loro.