PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Postgresql :requête 10 fois plus lente dans un client différent

Vous voudrez peut-être vérifier si le client lent utilise ou non le cryptage SSL. Cela se produit par défaut lorsqu'il est configuré sur le serveur et que le client a été compilé avec le support SSL.

Pour les requêtes qui récupèrent de grandes quantités de données, la différence de temps est importante. Certaines distributions Linux comme Debian/Ubuntu ont également SSL activé par défaut, même pour les connexions TCP via localhost.

A titre d'exemple, voici la différence de temps pour une requête récupérant 1,5M de lignes pesant un total de 64Mbytes, avec un warm cache.

Sans chiffrement :

$ 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

Avec chiffrement :

$ 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

Pour le désactiver globalement, on peut définir SSL=off dans postgresql.conf .

Pour le désactiver pour des plages spécifiques d'adresses client, ajoutez des entrées dans pg_hba.conf avec hostnossl dans le premier champ avant le host plus générique entrées.

Pour désactiver si côté client, cela dépend de la façon dont le pilote expose le sslmode paramètre de connexion. Si ce n'est pas le cas, le PGSSLMODE la variable d'environnement peut être utilisée si le pilote est implémenté au-dessus de libpq .

Comme pour les connexions via les sockets de domaine Unix (local ), SSL n'est jamais utilisé avec eux.