Tous les produits
Search
Centre de documentation

Simple Log Service:Mode SQL complètement exact

Dernière mise à jour :Aug 18, 2026

Le mode complètement exact garantit des résultats de requête précis et complets en permettant aux requêtes de s'exécuter plus longtemps plutôt que d'être tronquées lorsque les limites de ressources sont atteintes.

Limites

Le mode complètement exact n'est pas pris en charge pour les fonctionnalités suivantes :

Fonctionnement

Le mode complètement exact convertit diverses contraintes de ressources, telles que les E/S et le CPU, en une limite unique basée sur le temps. Si une requête atteint une limite de ressource, le système la régule à un débit durable au lieu de l'arrêter, ce qui lui permet de s'exécuter jusqu'à son terme ou jusqu'à l'expiration du délai. Ce mode utilise l'allocation des tâches dans des pools de ressources isolés, la priorisation des files d'attente par utilisateur et l'équilibrage de charge pour planifier les ressources de manière efficace.

image

Les requêtes standard s'exécutent dans un pool de calcul standard et sont immédiatement tronquées lorsqu'une limite de ressource est atteinte, ce qui peut entraîner des résultats inexacts. Avec le mode complètement exact activé, les requêtes s'exécutent dans un pool de calcul dédié où le système maintient la tâche à un rythme durable jusqu'à ce que toutes les données soient chargées et que le calcul soit terminé.

image

Prérequis

Procédure

Vous pouvez activer le mode complètement exact pour des opérations de requête et d'analyse individuelles au sein d'un Logstore spécifique.

Remarque

Vous pouvez configurer le délai d'expiration maximal pour le mode complètement exact à l'aide de la console, de l'API ou du SDK. Le délai d'expiration maximal pour une instruction d'analyse est de 55 secondes.

Console

  1. Connectez-vous à la console Simple Log Service.

  2. Dans la section Projects, cliquez sur le projet souhaité.

    image

  3. Sous l'onglet Log Storage > Logstores, cliquez sur le Logstore souhaité.

    image

  4. Cliquez sur image > Completely Accurate.

    Important

    Vous pouvez ajuster le délai d'expiration en définissant le paramètre query_max_run_time.

    Par exemple, si votre instruction d'analyse est * | select count(*) as pv, vous pouvez ajouter set session query_max_run_time=10s; à l'instruction. L'instruction d'analyse complète devient * | set session query_max_run_time=10s; select count(*) as pv .

    image

API

  • GetLogs (renvoie des résultats non compressés) - Interroge les données de journal dans un Logstore

    • Paramètre : query

      Par exemple, l'instruction d'analyse est * | select count(*) as pv.

      • Activer le mode complètement exact : Ajoutez set session allow_incomplete=false; au début de votre instruction d'analyse. Par exemple, * | select count(*) as pv devient * | set session allow_incomplete=false; select count(*) as pv .

      • Définir le délai d'expiration de l'analyse de requête : Ajoutez set session query_max_run_time=10s; à l'instruction d'analyse. Cela définit la durée d'exécution maximale à 10s. L'instruction d'analyse est : * | set session allow_incomplete=false; select count(*) as pv .

      • Pour activer le mode complètement exact et définir un délai d'expiration, ajoutez les commandes de session au début de votre instruction d'analyse. Par exemple : * | set session allow_incomplete=false; set session query_max_run_time=10s;select count(*) as pv .

  • GetLogsV2 (renvoie des résultats compressés) - Interroge les données de journal dans un Logstore

    • Paramètre : query

      Par exemple, l'instruction d'analyse est * | select count(*) as pv.

      • Activer le mode complètement exact : Ajoutez set session allow_incomplete=false; au début de votre instruction d'analyse. Par exemple, * | select count(*) as pv devient * | set session allow_incomplete=false; select count(*) as pv .

      • Définir le délai d'expiration de l'analyse de requête : Ajoutez set session query_max_run_time=10s; à l'instruction d'analyse. Cela définit la durée d'exécution maximale à 10s. L'instruction d'analyse est : * | set session allow_incomplete=false; select count(*) as pv .

      • Pour activer le mode complètement exact et définir un délai d'expiration, ajoutez les commandes de session au début de votre instruction d'analyse. Par exemple : * | set session allow_incomplete=false; set session query_max_run_time=10s;select count(*) as pv .

SDK

Cette section utilise le SDK Simple Log Service pour Java à titre d'exemple.

Prérequis

Vous avez installé le SDK Simple Log Service pour Java. Pour plus d'informations, consultez la rubrique Installer le SDK Simple Log Service pour Java.

  • Méthode GetLogs()

    • Paramètre : query

      Par exemple, l'instruction d'analyse est * | select count(*) as pv.

      • Activer le mode complètement exact : Ajoutez set session allow_incomplete=false; au début de votre instruction d'analyse. Par exemple, * | select count(*) as pv devient * | set session allow_incomplete=false; select count(*) as pv .

      • Définir le délai d'expiration de l'analyse de requête : Ajoutez set session query_max_run_time=10s; à l'instruction d'analyse. Cela définit la durée d'exécution maximale à 10s. L'instruction d'analyse est : * | set session allow_incomplete=false; select count(*) as pv .

      • Pour activer le mode complètement exact et définir un délai d'expiration, ajoutez les commandes de session au début de votre instruction d'analyse. Par exemple : * | set session allow_incomplete=false; set session query_max_run_time=10s;select count(*) as pv .

    • Paramètre : session

      • Activer le mode complètement exact : request.SetSession("allow_incomplete=false");.

      • Définir le délai d'expiration de la requête : request.SetSession("query_max_run_time=10s"); .

      • Activer le mode complètement exact et définir un délai d'expiration : 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());
        }
    }

FAQ

  • Comment vérifier le temps CPU ?

    Après avoir exécuté une requête, placez le curseur sur Analysis Results pour afficher le temps CPU. Le champ Consumed CPU Time dans le panneau de statistiques en haut à droite affiche le temps CPU en secondes.

  • Coût d'une requête SQL dédiée

    Le coût varie en fonction du volume de données et de la complexité de la requête.

    Instruction de requête

    Volume de données (lignes)

    Coût par exécution (USD)

    * | select avg(double_0) from stress_s1_mil1

    4 milliards

    0.004435

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

    4 milliards

    0.006504

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

    4 milliards

    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 milliards

    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 milliards

    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 millions

    0.010791

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

    4 milliards

    0.00007