[salesforce]ガバナ制限
Salesforceにはガバナ制限と言われる制約条件があります。Salesforceはマルチテナントでたくさんのユーザがサーバのリソースを共有しているので、自分の組織だけでそのリソースを食いつぶさないように多くの制約があります。ガバナ制限についてどこに書かれているかいつも忘れてしまうので、自分メモもかねて書いておきます。
http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm#StartTopic=Content/apex_gov_limits.htm
これはAPEXリファレンス内のガバナ制限の記載ページです。他にも見るページあるのかもしれませんが、僕はいつもここを見てます。ちょくちょく数字が変わっているのでローカルに落としたりせずに常にここを見るのがおすすめです。
英語でいつも迷うので、自分メモをかねて現時点のガバナ制限表を日本語にしておきます。それぞれの値に補足事項もあったり情報が古くなる可能性があるので、正確な情報はリファレンスの方をみてください。
制約対象 | トリガの場合 | 匿名ブロック、Visualforceコントローラ、WSDLメソッドの場合 | Testコードの場合 |
SOQLクエリの発行可能総数 | 20 | 100 | 100 |
SOQLクエリで取得可能な総レコード数 | 1000 | 10000 | 500 |
SOSLクエリの発行総数 | 0 | 20 | 20 |
1SOSLクエリで取得可能な総レコード数 | 0 | 200 | 200 |
DMLステートメントの発酵可能総数 | 20 | 100 | 100 |
DMLステートメントで処理可能なレコード総数 | 100 | 10000 | 500 |
実行可能なAPEXクラスの総数? 詳細不明 |
10,000 | 200,000 | 20,000 |
総ヒープ領域(確認方法不明) | 200,000バイト | 2,000,000バイト | 500,000バイト |
トリガで再帰的に実行されるAPEXの深度 | 16 | 16 | 16 |
一つの文字列における文字数 | 100,000 | 100,000 | 500,000 |
Forループの繰り返し数? | n/a | 200 | n/a |
1List配列の格納できる要素数 | 1,000 | 1,000 | 1,000 |
1Set配列の格納できる要素数 | 1,000 | 1,000 | 1,000 |
1Map配列の格納できる要素数 | 1,000 | 1,000 | 1,000 |
トランザクションのSavepoint の総設置可能数 | 5 | 5 | 5 |
トランザクションのrollbackメソッドの実行可能数 | 20 | 20 | 20 |
Web serviceメソッドの実行可能数 | 10 | 10 | 10 |
1トランザクションにおけるcallouts 可能数。(HTTPリクエストかWebサービスコール) | 10 | 10 | 10 |
HTTPリクエストかWebサービスコールの1コールアウトにおけるタイムアウト時間 | 60秒 | 60秒 | 60秒 |
HTTPリクエストかWebサービスコールの1トランザクション内における総リクエスト可能時間 | 120秒 | 120秒 | 120秒 |
1APEXスクリプトにおける@futureアノテーションのメソッド数 | 10 | 10 | 10 |
WSDL の最大サイズ | 1MB | 1MB | 1MB |
SOAPレスポンスの最大サイズ | 1MB | 1MB | 1MB |
runAs メソッドの実行可能数 | 20 | 20 | 20 |
sendEmail メソッドの実行可能数 | 10 | 10 | 10 |
ChildRelationship, RecordTypeInfo and PicklistEntryの数(詳細不明) | 10 | 10 | 10 |
fields コールの実行可能数 | 10 | 10 | 10 |
findSimilar メソッドが返せるアイテム数 | 5 | 5 | 5 |
findSimilar メソッドの実行可能数 | 10 | 10 | 10 |
その他、以下の制限もあり。
# APEXクラス内の文字数: 100,000文字まで。
# APEXトリガ内の文字数: 32,000文字まで。
# 1組織内における全APEXスクリプトの総容量: 1 MBまで。