web-dev-qa-db-ja.com

PostgreSQLUNIXドメインソケットとTCPソケット

Postgresqlを使用したUNIXドメインソケット接続は、高い同時実行率でlocalhostからのtcp接続よりも高速であるかどうか、また高速である場合はどのくらいですか?

48
user20955

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

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

33
Alexander

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

52
NoelProf

UNIXドメインソケット理論的にははループバックインターフェイスのTCPソケットよりもスループットが高いと思いますが、実際にはその違いはおそらく無視できます。

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

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

6
Alnitak

afaik、unixドメインソケット(UDS)はシステムパイプのように機能し、データのみを送信し、チェックサムやその他の追加情報を送信せず、TCPソケット...

ps:多分UDSはもっと速くなるでしょう

5
slav0nic