2008-11-02 165 views
41

我想知道,与postgresql的UNIX域套接字连接速度更快,然后从本地主机的TCP连接以高并发速度,如果它,多少?PostgreSQL UNIX域套接字与TCP套接字

+0

编写的上下文是'postgresql':在这种情况下,关于连接到本地数据库的两种方式,这是一个非常具体的问题。 – reedstrm 2009-02-23 19:52:04

回答

-3

本地主机上的TCP套接字通常使用UNIX域套接字实现,所以大多数系统上的答案都可以忽略。然而,这并不是标准 - 它只是通常的做法,所以你不应该依赖这个。

+3

出于好奇,在哪些操作系统是使用UNIX域套接字实现的TCP环回? – Alexander 2008-11-02 22:16:06

+1

无AFAIK - 但如果为数据库连接字符串指定了“localhost”,则会自动尝试使用UNIX域套接字。 – Alnitak 2008-11-02 22:20:32

4

据我所知,Unix域套接字(UDS)的工作就像系统管道,并只发送数据,而不是发送校验等附加信息,不使用三次握手的TCP套接字...

PS:也许UDS将更快

5

我相信UNIX域套接字在理论上比环回接口上的TCP套接字提供更好的吞吐量,但实际上差异可能可以忽略不计。

通过UNIX域套接字传输的数据不必上下穿过IP堆栈层。

回复:亚历山大的回答。 AFAIK你不应该在每个方向(即每个read()write())获得任何超过一个上下文切换或数据拷贝,因此我相信这种差异将会被忽略。 IP栈在层之间移动时不需要复制数据包,但它必须操作内部数据结构来添加和删除更高层的数据包头。

45

Postgres核心开发者Bruce Momjian拥有blogged about this topic。 Momjian表示:“Unix域套接字通信速度显着提高。”他测量了查询网络性能,表明本地域套接字比使用TCP/IP堆栈快33%。