49 votes

Sockets de domaine UNIX PostgreSQL vs sockets TCP

Je me demande si les connexions de socket de domaine UNIX avec postgresql sont plus rapides que les connexions TCP de localhost avec un taux de simultanéité élevé et si oui, de combien?

55voto

NoelProf Points 306

Le développeur principal de Postgres, Bruce Momjian, a publié un blog sur ce sujet . Momjian déclare: "La communication de socket dans le domaine Unix est considérablement plus rapide". Il a mesuré les performances du réseau de requêtes en montrant que le socket du domaine local était 33% plus rapide que l’utilisation de la pile TCP / IP.

34voto

Alexander Points 4298

Les sockets de domaine UNIX devraient offrir de meilleures performances que les sockets TCP via une interface en boucle (moins de copies de données, moins de commutateurs de contexte), mais je ne sais pas si l'amélioration des performances peut être démontrée avec PostgreSQL.

J'ai trouvé une petite comparaison sur la liste de diffusion FreeBSD: http://lists.freebsd.org/pipermail/freebsd-performance/2005-Février/001143.html .

7voto

Alnitak Points 143355

Je crois que les sockets de domaine UNIX , en théorie, donner un meilleur rendement que les sockets TCP sur l'interface de bouclage, mais dans la pratique, la différence est probablement négligeable.

Données sur les sockets de domaine UNIX n'ont pas à aller en haut et en bas par le biais de l'adresse IP de la pile des calques.

re: Alexander réponse. Autant que je sache, vous ne devriez pas faire plus d'un changement de contexte ou de la copie de données dans chaque direction (c'est à dire pour chaque read() ou write()), c'est pourquoi je crois que la différence sera negligble. La pile IP n'a pas besoin de copier le paquet comme il se déplace entre les couches, mais il ne faut manipuler les structures de données internes d'ajouter et de supprimer plus de la couche en-têtes des paquets.

6voto

slav0nic Points 1049

autant que je sache, le socket de domaine unix (UDS) fonctionne comme un canal système et envoie UNIQUEMENT des données, pas une somme de contrôle ni d'autres informations supplémentaires, ni une négociation à trois voies comme sockets TCP ...

ps: peut-être que UDS sera plus rapide

-4voto

Terminus Points 662

Les sockets TCP sur localhost sont généralement implémentés à l'aide de sockets de domaine UNIX. Par conséquent, la réponse sur la plupart des systèmes est négligeable. Cependant, ceci n’est en aucun cas standard: c’est comme cela que l’on fait habituellement, vous ne devriez donc pas en dépendre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X