すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:完全正確 SQL モード

最終更新日:Sep 12, 2026

完全正確モードでは、リソース制限に達した際にクエリを打ち切るのではなく、実行時間を延長して処理を継続できるため、正確で完全なクエリ結果を取得できます。

制限事項

完全正確モードは、次の機能ではサポートされていません:

仕組み

完全正確モードでは、I/O や CPU などのさまざまなリソース制約を、時間ベースの単一の制限に変換します。クエリがリソース制限に達した場合、システムはクエリを終了するのではなく、持続可能なレートにスロットリングして、完了するまで、またはタイムアウトに達するまで実行を継続します。このモードでは、分離されたリソースプールにおけるタスク割り当て、ユーザーベースのキュー優先順位付け、負荷分散を使用して、リソースを効率的にスケジューリングします。

image

標準クエリは標準のコンピューティングプールで実行され、リソース制限に達すると直ちに打ち切られるため、不正確な結果につながる可能性があります。完全正確モードを有効にすると、クエリは専用のコンピューティングプールで実行され、すべてのデータが読み込まれて計算が完了するまで、システムが持続可能なレートでタスクの実行を継続します。

image

前提条件

  • 標準のLogstoreが作成されます。 詳細については、基本的な Logstore の作成をご参照ください。

  • ログが収集されていること。詳細については、「データ収集」をご参照ください。

  • インデックスが設定されていること。詳細については、「インデックスの設定」をご参照ください。

操作手順

特定の Logstore 内の個々のクエリおよび分析操作に対して、完全正確モードを有効にできます。

説明

完全正確モードの最大タイムアウトは、コンソール、API、または SDK を使用して設定できます。分析文の最大タイムアウトは 55 秒です。

コンソール

  1. Log Serviceコンソールにログインします。

  2. [プロジェクト] セクションで、管理するプロジェクトをクリックします。

  3. [ログストレージ] > [ログストア] タブで、管理するログストアをクリックします。

  4. image > [完全正確] をクリックします。

    重要

    query_max_run_time パラメータを設定して、タイムアウトを調整できます。

    たとえば、分析文が * | select count(*) as pv の場合は、文に set session query_max_run_time=10s; を追加できます。分析文全体は * | set session query_max_run_time=10s; select count(*) as pv になります。

    image

API

  • GetLogs (圧縮されていない結果を返す) - Logstore 内のログデータをクエリする

    • パラメータ:query

      たとえば、分析文は * | select count(*) as pv です。

      • 完全正確モードを有効にする:分析文に set session allow_incomplete=false; を追加します。たとえば、* | select count(*) as pv は * | set session allow_incomplete=false; select count(*) as pv になります。

      • クエリ分析のタイムアウトを設定する:分析文に set session query_max_run_time=10s; を追加します。これにより、最大実行時間が 10s に設定されます。分析文は * | set session query_max_run_time=10s; select count(*) as pv です。

      • 完全正確モードを有効にし、タイムアウトも設定する:セッションコマンドを分析文に追加します。例:* | set session allow_incomplete=false; set session query_max_run_time=10s; select count(*) as pv。

  • GetLogsV2 (圧縮された結果を返す) - Logstore 内のログデータをクエリする

    • パラメータ:query

      たとえば、分析文は * | select count(*) as pv です。

      • 完全正確モードを有効にする:分析文に set session allow_incomplete=false; を追加します。たとえば、* | select count(*) as pv は * | set session allow_incomplete=false; select count(*) as pv になります。

      • クエリ分析のタイムアウトを設定する:分析文に set session query_max_run_time=10s; を追加します。これにより、最大実行時間が 10s に設定されます。分析文は * | set session query_max_run_time=10s; select count(*) as pv です。

      • 完全正確モードを有効にし、タイムアウトも設定する:セッションコマンドを分析文に追加します。例:* | set session allow_incomplete=false; set session query_max_run_time=10s; select count(*) as pv。

SDK

このセクションでは、例として Simple Log Service SDK for Java を使用します。

前提条件

Simple Log Service SDK for Java をインストール済みであること。詳細については、「Install the Simple Log Service SDK for Java」をご参照ください。

  • GetLogs() メソッド

    • パラメータ:query

      たとえば、分析文は * | select count(*) as pv です。

      • 完全正確モードを有効にする:分析文に set session allow_incomplete=false; を追加します。たとえば、* | select count(*) as pv は * | set session allow_incomplete=false; select count(*) as pv になります。

      • クエリ分析のタイムアウトを設定する:分析文に set session query_max_run_time=10s; を追加します。これにより、最大実行時間が 10s に設定されます。分析文は * | set session query_max_run_time=10s; select count(*) as pv です。

      • 完全正確モードを有効にし、タイムアウトも設定する:セッションコマンドを分析文に追加します。例:* | set session allow_incomplete=false; set session query_max_run_time=10s; select count(*) as pv。

    • パラメータ:session

      • 完全正確モードを有効にする:request.SetSession("allow_incomplete=false");。

      • クエリのタイムアウトを設定する:request.SetSession("query_max_run_time=10s");。

      • 完全正確モードを有効にし、タイムアウトも設定する:request.SetSession("allow_incomplete=false; query_max_run_time=10s")。

    import com.aliyun.openservices.log.Client;
    import com.aliyun.openservices.log.exception.LogException;
    import com.aliyun.openservices.log.request.GetLogsRequest;
    import com.aliyun.openservices.log.response.GetLogsResponse;
    
    public class CreateLogStore {
        public static void main(String[] args) throws LogException {
            // この例では、環境変数から AccessKey ID と AccessKey Secret を取得します。
            String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
            String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
            // Simple Log Service のエンドポイントを設定します。この例では、中国 (北京) リージョンのエンドポイントを使用します。実際のエンドポイントに置き換えてください。
            String host = "https://cn-beijing.log.aliyuncs.com";
            // Simple Log Service クライアントを作成します。
            Client client = new Client(host, accessId, accessKey);
            // Project 名を指定します。
            String projectName = "aliyun-test-project";
            // Logstore 名を指定します。
            String logstore = "request_log";
            String query = "* | SELECT count(0)";
            int from = (int)(System.currentTimeMillis()/1000) - 60;
            int to = (int)(System.currentTimeMillis()/1000);
            GetLogsRequest request = new GetLogsRequest(projectName, logstore, from, to, "", query);
            request.SetSession("allow_incomplete=false;query_max_run_time=10s");
            GetLogsResponse response = client.GetLogs(request);
            System.out.println(response.getCpuSec());
        }
    }

よくある質問

  • CPU 時間を確認する方法は?

    クエリを実行した後、分析結果 にマウスポインターを合わせると、CPU 時間を表示できます。 右上の統計パネルにある [消費 CPU 時間] フィールドに、消費された CPU 時間が秒単位で表示されます。

  • 専用 SQL クエリのコスト

    コストはデータ量とクエリの複雑さによって異なります。次の表に例を示します。

    クエリステートメント

    データ量 (行)

    1 回の実行あたりのコスト (USD)

    * | select avg(double_0) from stress_s1_mil1

    40 億

    0.004435

    * | select avg(double_0), sum(double_0), max(double_0), min(double_0), count(double_0) from stress_s1_mil1

    40 億

    0.006504

    * | select avg(double_0), sum(double_1), max(double_2), min(double_3), count(double_4) from stress_s1_mil1

    40 億

    0.013600

    * | select key_0 , avg(double_0) as pv from stress_s1_mil1 group by key_0 order by pv desc limit 1000

    40 億

    0.011826

    * | select long_0, avg(double_0) as pv from stress_s1_mil1 group by long_0 order by pv desc limit 1000

    40 億

    0.011087

    * | select long_0, long_1, avg(double_0) as pv from stress_s1_mil1 group by long_0,long_1 order by pv desc limit 1000

    3 億

    0.010791

    * | select avg(double_0) from stress_s1_mil1 where key_0='key_987'

    40 億

    0.00007