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?
Réponses
Trop de publicités?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.
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 .
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.