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.
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 Create a basic LogStore.
Os logs foram coletados. Para mais informações, consulte Data collection.
Os índices estão configurados. Para mais informações, consulte Configure indexes.
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 projeto desejado.

-
Na aba , clique em 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 (returns uncompressed results) - Queries log data in a 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 (returns compressed results) - Queries log data in a 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 Install the Simple Log Service SDK for 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 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_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