問題
Batchableインターフェースを実装しているApexクラスのexecute()メソッドの内部でApexコードが実行される場合、ガバナ制限に関して正しい記述を2つ選びなさい。
- Apexのガバナ制限は、execute()メソッドの繰り返しごとにリセットされます。
- トランザクションが非同期であるため、Apexガバナの制限を超えることはありません。
- トランザクションが非同期であるため、Apexガバナの制限値が高くなる可能性があります。
- Apexクラスのコンストラクタを呼び出している間、Apexガバナ制限は緩和されます。
正解
- Apexのガバナ制限は、execute()メソッドの繰り返しごとにリセットされます。
- トランザクションが非同期であるため、Apexガバナの制限を超えることはありません。
- トランザクションが非同期であるため、Apexガバナの制限値が高くなる可能性があります。
- Apexクラスのコンストラクタを呼び出している間、Apexガバナ制限は緩和されます。
解説
それぞれの選択肢の理由について説明します。
□ Apexのガバナ制限は、execute()メソッドの繰り返しごとにリセットされます。
これは正解です。Batchableインターフェースのexecute()メソッドは、各バッチの処理ごとに新しいトランザクションとして実行されるため、ガバナ制限は各バッチの処理ごとにリセットされます。
□ トランザクションが非同期であるため、Apexガバナの制限を超えることはありません。
これは不正解です。トランザクションが非同期であるからといって、Apexガバナの制限を超えないわけではありません。非同期処理でもガバナ制限は適用され、その制限を超えるとエラーが発生します。
□ トランザクションが非同期であるため、Apexガバナの制限値が高くなる可能性があります。
これは正解です。非同期処理、特にBatch ApexやFutureメソッドなどでは、同期処理と比べてガバナ制限が緩和される場合があります。
□ Apexクラスのコンストラクタを呼び出している間、Apexガバナ制限は緩和されます。
これは不正解です。コンストラクタの呼び出し時にApexガバナ制限が緩和されるわけではありません。コンストラクタは通常のApexコードと同じガバナ制限の下で実行されます。
コメント