6

JDBC の TCP/IP オーバーヘッドを回避するために、Java を使用して MySql への Unix ソケット接続を作成することは可能ですか?

これを可能にするライブラリ(またはおそらくいくつかのライブラリ)を知っている人はいますか?

4

4 に答える 4

1

また、mySQL JDBCドライバーは長期間にわたって洗練されており、メタデータのキャッシュなど、いくつかの最適化の調整が加えられています。JDBC開発者がドライバーに多くのTCP/IPオーバーヘッドを残していたことに驚かれることでしょう。

JNIをCベースの実装に移行すると、TCP / IPオーバーヘッドの削減から得られるよりも、ネイティブコードへのジャンプにかかるコストが高くなる可能性があります。

TCP / IPのオーバーヘッドを本当に削減したい場合は、sqlite、derby、hypersonicなどの組み込みデータベースの使用を検討してください。

于 2010-09-22T17:03:05.170 に答える
1

JDBC は単なるインターフェース仕様です。TCP/IP オーバーヘッドは追加されません。オーバーヘッドがある場合は、JDBC ドライバーが原因です。また、メモリ内データベースまたはファイル データベース用の JDBC ドライバーもあり、TCP/IP をまったく使用しません。

MYSQL JDBC ドライバーは、JDBC Type 4 ドライバーです。つまり、ネイティブ コードを使用してデータベースにアクセスすることはありません。Java に UNIX ソケットにアクセスする方法がない場合、ドライバもそれらを使用できません。[1]

本当に UNIX ソケットを使用したい場合は、UNIX ソケットをサポートしていると思われる MySQL の ODBC ドライバーを使用し、JDBC-ODBC ブリッジを使用して Java からアクセスすることができます。

于 2010-09-22T17:39:42.060 に答える
0

いつでも C ライブラリを取得して、自分でラップできます。UNIXソケットをサポートしていると思います。

TCP/IP オーバーヘッドが問題であるとどのように判断したかお伺いしてもよろしいですか? どのようにして問題 (あなたが抱えていると思います) をそれに絞り込んだのですか?

問題は、パケットのオーバーヘッドではなく、接続のオーバーヘッドだけですか? 接続の確立に時間がかかりすぎる場合は、接続プーリング ライブラリ (Apache commons のものなど) がそれを処理します。

于 2010-09-22T16:54:01.590 に答える