概要
総括
ADATUM Corporationは、マイアミとモントリオールにオフィスを構えています。
ネットワークには、adatum.comという名前の単一のActive Directoryフォレストが含まれています。オフィスは、5ミリ秒の待ち時間を持つWANリンクを使用してお互いに接続します。 Datumは、SQL Server 2014 Enterprise Editionを使用してデータベースプラットフォームを標準化しています。
データベース
各オフィスには、Sales、Inventory、Customers、Products、Personnel、およびDevという名前のデータベースが含まれています。
サーバーとデータベースは、データベース管理者のチームによって管理されます。現在、すべてのデータベース管理者は、すべてのサーバーとすべてのデータベースに対して同じレベルの権限を持っています。
得意先データベースには、得意先と分類という2つのテーブルが含まれています。
次の図は、テーブルの関連部分を示しています。

次の表は、Classificationsテーブルの現在のデータを示しています。

在庫データベースは頻繁に更新されます。
データベースは、しばしば報告に使用されます。
現在、データベースの完全バックアップには3時間かかります。
ストアドプロシージャ
USP_1という名前のストアドプロシージャは、複数のレポートに対して何百万ものデータ行を生成します。 USP_1は、SalesデータベースとCustomersデータベースの5つの異なるテーブルのデータをTable1という名前のテーブルに結合します。
Table1が作成された後、レポート作成プロセスはTable1から順にデータを数回読み取ります。プロセスが完了すると、Table1が削除されます。
USP_2という名前のストアド・プロシージャは、プロダクト・リストを生成するために使用されます。製品リストには、カテゴリ別にグループ化された製品の名前が含まれています。
USP_2は、プロシージャがアクセスするテーブルのロックのために実行に数分かかります。ロックはUSP_1とUSP_3によって引き起こされます。
価格を更新するには、USP_3という名前のストアドプロシージャを使用します。 USP_3は、トランザクション内から順番に呼び出されるいくつかのUPDATE文で構成されています。
現在、UPDATEステートメントの1つが失敗すると、ストアード・プロシージャーは失敗します。 USP_4という名前のストアドプロシージャは、Sales、Customers、およびInventoryデータベースのストアドプロシージャを呼び出します。
ネストされたストアドプロシージャは、Sales、Customers、およびInventoryデータベースのテーブルを読み込みます。 USP_4はEXECUTE AS句を使用します。
すべてのネストされたストアドプロシージャは、構造化例外処理を使用してエラーを処理します。 USP_5という名前のストアドプロシージャは、同じデータベース内の複数のストアドプロシージャを呼び出します。セキュリティチェックは、USP_5がストアドプロシージャを呼び出すたびに実行されます。
セキュリティチェックによってUSP_5のパフォーマンスが低下していると思われます。ユーザーアプリケーションによってアクセスされるすべてのストアドプロシージャは、ネストされたストアドプロシージャを呼び出します。
ネストされたストアドプロシージャは決して直接呼び出されません。
設計要件
データ復旧
ストレージに障害が発生した場合、インベントリデータベースからデータを復旧できなければなりません。 Recovery Time Objective(RTO)が5分です。
誤ってデータが失われた場合、Devデータベースからデータを復元することができなければなりません。あなたは、1日の回復ポイント目標(RPO)を持っています。
分類の変更
顧客の分類方法を変更する予定です。新しい分類には、注文数に基づいて4つのレベルがあります。分類は今後削除または追加される可能性があります。管理者は、以前の分類の履歴データを維持するよう要求します。セキュリティジュニアデータベース管理者のグループは、Salesデータベースのセキュリティを管理できる必要があります。ジュニアデータベース管理者には、他の管理者権限はありません。 Datumは、どのユーザーが各ストアドプロシージャを実行しているかをトラッキングする必要があります。
ストレージ
ADatumにはストレージが限られています。可能な限り、すべてのデータベースとすべてのバックアップについて、すべてのストレージスペースを最小限に抑える必要があります。
エラー処理
現時点では、ストアドプロシージャにエラー処理コードはありません。
ストアド・プロシージャおよびネストされたストアド・プロシージャにエラーを記録することを計画しています。ネストされたストアドプロシージャは決して直接呼び出されません。
USP_1を実行するのにかかる時間を最小限に抑えるためのソリューションを推奨する必要があります。 Table1の代わりに何をお勧めしますか?