Todos os produtos
Search
Central de documentação

Simple Log Service:Modo de SQL completamente preciso

Última atualização: Sep 12, 2026

O modo completamente preciso garante resultados de consulta exatos e completos. Ele permite que as consultas sejam executadas por mais tempo, evitando o truncamento quando os limites de recursos são atingidos.

Limitações

Os seguintes recursos não oferecem suporte ao modo completamente preciso:

Como funciona

O modo completamente preciso converte diversas restrições de recursos, como I/O e CPU, em um único limite baseado em tempo. Se uma consulta atingir um limite de recursos, o sistema limita a taxa de execução para um nível sustentável em vez de encerrá-la. Isso permite que a consulta seja concluída ou execute até que o tempo limite seja atingido. O modo utiliza alocação de tarefas em pools de recursos isolados, priorização de filas por usuário e balanceamento de carga para agendar recursos de forma eficiente.

image

Consultas padrão são executadas em um pool de computação padrão e são truncadas imediatamente ao atingir um limite de recursos, o que pode gerar resultados imprecisos. Com o modo completamente preciso ativado, as consultas rodam em um pool de computação dedicado. Nesse cenário, o sistema mantém a tarefa em execução a uma taxa sustentável até que todos os dados sejam carregados e a computação seja finalizada.

image

Pré-requisitos

Procedimento

Ative o modo completamente preciso para operações individuais de consulta e análise dentro de um Logstore específico.

Nota

Configure o tempo limite máximo para o modo completamente preciso usando o console, a API ou o SDK. O tempo limite máximo para uma instrução analítica é de 55 segundos.

Console

  1. Faça login no console do Simple Log Service.

  2. Na seção Projects, clique em projeto desejado.

    image

  3. Na aba Log Storage > Logstores, clique em logstore desejado.

    image

  4. Clique em image > Completely Accurate.

    Importante

    Ajuste o tempo limite definindo o parâmetro query_max_run_time.

    Por exemplo, se sua instrução analítica for * | select count(*) as pv, adicione set session query_max_run_time=10s; à instrução. A instrução analítica completa torna-se * | set session query_max_run_time=10s; select count(*) as pv .

    image

API

  • GetLogs (returns uncompressed results) - Queries log data in a Logstore

    • Parâmetro: query

      Por exemplo, a instrução analítica é * | select count(*) as pv.

      • Ativar o modo completamente preciso: Adicione set session allow_incomplete=false; antes da sua instrução analítica. Por exemplo, * | select count(*) as pv torna-se * | set session allow_incomplete=false; select count(*) as pv .

      • Definir o tempo limite da análise de consulta: Adicione set session query_max_run_time=10s; à instrução de análise. Isso define o tempo máximo de execução para 10s. A instrução de análise fica: * | set session allow_incomplete=false; select count(*) as pv .

      • Para ativar o modo completamente preciso e definir um tempo limite, adicione os comandos de sessão antes da sua instrução analítica. Exemplo: * | set session allow_incomplete=false; set session query_max_run_time=10s;select count(*) as pv .

  • GetLogsV2 (returns compressed results) - Queries log data in a Logstore

    • Parâmetro: query

      Por exemplo, a instrução analítica é * | select count(*) as pv.

      • Ativar o modo completamente preciso: Adicione set session allow_incomplete=false; antes da sua instrução analítica. Por exemplo, * | select count(*) as pv torna-se * | set session allow_incomplete=false; select count(*) as pv .

      • Definir o tempo limite da análise de consulta: Adicione set session query_max_run_time=10s; à instrução de análise. Isso define o tempo máximo de execução para 10s. A instrução de análise fica: * | set session allow_incomplete=false; select count(*) as pv .

      • Para ativar o modo completamente preciso e definir um tempo limite, adicione os comandos de sessão antes da sua instrução analítica. Exemplo: * | set session allow_incomplete=false; set session query_max_run_time=10s;select count(*) as pv .

SDK

Esta seção usa o SDK do Simple Log Service para Java como exemplo.

Pré-requisitos

Instale o SDK do Simple Log Service para Java. Para mais informações, consulte Install the Simple Log Service SDK for Java.

  • Método GetLogs()

    • Parâmetro: query

      Por exemplo, a instrução analítica é * | select count(*) as pv.

      • Ativar o modo completamente preciso: Adicione set session allow_incomplete=false; antes da sua instrução analítica. Por exemplo, * | select count(*) as pv torna-se * | set session allow_incomplete=false; select count(*) as pv .

      • Definir o tempo limite da análise de consulta: Adicione set session query_max_run_time=10s; à instrução de análise. Isso define o tempo máximo de execução para 10s. A instrução de análise fica: * | set session allow_incomplete=false; select count(*) as pv .

      • Para ativar o modo completamente preciso e definir um tempo limite, adicione os comandos de sessão antes da sua instrução analítica. Exemplo: * | set session allow_incomplete=false; set session query_max_run_time=10s;select count(*) as pv .

    • Parâmetro: session

      • Ativar o modo completamente preciso: request.SetSession("allow_incomplete=false");.

      • Definir o tempo limite da consulta: request.SetSession("query_max_run_time=10s"); .

      • Ativar o modo completamente preciso e definir um tempo limite: 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 {
            // This example obtains the AccessKey ID and AccessKey Secret from environment variables.
            String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
            String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
            // Set the endpoint for Simple Log Service. This example uses the endpoint for the China (Beijing) region. Replace it with your actual endpoint.
            String host = "https://cn-beijing.log.aliyuncs.com";
            // Create a Simple Log Service client.
            Client client = new Client(host, accessId, accessKey);
            // Specify the Project name.
            String projectName = "aliyun-test-project";
            // Specify the Logstore name.
            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());
        }
    }

Perguntas frequentes

  • Como verifico o tempo de CPU?

    Após executar uma consulta, passe o mouse sobre Analysis Results para visualizar o tempo de CPU. O campo Consumed CPU Time, no painel de estatísticas superior direito, exibe o tempo de CPU em segundos.

  • Custo de uma consulta Dedicated SQL

    O custo varia conforme o volume de dados e a complexidade da consulta.

    Instrução de consulta

    Volume de dados (linhas)

    Custo por execução (USD)

    * | select avg(double_0) from stress_s1_mil1

    4 bilhões

    0.004435

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

    4 bilhões

    0.006504

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

    4 bilhões

    0.013600

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

    4 bilhões

    0.011826

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

    4 bilhões

    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

    300 milhões

    0.010791

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

    4 bilhões

    0.00007