Memos About Salesforce

Salesforceにハマってたこと!

Salesforce 実行ガバナと制限

こんにちは、管理人の@Salesforce.Zです。

今日は実行ガバナと制限をメモします。書くと覚えがいいからです。

読んだら得ること

★ 実行ガバナと制限

目次

トランザクション単位の Apex 制限

説明 同期制限 非同期制限
発行される SOQL クエリの合計数 100 200
SOQL クエリによって取得されるレコードの合計数50,000
Database.getQueryLocator によって取得されるレコードの合計数 10,000
発行される SOSL クエリの合計数 20
1 つの SOSL クエリによって取得されるレコードの合計数 2,000
発行される DML ステートメントの合計数 150
DML ステートメントの結果として処理されるレコードの合計数、Approval.process、または database.emptyRecycleBin 10,000
insert、update、または delete ステートメントによって繰り返しトリガする Apex 呼び出しのスタックの深さの合計数 16
トランザクション内のコールアウト (HTTP 要求または Web サービスコール) の合計数 100
トランザクション内のすべてのコールアウト (HTTP 要求または Web サービスコール) のタイムアウトの最大累積値 120 秒
Apex 呼び出し 1 回につき許可される future アノテーションを持つメソッドの最大数 50
System.enqueueJob によってキューに追加される Apex ジョブの最大数 50
許可される sendEmail メソッドの合計数 10
ヒープの合計サイズ 6 MB 12 MB
Salesforce サーバの最大 CPU 時間5 10,000 ミリ秒 60,000 ミリ秒
Apex トランザクションごとの最大実行時間 10 分
Apex トランザクションごとに許容される転送通知メソッドコールの最大数 10
各転送通知メソッドコールで送信できる転送通知の最大数 2,000
  • 親-子リレーションのサブクエリを使用する SOQL クエリでは、各親-子リレーションは追加クエリとしてカウントされます、これらのクエリタイプは、最上位クエリ数の 3 倍に制限されています。

  • サブクエリの制限は、Limits.getLimitAggregateQueries() が返す値に対応します。これらのリレーションクエリの行数は、全体のコード実行の行数に加算されます。この制限はカスタムメタデータ型には適用されません。

  • 1 つの Apex トランザクション内で、カスタムメタデータレコードの SOQL クエリは無制限です。静的 SOQL ステートメントの他、次のメソッドへのコールは、要求内で発行された SOQL ステートメント数としてカウントされます。

次のメソッドへのコールは、要求内で発行された DML ステートメント数としてカウントされます

  1. Approval.process

  2. Database.convertLead

  3. Database.emptyRecycleBin

  4. Database.rollback

  5. Database.setSavePoint

  6. delete と Database.delete

  7. insert と Database.insert

  8. merge および Database.merge

  9. undelete と Database.undelete

  10. update と Database.update

  11. upsert と Database.upsert

  12. EventBus.publish

  13. System.runAs