{{i18n("button.posting")}}
データローダ:「Too many SOQL queries」のエラーが出たら、バッチサイズを落とす
データローダのエラー対応です。Salesforceで忘れてはいけないガバナ制限のお話です。
Admin
{{getTime(record.UpdatedTime)}}
※こちらは過去に公開していたブログ記事を修正、加筆したものです。
夏も終わりですが、データローダにまつわる怖い話をお送りしようと思います。
UPDATEしたら、エラーでどんどん弾かれた
あまり慣れていない Salesforce組織で、データローダを使って1万件ほどのレコードを更新しようとしました。
CSVや入力規則などの設定を確認し、問題なさそうだと思ったのです。
そして、いざ、「Finish」をクリックしたら、「error」の数が目の前で増えていき、処理が終わったときは半分以上がエラーに!なぜ?
慌ててエラーログを確認したところ、
Error: System.Exception: Too many SOQL queries
のメッセージ。
焦っていた私は近くにいた Developerの方に尋ねました。
彼は、「バッチサイズを 1 にしてみてください」と彼は答えました。
半信半疑でデータローダの「setting」でバッチサイズを 1 に変更して、エラーになった分に再挑戦!
バッチサイズ、200だったのを 1にしました!
すると、エラーが起こらず、ゆっくりと着実にデータが更新されていきます。
「自動化か何かの設定が走って、ガバナ制限とかに引っかかったかもしれないですね」と、彼は言いました。
そう、Salesforceのようなマルチテナント環境では忘れてはいけないガバナ制限。
自分だけがサーバリソースを使っていいわけはないんです。他のユーザと共有するために、あんまり大量の処理をすると制限がかかってしまうんですね。
そしてその Salesforce組織は、たくさんのプロセスビルダー、ワークフローが有効化されていて、ひとつの項目を更新すると、それはもうたくさんの処理が実行されるような状態でした。
……忘れてた。忘れてましたよ、すっかり。
教訓
・自動化を張り巡らせている組織では、大量のレコードの更新でエラーになる可能性がある。
・もし「Error: System.Exception: Too many SOQL queries」のエラーになったら、慌てずにバッチサイズを落としてみる。
バッチサイズは調整してね!
「多分ガバナ制限ですかね~」
と少しほっとしていたところ、別の Developer に
「でもそのペースだと、全部終わるのに 3時間位かかるよ」と言われ、慌ててバッチサイズを調整したのはいい思い出です。
根本解決には至っていませんが、とりあえずレコードは更新できました。
関連記事
すべて会員限定記事となっております。会員登録(無料)いただくと閲覧いただけます。
データの一括更新 ① データを一括で登録するには
データの一括更新 ② データインポートウィザードとは
データの一括更新 ③ データローダとは
データの一括更新 ④ データローダをインストールする (Windows編)
データの一括更新 ⑤ データローダをインストールする (Mac編)
データの一括更新 ⑥ データローダを使用してデータを一括登録する
データの一括更新 ⑦ 最新のデータローダに更新する
データの一括更新 ⑧ データローダをアンインストールする (Windows編)
データの一括更新 ⑨ データローダをアンインストールする (Mac編)
{{i18n("articles.view.premium")}}
{{cta.Content}}
{{cta.ButtonName}}
{{tag}}