Apexで開発をしていると意図せずガバナ制限にかかってしまうことがあるのですが、なーんかガバナ制限って自分の中でぼんやりしていた時期があったんですね。
そんな時に実際にガバナ制限エラーを起こして確認したことがありましたので、その時に話。
目次
「Apex CPU time limit exceeded」を起こす
まずは、処理に時間がかかりすぎて発生する「Apex CPU time limit exceede」を意図的に起こしてみます。
とにかく処理に時間をかけてガバナ制限に設定されている時間を超過すればよいので、以下のような無限ループを処理内に設置すればOKです。
Integer i = 0;
While(True){
i = i + 1;
}
ちなみにCPU時間の制限は下表の通りです。
説明 | 同期処理 | 非同期処理 |
---|---|---|
Salesforce サーバの最大 CPU 時間 | 10,000 ミリ秒 | 60,000 ミリ秒 |
【ガバナ制限】CPU時間の制限とは?【Salesforce】
Apexでいろいろ機能を追加しているうちに、いつの間にか処理が重くなりすぎて「Apex CPU time limit exceeded」エラーが出てしまった、、、 なんてことよくあります。 …
「Too many SOQL queries」を起こす
続いて、発行される SOQL クエリの合計数が上限を超えることで発生する「Too many SOQL queries」を起こしていきます。
SOQL クエリの合計数の上限はこんな感じ↓
説明 | 同期処理 | 非同期処理 |
---|---|---|
発行される SOQL クエリの合計数 | 100 | 200 |
同期処理では一度の処理で100回までSOQLを発行できるので、どんなクエリでもいいので101回発行すればエラーになりますね。
for(Integer i = 0; i < 101; i++){
List<Account> accLists = [Select Id From Account];
}
まとめ
やはり実際に自分で確認してみるのがいいですね。
理解しやすいし頭に残りやすい!
コメント