- 定義されたユーザーのグループ内で並行性に限度を設定する
- 動的基準に基づいて、どのリクエストが実行可能でどのリクエストが実行不能かを制御する
- システムが過重負荷にならない時間にリクエストを実行するようにスケジューリングする
SQLクエリー ワークロードの管理については、<Teradata®Query Scheduler管理者ガイド、B035-2511>および<Teradata®Query Schedulerユーザー ガイド、B035-2512>を参照してください。
プロシージャに含まれるSQLリクエストは、システムで実行する他のすべてのSQLリクエストと同じルールの検査を受けます。しかし、ルールが適用されるときにプロシージャ自体はすでに起動されて実行されています。プロシージャ内のSQLリクエストは、クエリー スケジューラがルール セットへの準拠を検査できるようになる前に、データベースに送信されている必要があります。
プロシージャ内に複数のSQLリクエストがある場合、ある文はクエリー スケジューラによるルール検査に適合して、他の文は適合しないということもあります。クエリー スケジューラが定義したルールに違反する文が存在する場合、ルールに違反したことがSQL文の1つによって通知されるときに、以下に示すようにプロシージャはアボートします。
このエラーは、プロシージャ内の直前のSQLリクエストが正常に完了しなかったという意味ではありません。
SQLリクエストの1つがクエリー スケジューラ作業負荷の制限ルールによって拒否されたときの、プロシージャの実行例を、以下に示します。並行性の限度として1がパフォーマンス グループ レベルに設定されていて、プロシージャ内のSQLリクエストの1つがこのルールに違反しています。
CALL pksproc1(:k,balance1); *** Failure 3151 pksproc1:DQM Workload violation: User within Performance Group Limit: 2, For object R1, Regulation applies from 00:00 to 24:00
プロシージャの本体に条件ハンドラーを作成して、エラー3151がないかを検査してから、プロシージャの他の部分に分岐して、そのエラーが受け取られていないかどうかを調べることができます(プロシージャの条件処理の詳細について、<Teradata Vantage™ - SQLストアド プロシージャおよび埋め込みSQL、B035-1148>を参照してください)。この技法により、プロシージャが正常に完了する前に中止することを防ぐことができます。
SQLリクエストのいずれかが遅延している場合、システムはそのことをプロシージャに通知しません。その場合、プロシージャは実行可能になるまで単に休止(待機)します。