![[新機能] Cortex Search Auto-Suspendがパブリックプレビューになったので試してみた](https://images.ctfassets.net/ct0aopd36mqt/wp-refcat-img-3610e3c1ff5961bdb7b464e17f8bf06d/90b168b240005ead852ec1d474bb74fb/snowflake-logo-1200x630-1.png?w=3840&fm=webp)
[新機能] Cortex Search Auto-Suspendがパブリックプレビューになったので試してみた
かわばたです。
2026年5月11日にCortex Search Auto-Suspendがパブリックプレビューとなりました。
「Cortex Search Serviceを常時稼働させているけど、利用頻度が低い時間帯のコストを削減したい」というニーズに応えるような機能と思いますので試していきます。
【公式ドキュメント】
Cortex Search Auto-Suspend(リリースノート)
Auto-suspend serving on inactivity
CREATE CORTEX SEARCH SERVICE
ALTER CORTEX SEARCH SERVICE
対象読者
- Cortex Search Serviceのコスト最適化に興味がある方
- Auto-Suspend機能について確認したい方
検証環境
- Snowflake Enterprise版
概要
Auto-suspend allows a Cortex Search Service to automatically suspend its serving compute after a specified period of query inactivity. The service automatically resumes when it receives the next query request.
上記のとおり、Auto-Suspendは、Cortex Search Serviceのサービングコンピュートを一定時間のクエリ非アクティブ後に自動的にサスペンドし、次のクエリを受信した際に自動的に再開(resume)される機能です。
AUTO_SUSPENDパラメータで非アクティブ時間(秒)を指定します。Auto-Suspendで削減できる主な対象はサービングコンピュートコストです。サービングコンピュートのコストは、サービスがクエリに応答可能な状態の間に発生するため、利用頻度が低いサービスではコスト削減が期待できます。
主なポイント
| 項目 | 内容 |
|---|---|
| パラメータ | AUTO_SUSPEND |
| 最小値 | 1800秒(30分) |
| デフォルト | NULL(Auto-Suspend無効) |
| サスペンド | 閾値超過後5分以内に自動サスペンド |
| 復帰 | クエリ受信時に自動復帰(数分かかる場合あり) |
| 影響範囲 | サービングのみ(インデクシングには影響なし) |
事前準備
使用するデータ
今回はシンプルなテキストデータを用意してCortex Search Serviceを作成します。
-- テスト用データベース・スキーマの準備
USE ROLE SYSADMIN;
CREATE DATABASE IF NOT EXISTS CORTEX_SEARCH_TEST_DB;
CREATE SCHEMA IF NOT EXISTS CORTEX_SEARCH_TEST_DB.AUTO_SUSPEND_TEST;
USE SCHEMA CORTEX_SEARCH_TEST_DB.AUTO_SUSPEND_TEST;
-- テスト用テーブルの作成
CREATE OR REPLACE TABLE SEARCH_SOURCE_DATA (
id INT,
title STRING,
content STRING,
category STRING
);
-- サンプルデータの挿入
INSERT INTO SEARCH_SOURCE_DATA VALUES
(1, 'Snowflakeの概要', 'Snowflakeはクラウドネイティブなデータプラットフォームです。', 'platform'),
(2, 'Cortex Searchとは', 'Cortex SearchはSnowflakeのハイブリッド検索サービスです。', 'cortex'),
(3, 'Auto-Suspend機能', 'Auto-Suspendは非アクティブ時にサービングコンピュートを自動的にサスペンドします。', 'cortex'),
(4, 'コスト最適化', 'Snowflakeではウェアハウスの自動停止でコストを最適化できます。', 'cost'),
(5, 'データ共有', 'Snowflakeのデータ共有機能でセキュアにデータを共有できます。', 'platform');
実際に試してみた
AUTO_SUSPEND付きでCortex Search Serviceを作成
AUTO_SUSPEND = 1800(30分)を指定してCortex Search Serviceを作成します。
※ 以下の例ではCOMPUTE_WHを使用していますが、環境に応じて利用可能なウェアハウス名に置き換えてください。
-- Cortex Search Serviceの作成(AUTO_SUSPEND付き)
CREATE OR REPLACE CORTEX SEARCH SERVICE AUTO_SUSPEND_TEST_SERVICE
ON content
ATTRIBUTES category
WAREHOUSE = COMPUTE_WH
TARGET_LAG = '1 hour'
AUTO_SUSPEND = 1800
AS (
SELECT
id,
title,
content,
category
FROM SEARCH_SOURCE_DATA
);

サービスの状態確認
SHOW CORTEX SEARCH SERVICESおよびDESCRIBE CORTEX SEARCH SERVICEで、SERVING_STATEとAUTO_SUSPENDの設定を確認します。
-- サービス一覧の確認
SHOW CORTEX SEARCH SERVICES;

-- サービスの詳細確認
DESCRIBE CORTEX SEARCH SERVICE AUTO_SUSPEND_TEST_SERVICE;

AUTO_SUSPENDが1800に設定されていること、SERVING_STATEがACTIVEであることを確認できます。
クエリの実行
サービスが正常に動作することを確認するため、検索クエリを実行します。
-- Cortex Search Serviceへのクエリ実行
SELECT PARSE_JSON(
SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
'CORTEX_SEARCH_TEST_DB.AUTO_SUSPEND_TEST.AUTO_SUSPEND_TEST_SERVICE',
'{
"query": "コスト最適化",
"columns": ["id", "title", "content", "category"],
"limit": 3
}'
)
)['results'] AS results;

検索結果が正常に返されることを確認しました。
サスペンド状態の確認
最後に検索クエリを実行してから、AUTO_SUSPENDで指定した非アクティブ時間(1800秒 = 30分)が経過した後、サービスが自動的にサスペンドされるか確認します。
ドキュメントによると、閾値超過後5分以内にサスペンドされます。
-- 30分以上経過後に状態を確認
SHOW CORTEX SEARCH SERVICES LIKE 'AUTO_SUSPEND_TEST_SERVICE';

SERVING_STATEがSUSPENDEDに変わっていることを確認できました。
自動復帰の確認
サスペンド状態のサービスにクエリを実行し、自動復帰を確認します。
-- サスペンド状態からクエリを実行(自動復帰)
SELECT PARSE_JSON(
SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
'CORTEX_SEARCH_TEST_DB.AUTO_SUSPEND_TEST.AUTO_SUSPEND_TEST_SERVICE',
'{
"query": "Snowflake",
"columns": ["id", "title", "content", "category"],
"limit": 3
}'
)
)['results'] AS results;

サスペンド状態からの復帰には数分かかる場合がありますが、最初のクエリは復帰完了後に結果が返されます。
なお、初回クエリの待機を避けたい場合は、利用開始前にALTER CORTEX SEARCH SERVICE <name> RESUME SERVINGを実行して、事前にサービングを再開しておくこともできます。
-- 復帰後の状態確認
SHOW CORTEX SEARCH SERVICES LIKE 'AUTO_SUSPEND_TEST_SERVICE';

ALTERでAUTO_SUSPENDを変更・無効化
既存のサービスに対してALTER文でAUTO_SUSPENDの設定を変更できます。
-- AUTO_SUSPEND時間を3600秒(1時間)に変更
ALTER CORTEX SEARCH SERVICE AUTO_SUSPEND_TEST_SERVICE SET AUTO_SUSPEND = 3600;
-- 設定変更の確認
SHOW CORTEX SEARCH SERVICES LIKE 'AUTO_SUSPEND_TEST_SERVICE';

-- AUTO_SUSPENDを無効化(NULLに設定)
ALTER CORTEX SEARCH SERVICE AUTO_SUSPEND_TEST_SERVICE SET AUTO_SUSPEND = NULL;
-- 無効化の確認
SHOW CORTEX SEARCH SERVICES LIKE 'AUTO_SUSPEND_TEST_SERVICE';

AUTO_SUSPEND = NULLに設定することで、Auto-Suspend機能を無効化できます。無効化後は、クエリ非アクティブによる自動サスペンドは行われなくなります。
なお、すでにサービングがサスペンドされている場合は、ALTER CORTEX SEARCH SERVICE <name> RESUME SERVINGで明示的に再開します。
コスト削減の観点
Auto-Suspend機能のコスト面でのメリットを整理します。
Cortex Search Serviceのサービングコンピュートコストは、サービスがクエリに応答可能な状態の間のみ発生します。Auto-Suspendを有効にすることで、クエリが来ない時間帯のサービングコンピュートコストを削減できます。
例えば、業務時間帯(9時〜18時)にのみ利用されるサービスの場合、18時以降にクエリが来なければ、最後のクエリからAUTO_SUSPENDで指定した非アクティブ時間の経過後にサスペンドされるため、夜間・早朝帯のサービングコンピュートコストの削減が期待できます。
最後に
Cortex Search ServiceのAuto-Suspend機能は、利用頻度にムラがあるサービスのコスト最適化に有効だと感じました。Snowflakeのウェアハウスの自動停止と同様の考え方で、使わない時間帯のコストを自動的に削減できるのは嬉しいポイントです。
現在はパブリックプレビューの段階ですので、今後GAに向けて仕様が変更される可能性があります。
この記事が何かの参考になれば幸いです!






