この質問は別の質問に関連しています:
複数のファイル グループを使用すると、データベースの速度が向上しますか?
私たちが開発しているソフトウェアは、MS SQL Server 2005 を使用してリレーショナル データを格納する分析ツールです。最初の分析は遅くなる可能性がありますが (数百万行または数十億行のデータを処理しているため)、以前の分析をすばやく呼び出すにはパフォーマンス要件があるため、各分析の結果を「保存」します。
私たちの現在のアプローチは、分析結果を一連の「実行固有の」テーブルに保存することです。分析は非常に複雑であるため、分析ごとに 100 ものテーブルが作成される可能性があります。通常、これらのテーブルは分析ごとに数百 MB を使用します (数百 GB、場合によっては数 TB のソース データと比較すると小さい)。しかし、全体として、ディスク容量は私たちにとって問題ではありません。テーブルの各セットは 1 つの分析に固有であり、多くの場合、これによりソース データを参照するよりもパフォーマンスが大幅に向上します。
保存された分析結果が十分に蓄積されると、このアプローチは崩壊し始めます。より堅牢なアーカイブ/クリーンアップ機能を追加する前に、テスト データベースは数百万のテーブルに増加しました。しかし、本番環境であっても、100,000 を超えるテーブルを持つことは簡単なことではありません。Microsoft は sysobjects のサイズに非常に大きな理論的制限 (~20 億) を設定していますが、データベースが 100,000 程度を超えると、CREATE TABLE や DROP TABLE などの単純なクエリは劇的に遅くなる可能性があります。
私たちのアプローチについて議論する余地はありますが、より多くのコンテキストがないとそれを行うのは難しいと思うので、代わりに、より一般的な質問をしたいと思います: 非常に多くのテーブルを作成する必要がある場合、管理するための最良のアプローチは何ですか?彼ら?複数のファイル グループ? 複数のスキーマ/所有者? 複数のデータベース?
別のメモ: 「問題にハードウェアを投入する」(つまり、RAM、CPU パワー、ディスク速度を追加する) という考えには、私は興奮しません。ただし、特に (たとえば) 誰かが、RAM の追加や複数のファイル グループの使用が大規模なシステム カタログの管理にどのような影響を与えるかを明確に教えてくれる場合は、その可能性を排除しません。