1

私は休止状態の初心者です。

以下のリンクから、

Hibernate セッションの接続関係 1 つの hibernate セッション オブジェクトが 1 つの接続オブジェクトを保持することを理解しました。

私の疑問は、サーバーで接続プールサイズを10に設定したかどうかです。アプリケーションで同時に作業できるのは 10 人だけですか?

私が間違っている場合は修正してください。

4

2 に答える 2

2

部分的にはそうです。つまり、同時に実行できるSQLクエリは10個だけです。11のクライアントがまったく同時に同じページにアクセスしていて、時間の大部分が長時間実行されるSQLクエリに費やされている場合、11番目のクライアントは残りの10のクライアントの1つが終了するのを待たなければならない可能性があります。

ただし、これは、アプリケーションが10セッション/クライアントに制限されていることを意味するものではありません。たとえば、Webアプリケーションでは、ユーザーは通常、ページを開いたり、しばらく見て、リンクをクリックしたりします。ユーザーがページの読み取りに9秒、次のページの待機に1秒を費やした場合、その時間の10%しかありません。サーバーに費やされているため、100人のログインユーザーを処理できます。

さらに、要求の処理はSQLクエリだけではありません。データの送受信、解析、レンダリング...-これにはすべて時間がかかります。

つまり、基本的には、同時SQLクエリは10個に制限されていますが、これは、アプリケーションを使用できるユーザーが10倍または100倍増えることを意味します。

于 2012-05-23T17:16:42.613 に答える
1

それは正しい。しかし、これはユーザー数を 10 に制限するものではありません。典型的なアプリケーションでは、ユーザーがリンクをクリックすると、数ミリ秒 (ページをロードする時間) の間接続が使用され、その後、ページを数秒または数分間表示します。

したがって、アイドル時間とビジー時間の比率が平均で 100 である場合、1000 人のユーザーがプール内の 10 個の接続を共有すると予想でき、すべて問題ないはずです (これはもちろん概算であり、時間はかかりません)。バースト、長いタスクなどを考慮しますが、アイデアは得られます)。

要約すると、接続はトランザクション中にのみユーザーによって使用され、トランザクションは非常に短くする必要があります (できるだけ短くする必要があります)。これにより、多数の同時ユーザーが可能になります。

于 2012-05-23T17:17:31.177 に答える