1

Asp.Net webforms ページがあります。アプリ内の複雑なページの 1 つのページに 8 つのクエリがあります。2 つのクエリをキャッシュすることができ、それらは既にキャッシュされていますが、他の 6 つのクエリは DB にアクセスする必要があります。ページは 2 秒以内に遅延なく正常に読み込まれます。ただし、パフォーマンスとともにベスト プラクティスとして、非同期にする必要があるかどうかを知りたいです。問題は、それらを非同期にする場合、現在接続オブジェクトを格納しているため、クエリごとに異なる接続を使用する必要HttpContext.Current.Itemsがあり、別のスレッドにいる場合はこれを使用できないことです。

APIを使用する必要がありTaskますか、それとも同期のみのままにしておく必要がありますか? ベストプラクティスを提案してください。

4

3 に答える 3

1

データベース アクセス時間の最適化に取り組みたい場合は、Garath と mesterak が提案したことを実装してみてください。これにより、パフォーマンスがさらに向上するはずです。

ただし、ページの読み込みが 2 秒未満であった場合、この領域での最適化を行う必要はないと言わざるを得ません。

この作業を続ける前に、次の 2 つの質問を自問してください。

  • ページの読み込みに最も大きな影響を与えているデータベース コールをどのように判断しますか?
  • ページ トレースを見たことがありますか、または最大の影響を与えているのはデータベースであると思い込んでいますか?
  • 他の要素を最適化するために何をしましたか?

以下に、他のいくつかの提案を試してみてください。

于 2013-08-02T09:01:04.127 に答える
1

私の意見では、最良の選択肢はそれらのクエリを組み合わせることです。これが完全に不可能な場合は、少なくとも SQL 接続を使用してそれらを実行してください。非同期を使用しても、おそらく共有 SQL 接続を使用するまで時間が長くなることはありませんが、それは不可能だと思います。

于 2013-08-02T04:16:34.407 に答える
0

DBへの呼び出し方法に依存すると思います。1 つの接続を確立する単純なデータベース処理クラス (静的) を作成すると、実行されるすべてのクエリで同じ接続オブジェクトを再利用できます。非同期呼び出しは、それらを並行して実行していることを意味します。これにより、ユーザー エクスペリエンスが向上する (パフォーマンスが向上する) 可能性がありますが、DB への呼び出しの数は同じです。コード内でデータベースに対してクエリを実行する方法についてさらに詳細を提供していただければ、質問に適切に答えることができるかもしれません。

于 2013-08-02T04:30:35.750 に答える