-1

私はレポートを作成しています。結果は複数の #temp テーブルの組み合わせです。構造は以下の通り

  1. 50 万行を提供する一時テーブルを持つストアド プロシージャ 1

  2. 10 万行の一時テーブルを持つストアド プロシージャ 2

最後に、2 SP を超える結果セットを結合し、再び一時テーブルを使用して、レポート用の最終結果セットを 1 つ作成する必要があります。今、私はパフォーマンスについて心配しています。後でデータが増加した場合、temp db に影響しますか。通常、データは毎月ステージングされます。1 か月で、データベースには約 100 万行が含まれる場合があります。temp db が対応する最大容量はどのくらいですか。上記のアプローチで効果がありますか。

4

2 に答える 2

1

まず、行の数ではなく、行のサイズです。したがって、1 行あたり 7KB の場合、60 万行の場合、およそ 4 GB になります。これで終わりではありません。SQL Server は、TempDb を使用して内部オブジェクト、バージョン オブジェクト、ユーザー オブジェクトを格納します。これらには中間結果も含まれます。この場合、サイズが 4 GB を超えると予想できます。これを克服するには、次の 2 つの方法があります。

  1. クエリを調整し、一時テーブル、テーブル変数、CTE、VARCHAR(MAX) やカーソルなどの大きなオブジェクトの使用を最小限に抑えます。
  2. Tempdb ファイルのサイズを増やします。観察に基づいて最大サイズを計算します [インデックスの再構築が最善の策です]

現実世界のシーンでは、クエリ自体を改善する機会が常にあります。テーブルを正しく結合するか、ビューを使用することで、tempdb の使用を回避できるかどうかを確認します。

于 2015-06-18T04:22:12.090 に答える
0

のサイズは、tempdb格納されているディスクのサイズによってのみ制限されます。(または、データベースのプロパティで制限できます。)

100万行も。今日では、「少し」でも多くはありません。特に、レポートのデータについて話す場合。

しかし、その一時テーブルが本当に必要かどうかを確認しました。それらを取り除く (不要な場合) と、クエリを高速化し、tempdb使用量を減らすことができます。

于 2015-06-11T05:02:56.423 に答える