バッチ処理とガバナ制限の仕組みを理解しよう

はじめに

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を活用することで、大量データの処理がスムーズになります!

おすすめの記事