El modo completamente preciso garantiza resultados de consulta exactos y completos. Para lograrlo, permite que las consultas se ejecuten durante más tiempo en lugar de truncarse cuando se alcanzan los límites de recursos.
Límites
El modo completamente preciso no es compatible con las siguientes funciones:
Funcionamiento
El modo completamente preciso convierte diversas restricciones de recursos, como las de E/S y CPU, en un único límite basado en el tiempo. Si una consulta alcanza un límite de recursos, el sistema la regula a una velocidad sostenible en lugar de finalizarla. De esta forma, la consulta se ejecuta hasta completarse o hasta que se alcance el tiempo de espera. Este modo utiliza la asignación de tareas en pools de recursos aislados, la priorización de colas por usuario y el balanceo de carga para programar los recursos de manera eficiente.
Las consultas estándar se ejecutan en un pool de cómputo estándar y se truncan de inmediato al alcanzar un límite de recursos, lo cual puede generar resultados inexactos. Cuando se habilita el modo completamente preciso, las consultas se ejecutan en un pool de cómputo dedicado. En este caso, el sistema mantiene la tarea en ejecución a una velocidad sostenible hasta que se cargan todos los datos y finaliza el cálculo.
Requisitos previos
Se creó un logstore de tipo Standard. Para obtener más información, consulte Create a basic LogStore.
Se recopilaron los registros. Para obtener más información, consulte Data collection.
Se configuraron los índices. Para obtener más información, consulte Configure indexes.
Procedimiento
Puede habilitar el modo completamente preciso para operaciones individuales de consulta y análisis dentro de un logstore específico.
Configure el tiempo de espera máximo del modo completamente preciso mediante la consola, la API o el SDK. El tiempo de espera máximo para una instrucción analítica es de 55 segundos.
Console
Inicie sesión en la consola de Simple Log Service.
-
En la sección Projects, haga clic en el proyecto deseado.

-
En la pestaña , haga clic en el logstore deseado.

-
Haga clic en .
ImportanteAjuste el tiempo de espera si establece el parámetro
query_max_run_time.Por ejemplo, si su instrucción analítica es
* | select count(*) as pv, agregueset session query_max_run_time=10s;a la instrucción. La instrucción analítica completa queda así:* | 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 ejemplo, suponga que la instrucción analítica es
* | select count(*) as pv.Para habilitar el modo completamente preciso, anteponga
set session allow_incomplete=false;a su instrucción analítica. Por ejemplo,* | select count(*) as pvse convierte en* | set session allow_incomplete=false; select count(*) as pv.Para establecer el tiempo de espera del análisis de consultas, agregue
set session query_max_run_time=10s;a la instrucción de análisis. Esto define el tiempo máximo de ejecución en10s. La instrucción de análisis queda así:* | set session allow_incomplete=false; select count(*) as pv.Si desea habilitar el modo completamente preciso y establecer un tiempo de espera, anteponga los comandos de sesión a su instrucción analítica. Por ejemplo:
* | 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 ejemplo, suponga que la instrucción analítica es
* | select count(*) as pv.Para habilitar el modo completamente preciso, anteponga
set session allow_incomplete=false;a su instrucción analítica. Por ejemplo,* | select count(*) as pvse convierte en* | set session allow_incomplete=false; select count(*) as pv.Para establecer el tiempo de espera del análisis de consultas, agregue
set session query_max_run_time=10s;a la instrucción de análisis. Esto define el tiempo máximo de ejecución en10s. La instrucción de análisis queda así:* | set session allow_incomplete=false; select count(*) as pv.Si desea habilitar el modo completamente preciso y establecer un tiempo de espera, anteponga los comandos de sesión a su instrucción analítica. Por ejemplo:
* | set session allow_incomplete=false; set session query_max_run_time=10s;select count(*) as pv.
-
SDK
En esta sección se usa el SDK de Simple Log Service para Java como ejemplo.
Requisitos previos
Instale el SDK de Simple Log Service para Java. Para obtener más información, consulte Install the Simple Log Service SDK for Java.
-
Método GetLogs()
-
Parámetro:
queryPor ejemplo, suponga que la instrucción analítica es
* | select count(*) as pv.Para habilitar el modo completamente preciso, anteponga
set session allow_incomplete=false;a su instrucción analítica. Por ejemplo,* | select count(*) as pvse convierte en* | set session allow_incomplete=false; select count(*) as pv.Para establecer el tiempo de espera del análisis de consultas, agregue
set session query_max_run_time=10s;a la instrucción de análisis. Esto define el tiempo máximo de ejecución en10s. La instrucción de análisis queda así:* | set session allow_incomplete=false; select count(*) as pv.Si desea habilitar el modo completamente preciso y establecer un tiempo de espera, anteponga los comandos de sesión a su instrucción analítica. Por ejemplo:
* | set session allow_incomplete=false; set session query_max_run_time=10s;select count(*) as pv.
-
Parámetro:
sessionPara habilitar el modo completamente preciso, use
request.SetSession("allow_incomplete=false");.Para establecer el tiempo de espera de la consulta, use
request.SetSession("query_max_run_time=10s");.Para habilitar el modo completamente preciso y establecer un tiempo de espera, use
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()); } } -
Preguntas frecuentes
-
¿Cómo compruebo el tiempo de CPU?
Después de ejecutar una consulta, coloque el cursor sobre Analysis Results para consultar el tiempo de CPU. El campo Consumed CPU Time, ubicado en el panel de estadísticas superior derecho, muestra el tiempo de CPU en segundos.
-
Costo de una consulta de Dedicated SQL
El costo varía según el volumen de datos y la complejidad de la consulta.
Instrucción de consulta
Volumen de datos (filas)
Costo por ejecución (USD)
* | select avg(double_0) from stress_s1_mil14 mil millones
0.004435
* | select avg(double_0), sum(double_0), max(double_0), min(double_0), count(double_0) from stress_s1_mil14 mil millones
0.006504
* | select avg(double_0), sum(double_1), max(double_2), min(double_3), count(double_4) from stress_s1_mil14 mil millones
0.013600
* | select key_0 , avg(double_0) as pv from stress_s1_mil1 group by key_0 order by pv desc limit 10004 mil millones
0.011826
* | select long_0, avg(double_0) as pv from stress_s1_mil1 group by long_0 order by pv desc limit 10004 mil millones
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 millones
0.010791
* | select avg(double_0) from stress_s1_mil1 where key_0='key_987'4 mil millones
0.00007
> Completely Accurate