2008-11-02 12 views
41

Me pregunto si las conexiones de socket de dominio UNIX con postgresql son más rápidas que las conexiones tcp de localhost en alta tasa de simultaneidad y, en caso afirmativo, ¿por cuánto?Sockets de dominio PostgreSQL UNIX vs sockets TCP

+0

El contexto tal como está escrito es 'postgresql': en ese caso, se trata de una Q. muy específica sobre las dos formas de conectarse a un DB local. – reedstrm

Respuesta

-3

Los sockets TCP en localhost generalmente se implementan utilizando sockets de dominio UNIX, por lo que la respuesta en la mayoría de los sistemas es insignificante para ninguno. Sin embargo, esto no es estándar de ninguna manera, es solo la frecuencia con la que se realiza, por lo tanto, no debe depender de esto.

+3

Simplemente por curiosidad, ¿en qué sistemas operativos está implementado el bucle invertido TCP usando sockets de dominio UNIX? – Alexander

+1

none AFAIK - pero varias bases de datos intentan utilizar automáticamente el socket de dominio UNIX si especifica "localhost" para la cadena de conexión de DB. – Alnitak

+4

PostgreSQL es uno que no lo hace: si especifica localhost, usará loopback TCP, si no especifica nada, usará el socket de dominio. – CesarB

4

que yo sepa, socket de dominio Unix (UDS) funciona como tuberías del sistema y enviar datos solamente, no envíe la suma de comprobación y otra información adicional, no utilice enlace de tres vías como sockets TCP ...

ps: quizá UDS será más rápido

5

Creo que los sockets de dominio UNIX en teoría dan mejor rendimiento que los sockets TCP en la interfaz de bucle invertido, pero en la práctica la diferencia es probablemente insignificante.

Los datos transportados por los sockets de dominio UNIX no tienen que subir y bajar a través de las capas de la pila IP.

re: La respuesta de Alexander. AFAIK no debería obtener más de un cambio de contexto o copia de datos en cada dirección (es decir, para cada read() o write()), por lo tanto, creo que la diferencia será insignificante. La pila IP no necesita copiar el paquete a medida que se mueve entre las capas, pero sí tiene que manipular las estructuras internas de datos para agregar y eliminar encabezados de paquetes de capa superior.

45

Desarrollador principal de Postgres Bruce Momjian tiene blogged about this topic. Momjian afirma: "La comunicación de socket de dominio Unix es considerablemente más rápida". Midió el rendimiento de la red de consultas que muestra que el socket del dominio local era un 33% más rápido que el uso de la pila TCP/IP.

+0

La sobrecarga es + 175% cuando SSL para TCP está habilitado. –

Cuestiones relacionadas