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
Respuesta
Los sockets de dominio UNIX deberían ofrecer un mejor rendimiento que los sockets TCP sobre la interfaz loopback (menos copia de datos, menos conmutadores de contexto), pero no sé si el aumento del rendimiento se puede demostrar con PostgreSQL.
Encontré una pequeña comparación en la lista de correo de FreeBSD: http://lists.freebsd.org/pipermail/freebsd-performance/2005-February/001143.html.
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.
Simplemente por curiosidad, ¿en qué sistemas operativos está implementado el bucle invertido TCP usando sockets de dominio UNIX? – Alexander
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
PostgreSQL es uno que no lo hace: si especifica localhost, usará loopback TCP, si no especifica nada, usará el socket de dominio. – CesarB
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
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.
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.
La sobrecarga es + 175% cuando SSL para TCP está habilitado. –
- 1. Haskell: Sockets de dominio de Unix
- 2. C# Sockets vs Pipes
- 3. ¿Qué tan confiables son los sockets de dominio de Unix?
- 4. ¿Cómo uso los sockets de dominio Unix de Java/Scala?
- 5. ¿Sockets de dominio UNIX no accesibles entre los usuarios?
- 6. Sockets de dominio UNIX frente a memoria compartida (archivo asignado)
- 7. Sockets Php vs Streams
- 8. Android - Sockets vs Polling
- 9. Servicio web vs sockets TCP/IP (Java) + SQL Connections
- 10. Sockets TCP y POSIX aceptar() semántica
- 11. ¿Cómo diferencian los sockets de dominio de Unix entre múltiples clientes?
- 12. Sincronización vs. Async Sockets Performance en .NET
- 13. ¿Usa sockets SSL y sockets no SSL simultáneamente en Boost.Asio?
- 14. ¿Hay alguna razón legítima para usar sockets de Unix sobre TCP/IP con mysql?
- 15. sondeo a través de miles de sockets TCP
- 16. Android: Transmisión de audio a través de sockets TCP
- 17. ¿Se puede configurar Apache BalancerMember para usar sockets de dominio de Unix?
- 18. Sockets RDM
- 19. Python + sockets
- 20. C, sockets de dominio Unix, datos auxiliares y GCC; Usando CMSG_DATA macro
- 21. ¿Cómo puedo comunicarme sobre sockets TCP desde JavaScript?
- 22. Sockets Java: ¿puedo escribir un servidor TCP con un hilo?
- 23. leyendo parcialmente de sockets
- 24. Sockets de prueba de unidad
- 25. Postgresql y django - socket de dominio Unix
- 26. Qt Sockets and Endianness
- 27. Java Sockets & the Internet
- 28. C# Asynchronous Sockets questions
- 29. sockets: BufferedReader readLine (bloques)
- 30. sockets que programan gfortran
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