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

Simple Log Service:完全精度 SQL モード

最終更新日:Mar 26, 2026

このトピックでは、完全精度モードの仕組みと使用方法について説明します。

制限事項

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

仕組み

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

image

次の図に示すように、標準クエリは標準コンピューティングプールで実行されます。クエリがリソース制限に達すると、即座に切り捨てられ、不正確な結果につながります。完全精度モードを有効にすると、クエリは専用の精度コンピューティングプールで実行されます。リソース制限に達した場合でも、システムはすべてのデータがロードされ、計算が完了するまで、タスクが持続可能なレートで実行され続けることを保証します。

image

前提条件

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

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

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

操作手順

Simple Log Service では、特定の Logstore 内の個別のクエリと分析操作に対して、完全精度モードを有効にできます。

説明

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

コンソール

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

  2. [プロジェクト] セクションで、目的のプロジェクトをクリックします。

    image

  3. ログストレージ > Logstore」タブで、使用する Logstore をクリックします。

    image

  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 allow_incomplete=false; 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 allow_incomplete=false; 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 がインストールされていること。詳細については、「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 allow_incomplete=false; 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 CrearteLogStore {
        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);
            // プロジェクト名を指定します。
            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 時間が表示されます。计费

  • 専用 SQL を 1 回使用した場合の料金はいくらですか?

    専用 SQL の料金は、データ量と実行するクエリと分析文によって異なります。次の表に例を示します。

    クエリと分析文

    データ量 (行)

    実行あたりの平均コスト (/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