1

レポートで列のグループ化を使用している大規模なアプリケーションを実行しています。残念ながら、パフォーマンスは哀れなほど遅く、私の顧客はそれについて不平を言っています。たとえば、レポートを 24 時間実行すると、返されるまでに最大 10 分かかります (最大 800 ページのデータが表示されます)。1 か月実行すると、元に戻らない可能性があります。

24 時間のクエリ自体は、約 20 秒で返されます。時間のバランスがピボットされ、レポートが生成されます。

私にできることとして何か提案はありますか?

ありがとう!

4

2 に答える 2

0

クエリ側ではなく、レポート側でソートしていることを確認してください。これにより、処理が高速化されます。グループの並べ替えや集計値による並べ替えは、クエリよりもレポートの方がはるかに簡単で、多くの場合より効率的です。

パフォーマンスを高速化するためのこれらのヒントをご覧ください。 レポートのトラブルシューティング: レポートのパフォーマンス

于 2013-08-05T14:03:13.957 に答える
0

Reporting Services には、レポート作成の 3 つの段階があります。

  • データの取得 (クエリを実行してデータセットの結果を返す)
  • 処理 (レポートのレイアウトに従って、返されたデータをグループ化および集計します)
  • レンダリング (HTML、Excel など、選択した出力の生成)

クエリが 20 秒以内にデータを返すが、レポートのレンダリングに 10 分かかる場合、主な問題はレポート処理の速度にあります (レンダリングがパフォーマンスのボトルネックになることはめったにありません)。パフォーマンスを向上させる最善の方法は、ソース データベースで集計を行うようにクエリを書き直して、できるだけ多くの集計をソース データベースにオフロードすることです。通常、データベース プラットフォームは、Reporting Services よりもデータの集計がはるかに高速です。理想的には、レポートに必要な最小量のデータを返し、実行する処理ができるだけ少なくなるようにする必要があります。

ReportServer データベースにアクセスできる場合は、次のクエリを実行して、ボトルネックがどこにあるかを確認します。

SELECT ItemPath, Format, TimeStart, TimeEnd, TimeDataRetrieval, TimeProcessing, TimeRendering, [Status], ByteCount, [RowCount] 
FROM ExecutionLog3
WHERE ItemPath LIKE '%My Report Name%'

TimeDataRetrieval、TimeProcessing、および TimeRendering により、問題がどこにあるかが明確にわかります。問題が TimeProcessing にある場合は、クエリを書き直してレポートのデータを減らし、考えられる設計上の問題を調べて、それらのいずれかが当てはまるかどうかを確認します。

于 2013-08-06T03:36:44.947 に答える