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.
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.
Pré-requisitos
Um Logstore padrão foi criado. Para mais informações, consulte Criar um Logstore básico.
Os logs foram coletados. Para mais informações, consulte Coleta de dados.
Os índices foram configurados. Para mais informações, consulte Configurar índices.
Procedimento
Ative o modo completamente preciso para operações individuais de consulta e análise dentro de um Logstore específico.
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
Faça login no console do Simple Log Service.
-
Na seção Projects, clique em no projeto desejado.

-
Na aba , clique em no logstore desejado.

-
Clique em .
ImportanteAjuste o tempo limite definindo o parâmetro
query_max_run_time.Por exemplo, se sua instrução analítica for
* | select count(*) as pv, adicioneset 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.
API
-
GetLogs (retorna resultados não compactados) - Consulta dados de log em um Logstore
-
Parâmetro:
queryPor 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 pvtorna-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 para10s. 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:
queryPor 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 pvtorna-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 para10s. 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:
queryPor 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 pvtorna-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 para10s. 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:
sessionAtivar 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_mil14 bilhões
0,004435
* | select avg(double_0), sum(double_0), max(double_0), min(double_0), count(double_0) from stress_s1_mil14 bilhões
0,006504
* | select avg(double_0), sum(double_1), max(double_2), min(double_3), count(double_4) from stress_s1_mil14 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 10004 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 10004 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 1000300 milhões
0,010791
* | select avg(double_0) from stress_s1_mil1 where key_0='key_987'4 bilhões
0,00007
> Completely Accurate