Todos os produtos
Search
Central de documentação

Simple Log Service:Modo SQL completamente preciso

Última atualização: Jul 03, 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

O modo completamente preciso não oferece suporte aos seguintes recursos:

Como funciona

O modo completamente preciso converte várias 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 limitará 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 com eficiência.

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 no projeto desejado.

    image

  3. Na aba Log Storage > Logstores, clique em no 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 (retorna resultados não compactados) - Consulta dados de log em um 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 (retorna resultados compactados) - Consulta dados de log em um 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 Instalar o SDK do Simple Log Service para 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 verificar 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 consumido em segundos.

  • Custo de uma consulta Dedicated SQL

    O custo varia conforme o volume de dados e a complexidade da consulta. A tabela a seguir apresenta alguns exemplos.

    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