
Contents
はじめに
Salesforceで大規模データを効率よく処理するには、バッチApexが欠かせません。その中でよく出てくる「execute()メソッドが実行されるたびにガバナ制限がリセットされる」という仕組みについて、わかりやすく解説します。
ガバナ制限とは?
Salesforceでは、1回のトランザクションで使用できるリソース(SOQLクエリの回数やDML操作の回数など)に制限があります。これを「ガバナ制限」と呼び、システムの安定性を保つために設定されています。
バッチ処理の仕組み
バッチApexでは、処理対象のデータを「スコープ」と呼ばれる小さな単位に分割し、1つのスコープごとにexecute()メソッドを繰り返し実行します。
具体例:1000件のデータを処理する場合
• データサイズ: 1000件
• バッチサイズ: 200件
• execute()メソッドの呼び出し回数: 5回
各スコープごとにexecute()メソッドが実行され、トランザクションごとにガバナ制限がリセットされます。
呼び出し回数 | 処理するスコープ | ガバナ制限のリセット |
1回目 | 1~200件 | リセットされて実行 |
2回目 | 201~400件 | 再リセットされて実行 |
3回目 | 401~600件 | 同上 |
4回目 | 601~800件 | 同上 |
5回目 | 801~1000件 | 同上 |
ガバナ制限の例
execute()メソッドごとに適用される制限は以下の通りです。
• SOQLクエリ: 最大100回
• DML操作: 最大150回
なぜガバナ制限がリセットされるのか?
バッチ処理は大規模なデータを効率的に処理するために設計されています。そのため、各スコープを独立したトランザクションとして扱い、制限をリセットすることで、より多くのデータを安全に処理できるようになっています。
まとめ
バッチ処理の「execute()メソッドが実行されるたびにガバナ制限がリセットされる」という仕組みは、Salesforceのデータ処理を効率化する重要なポイントです。この特性を理解し、適切にバッチApexを活用することで、大量データの処理がスムーズになります!