52

postgresqlを使用したUNIXドメインソケット接続は、高い同時実行率でローカルホストからのtcp接続よりも高速かどうか疑問に思います。高速である場合、どのくらいですか?

4

5 に答える 5

59

Postgres コア開発者の Bruce Momjian は、このトピックについてブログを書いています。Momjian 氏は、「Unix ドメインのソケット通信はかなり高速です」と述べています。彼は、ローカル ドメイン ソケットが TCP/IP スタックを使用するよりも 33% 高速であることを示すクエリ ネットワーク パフォーマンスを測定しました。

于 2012-08-24T00:01:55.097 に答える
40

UNIX ドメイン ソケットは、ループバック インターフェイスを介した TCP ソケットよりも優れたパフォーマンスを提供するはずですが (データのコピーが少なく、コンテキスト スイッチが少ない)、パフォーマンスの向上が PostgreSQL で実証できるかどうかはわかりません。

FreeBSD メーリングリストで小さな比較を見つけました: http://lists.freebsd.org/pipermail/freebsd-performance/2005-February/001143.html

于 2008-11-02T22:21:55.133 に答える
8

ループバック インターフェイスでは、理論的には UNIX ドメイン ソケットの方が TCP ソケットよりも優れたスループットを示すと思いますが、実際にはその差はおそらく無視できる程度です。

UNIX ドメイン ソケットを介して伝送されるデータは、IP スタック層を上下に移動する必要はありません。

re: アレクサンダーの答え。read()私の知る限り、各方向(つまり、またはそれぞれ)で複数のコンテキストスイッチまたはデータコピーを取得するべきではないためwrite()、違いはごくわずかであると私は信じています。IP スタックは、レイヤー間を移動するときにパケットをコピーする必要はありませんが、内部データ構造を操作して上位レイヤーのパケット ヘッダーを追加および削除する必要があります。

于 2008-11-02T22:26:31.723 に答える
6

私の知る限り、UNIXドメインソケット(UDS)はシステムパイプのように機能し、データのみを送信し、チェックサムやその他の追加情報を送信せず、TCPソケットとしてスリーウェイハンドシェイクを使用しません...

ps: UDS の方が速いかもしれません

于 2008-11-02T22:24:44.800 に答える
-4

ローカルホストのTCPソケットは通常、UNIXドメインソケットを使用して実装されるため、ほとんどのシステムでの答えは無視できます。ただし、これは決して標準ではありません。これは通常の方法であるため、これに依存しないでください。

于 2008-11-02T22:07:45.380 に答える