概要
総括
ADatum Corporationはマイアミとモントリオールにオフィスを構えています。
ネットワークには、adatum.comという名前の単一のActive Directoryフォレストが含まれています。オフィスは、5ミリ秒の待ち時間を持つWANリンクを使用して互いに接続します。 A:DatumはSQL Serverを使用してデータベースプラットフォームを標準化しています
2014エンタープライズ版。
データベース
各オフィスには、Sales、Inventory、Customers、Products、Personnel、およびDevという名前のデータベースが含まれています。
サーバーとデータベースは、データベース管理者のチームによって管理されています。現在、すべてのデータベース管理者は、すべてのサーバーとすべてのデータベースに対して同じレベルの権限を持っています。
Customersデータベースには、CustomersとClassificationsという名前の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のパフォーマンスを低下させているとあなたは疑っています。ユーザアプリケーションによってアクセスされるすべてのストアドプロシージャは、ネストされたストアドプロシージャを呼び出します。
入れ子になったストアドプロシージャは直接呼び出されることはありません。
設計要件
データ復旧
ストレージ障害が発生した場合は、インベントリデータベースからデータを回復できる必要があります。目標復旧時間(RTO)は5分です。
データが誤って失われた場合は、Devデータベースからデータを回復できなければなりません。 1日の目標復旧時点(RPO)があります。
分類の変更
顧客の分類方法を変更する予定です。新しい分類には、注文数に基づいて4つのレベルがあります。分類は将来削除または追加される可能性があります。経営陣は過去の分類について過去のデータを維持することを要求している。セキュリティジュニアデータベース管理者のグループは、Salesデータベースのセキュリティを管理できなければなりません。ジュニアデータベース管理者は他の管理権限を持ちません。 A:Datumは、どのユーザーが各ストアドプロシージャを実行しているのかを追跡したいと考えています。
ストレージ
ADatumのストレージは限られています。可能であれば、すべてのデータベースとすべてのバックアップについて、すべての記憶域を最小限に抑える必要があります。
エラー処理
現在、どのストアドプロシージャにもエラー処理コードはありません。
呼び出されたストアドプロシージャとネストされたストアドプロシージャにエラーを記録することを計画しています。入れ子になったストアドプロシージャが直接呼び出されることはありません。
USP_1の実行にかかる時間を最小限に抑えるための解決策を提案する必要があります。 Table1を置き換えることをお勧めしますか。