MySQLソケットを使用する場合とhost:portを使用する場合


19

多くのアプリケーションでは、ユーザー名、パスワードホスト、ポートを使用してMysqlに接続できます。一部では、host:port。の代わりにソケットを設定できます。

一方の方が他方よりも明確な利点はありますか?ソケットは、MySQLが同じマシン上にある場合にのみ機能すると想像できます。そうですか?もしそうなら、接続する代わりにそのソケットを使用するよりも利点がありますlocalhost:3306か?

私はネットワークとソケットの詳細についてあまり詳しくないので、いくつかの重要な情報が完全に欠落しているかもしれません。もしそうなら、私が欠けているものを説明してもらえますか?

回答:


19

まあ、それは簡単です。

ソケットはファイルベースの通信であり、別のマシンからソケットにアクセスすることはできません。

一方、ポートは世界に開かれており(構成によって異なります)、ホストとポートの組み合わせを使用して他のマシンからmysqlにアクセスできます。

また、私がソケットを理解している限り、それらは単なるファイル形式のホストとポートの組み合わせにすぎません。したがって、それらのいずれかを使用することには明確な利点はありません(私の知る限り)。

個人的にはhost + portを使用することを好みますが、コードはより柔軟になり、あまり変更することなく他のマシンに移動できるためです。

古い投稿から貼り付けをコピーします。

Unixソケットは、tcpオーバーヘッドがないため、少し高速です。このパフォーマンスの低下は、サーバーの負荷の問題です。サーバーの負荷があまり高くない場合、それを認識できません。

Jails(FreeBSD)または他の仮想化技術を使用して、たとえばMySQL-ServerをWebサーバーから分離する場合、ソケットの代わりにtcp / ipセットアップを使用することがよくあります。ただし、ファイアウォールルールはアクセスを制限する必要があります。

ソケットが必須であるためにシステムの負荷が高いかどうかを確認する必要があるか、素敵なシステム設計(サービスの分離)に集中できる場合は、tcp / ipソリューションの方が良いでしょう。

長い答えを短くしてください:

はい、パフォーマンスの違いがあります。ソケットは高速です。サーバーの負荷が高くない場合は、システムの設計により適したものを選択してください。


しかし、mysqldがクライアントと同じマシン上にある場合、両方がある場合。一方を他方に使用する際に違いはありますか?一方は軽く、パフォーマンスが高く、エラーが発生しやすい、または他のものよりも何ですか?
バーク

答えを更新して、情報を追加しました。
GeekRide

そしていくつかの詳細。
GeekRide
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.