sql >> Base de Datos >  >> RDS >> PostgreSQL

Postgresql:consulta 10 veces más lenta en un cliente diferente

Es posible que desee verificar si el cliente lento realiza el cifrado SSL o no. Ocurre de manera predeterminada cuando está configurado en el servidor y el cliente ha sido compilado con soporte SSL.

Para consultas que recuperan grandes cantidades de datos, la diferencia de tiempo es significativa. Además, algunas distribuciones de Linux como Debian/Ubuntu tienen SSL activado de forma predeterminada, incluso para conexiones TCP a través de localhost.

Como ejemplo, aquí está la diferencia de tiempo para una consulta que recupera 1,5M de filas con un peso total de 64Mbytes, con un caché tibio.

Sin cifrado:

$ 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 cifrado:

$ 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

Para desactivarlo globalmente, se podría configurar SSL=off en postgresql.conf .

Para desactivarlo para rangos específicos de direcciones de clientes, agregue entradas en pg_hba.conf con hostnossl en el primer campo antes del host más genérico entradas.

Para desactivarlo del lado del cliente, depende de cómo el controlador expone el sslmode parámetro de conexión. Si no es así, el PGSSLMODE la variable de entorno se puede usar si el controlador se implementa sobre libpq .

En cuanto a las conexiones a través de sockets de dominio Unix (local ), SSL nunca se usa con ellos.