1

接続されたクライアントにデータを表示するために、MySQL データベースから情報を取得する必要がある Java サーバー アプリケーションを実行しています。ただし、一度に多数のクライアントが接続されるため、短時間で多くのクエリを実行する必要があります。

この結果、大きな遅延/遅延が発生し、クエリが完了するまでスレッドがデッドロックして一時停止します...

データを同期させる必要があるため、データベースを非同期にする以外に、データベースを待機している間にスレッドがロックアップするのを防ぐために使用できる方法はありますか?

接続プールなどを見てきましたが、サーバー アプリケーションの残りの部分を遅延させずに、同期してデータベースからデータをフェッチする方法が必要です。

ユーザーが x を押すと、ユーザーがx押す代わりに y が発生し、プログラムがロックして 2 秒間一時停止し、クエリが完了するとyが発生します。

4

3 に答える 3

2

接続プーリングは間違いなく進むべき道です。

GlassFish などの Web アプリケーションを使用している場合は、データベース (MySQL など) への接続プールを作成し、JNDI ネーミング サービスを使用してそのプールにアクセスすることで実行できます。この組み合わせにより、データベース アクセスをより効率的に使用できます。

この記事はその点で優れています。

于 2013-09-15T11:01:05.290 に答える
1

(最適化された)接続プーリングを使用する以外に、他の解決策は考えられません。ここをクリックして、接続プールを最適化する方法を調べることができます

于 2013-09-15T10:59:15.117 に答える
0

また、データベースが巨大であるため、すべてのクエリに適切なインデックスがあること、MySQL がそれらを使用していること、ライターがリーダーよりも優先されていることを確認してください。

于 2013-09-15T11:27:03.827 に答える