我想知道在高并发率下,与postgresql的UNIX域套接字连接是否比本地tcp连接更快?如果是,快多少?
我想知道在高并发率下,与postgresql的UNIX域套接字连接是否比本地tcp连接更快?如果是,快多少?
Postgres核心开发者Bruce Momjian已经在他的博客中谈到了这个主题。Momjian表示:“Unix域套接字通信速度更快。”他测量了查询网络性能,显示本地域套接字比使用TCP/IP协议栈要快33%。
UNIX域套接字应该比通过回环接口的TCP套接字具有更好的性能(数据拷贝更少,上下文切换次数更少),但我不知道这种性能增加在PostgreSQL中是否能够证明。
我在FreeBSD邮件列表中发现了一个小型比较:http://lists.freebsd.org/pipermail/freebsd-performance/2005-February/001143.html。
据我所知,Unix域套接字(UDS)的工作方式类似于系统管道,它仅发送数据,不发送校验和和其他附加信息,也不使用TCP套接字的三次握手...
PS:也许UDS会更快。
本地主机上的TCP套接字通常使用UNIX域套接字实现,因此在大多数系统上的答案可以忽略不计。但是,这并不是标准做法,这只是通常的做法,因此您不应该依赖于此。