課題背景
ネクストエンジンAPIでのウォームアップ(コールドスタート対策)は、「本番と同じクエリ(検索条件)を事前に実行することで、データベース側で実行計画やキャッシュを温めておくこと」を目的としています。
しかし、これまでは本番クエリとウォームアップクエリの検索パラメータに以下の乖離があり、実行計画がキャッシュされず、本番実行時にコールドスタート(処理遅延やタイムアウト)が再発するリスクがありました。
現状の乖離
- 日付の指定範囲: 本番は
gte と lte を指定しているが、ウォームアップは gte のみ。
- フィルタパラメータ: 自己都合キャンセル伝票などの不要なデータがAPIクエリレベルで考慮されておらず、GASのメモリ上でしかフィルタリングされていなかった。
対応内容
- APIパラメータレベルでのフィルタリング追加
- 本番の伝票取得APIリクエスト(
searchCompletedSlips)に、パラメータ 'receive_order_cancel_type_id-in': '0,3'(0: 有効な受注, 3: 統合によるキャンセル)を追加しました。これにより、自己都合キャンセルなどの不要な伝票がDBスキャンの段階で除外され、取得データ量が削減されます。
- ウォームアップクエリの完全同期
- ウォームアップ関数(
warmupAndScheduleMain)で送信するパラメータを、本番クエリと完全に一致(同一の fields リスト、日付の終了日 lte、キャンセル区分フィルタ cancel_type_id-in)させました。ウォームアップ側は limit: '1' のみを変数として保持します。
- テスト関数の追加
test_api.gs に、新しくなったウォームアップクエリを動作テストするための関数 runWarmupTest() を実装しました。
変更対象ファイル
03_api.ネクストエンジンAPI.gs
06_main.実行処理.gs
test_api.gs
課題背景
ネクストエンジンAPIでのウォームアップ(コールドスタート対策)は、「本番と同じクエリ(検索条件)を事前に実行することで、データベース側で実行計画やキャッシュを温めておくこと」を目的としています。
しかし、これまでは本番クエリとウォームアップクエリの検索パラメータに以下の乖離があり、実行計画がキャッシュされず、本番実行時にコールドスタート(処理遅延やタイムアウト)が再発するリスクがありました。
現状の乖離
gteとlteを指定しているが、ウォームアップはgteのみ。対応内容
searchCompletedSlips)に、パラメータ'receive_order_cancel_type_id-in': '0,3'(0: 有効な受注, 3: 統合によるキャンセル)を追加しました。これにより、自己都合キャンセルなどの不要な伝票がDBスキャンの段階で除外され、取得データ量が削減されます。warmupAndScheduleMain)で送信するパラメータを、本番クエリと完全に一致(同一のfieldsリスト、日付の終了日lte、キャンセル区分フィルタcancel_type_id-in)させました。ウォームアップ側はlimit: '1'のみを変数として保持します。test_api.gsに、新しくなったウォームアップクエリを動作テストするための関数runWarmupTest()を実装しました。変更対象ファイル
03_api.ネクストエンジンAPI.gs06_main.実行処理.gstest_api.gs