Postgresqlを使用したUNIXドメインソケット接続は、高い同時実行率でlocalhostからのtcp接続よりも高速であるかどうか、また高速である場合はどのくらいですか?
UNIXドメインソケットは、ループバックインターフェイスを介したTCPソケット(データのコピーが少なく、コンテキストスイッチが少ない)よりも優れたパフォーマンスを提供するはずですが、PostgreSQLでパフォーマンスの向上を実証できるかどうかはわかりません。
FreeBSDメーリングリストで小さな比較を見つけました: http://lists.freebsd.org/pipermail/freebsd-performance/2005-February/001143.html 。
Postgresのコア開発者であるBruceMomjianは このトピックについてブログに書いています 。 Momjian氏は、「Unixドメインソケット通信はかなり高速です」と述べています。彼はクエリネットワークのパフォーマンスを測定し、ローカルドメインソケットがTCP/IPスタックを使用するよりも33%高速であることを示しました。
UNIXドメインソケット理論的にははループバックインターフェイスのTCPソケットよりもスループットが高いと思いますが、実際にはその違いはおそらく無視できます。
UNIXドメインソケットを介して伝送されるデータは、IPスタックレイヤーを上下に移動する必要はありません。
re:アレクサンダーの答え。ちなみに、各方向(つまり、各read()
またはwrite()
)に複数のコンテキストスイッチまたはデータコピーを取得するべきではないため、違いはごくわずかであると私は信じています。 IPスタックは、レイヤー間を移動するときにパケットをコピーする必要はありませんが、内部データ構造を操作して、上位レイヤーのパケットヘッダーを追加および削除する必要があります。
afaik、unixドメインソケット(UDS)はシステムパイプのように機能し、データのみを送信し、チェックサムやその他の追加情報を送信せず、TCPソケット...
ps:多分UDSはもっと速くなるでしょう