SQL Serverには、Webアプリごとにデータベースがあります。レポートの場合、Reporting Servicesを使用し、すべてのレポートデータ(レポートパラメーターを含む)はストアドプロシージャから取得されます。
ストアドプロシージャは、レポートのデータと同じデータベースにあります。したがって、たとえば、Stockレポートを提供するprocはStockデータベースにあります。一部のレポートには複数のデータベースからの情報が表示され、プロシージャはそれらのソースデータベースの1つにあります。レポートパラメータは、店舗、従業員などのデータを含むエンタープライズデータベースのプロシージャからデータを取得します。
つまり、すべてのレポートには、少なくともエンタープライズデータベースへの接続と別のデータベースへの接続があり、場合によってはそれ以上の接続があります。
私の質問は次のとおりです。レポートプロシージャを別の「レポート」データベースに移動することには利点がありますか。レポートを別のサーバーに移動することの利点はわかっていますが、それについては話していません。これは同じサーバー上で行われることになります。
これに影響する可能性があるものは次のとおりです。
ご意見をお聞かせください。
答えは次のとおりです。そうです。そうすることにはメリットがあります。運用データベースに関するレポートは、多くのリソースを使用し、運用システムのパフォーマンスを妨害します。データベースのパフォーマンスは機械的な制約(ディスクヘッドが前後に移動すること、および適切なセクターがヘッドの下に現れるのを待つときの回転待ち時間)の影響を受けることに注意してください。レポート戦略には2つの広範なオプションがあります。
実行しているSPの種類に大きく依存すると思います。それらが重く、データベースサーバーで実行している他のことに影響を与える可能性がある場合は、それらを移動します。それ以外の場合は、保守と追跡がはるかに容易であることがわかった場合は、実際にレポートしているデータベースの近くに保管します。レポートを実際のデータベースの近くに置くだけでもパフォーマンスに影響を与える可能性がありますが、標準の設定で大量に移動しない場合私が推測する小さな違いになるデータの。
this の記事も参考になりました。
いくつかの理由で、ストアドプロシージャを別のデータベースに移動しないことをお勧めします。開発の観点からは、変更を加えるたびに2つのデータベースを複製する必要があります。結果として、「データ」データベースのスキーマと2番目のデータベースのストアドプロシージャを本番バージョンと同期する方法を説明します。災害復旧とバックアップ/復元に関しては、システムを稼働させるためだけに、2つのデータベースの復元に注意する必要があります。
テスト時には複雑さも加わります。権限、バージョンなどに関して、より多くの障害点があります。データベースでさまざまなイニシアチブに取り組んでいる人が2人以上いる場合、調整に費やす時間を増やすことができます。午前3時を想像してみてください。システムがダウンしていて、すべてのデータベースのアクセス許可を調べ、開発中に間違ったデータベースに関数やプロシージャを残していないことを確認する必要があります。
2つのデータベースを使用することをお勧めします。
「ライブ」データベースからレポートを取得すると、パフォーマンスの問題が発生します。
また、レポートデータベースは主に検索用であるため、パフォーマンスを向上させるためにここでインデックスをカスタマイズできます。 (ライブデータベースには、特定のインデックスによって悪影響を受ける挿入が含まれます)
別のアプローチは、レポートテーブルを個別のスキームと個別のファイルグループに移動することです。レポートファイルグループ内のファイルは、データハードディスクから移動できます。これにより、管理、将来の開発、アクセス管理がはるかに簡単になります。