Tous les produits
Search
Centre de documentation

Simple Log Service:Accélérez les requêtes avec les vues matérialisées

Dernière mise à jour :Aug 18, 2026

Les vues matérialisées pré-calculent de manière incrémentielle les sous-instructions SQL et persistent les résultats. Lors de l'exécution de la requête, le système réécrit automatiquement le code SQL pour lire les données pré-calculées, réduisant ainsi la latence des requêtes pour les tableaux de bord et les rapports, qui passe de plusieurs minutes à quelques secondes.

Choisissez une stratégie d'accélération

Simple Log Service (SLS) prend en charge l'analyse SQL en temps réel. Chaque requête traite l'intégralité du jeu de données dans la plage temporelle sélectionnée. Pour les grands volumes de données, les méthodes suivantes améliorent les performances :

Méthode d'accélération

Principe

Cas d'utilisation

Limitations

Requête et analyse haute performance avec précision totale (Dedicated SQL)

Augmente les ressources de calcul pour améliorer le parallélisme d'une seule requête.

Grands jeux de données avec des requêtes SQL changeant fréquemment.

L'échelle des données a une limite supérieure et le temps d'exécution peut être long pour des jeux de données massifs.

Vue matérialisée (cette rubrique)

Effectue un pré-calcul incrémentiel sur les sous-instructions d'une requête SQL fixe. Lors de la requête, celle-ci est automatiquement réécrite pour lire les résultats pré-calculés.

Scénarios de reporting et de tableau de bord avec des requêtes SQL relativement fixes et des jeux de données massifs.

Seuls les Logstores Standard sont pris en charge. Vous pouvez créer jusqu'à 100 vues matérialisées par projet.

Fonctionnement

  • Source Logstore : le Logstore contenant les données brutes des journaux. Les vues matérialisées n'affectent pas le Source Logstore.

  • materialized store : lorsque vous créez une vue matérialisée, le système crée automatiquement un materialized store correspondant pour stocker les résultats pré-calculés.

    Les processus de matérialisation traitent les données ingérées sous forme de flux. Même si les données brutes arrivent avec des horodatages de journal désordonnés, la matérialisation planifiée ne produit ni doublons ni omissions.
  • Calcul en arrière-plan planifié : le système extrait le modèle de matérialisation du code SQL d'entrée et calcule périodiquement les résultats intermédiaires à partir du Source Logstore. Il vous suffit de fournir le code SQL cible lors de la création d'une vue matérialisée ; le système gère automatiquement la logique de matérialisation.

  • transparent rewrite : lorsque vous exécutez une requête SQL, le moteur d'exécution SLS analyse la structure du code SQL, la fait correspondre à une vue matérialisée existante et réécrit la requête automatiquement. Vous pouvez continuer à interroger le Source Logstore sans modifier votre code SQL ni spécifier de vue matérialisée.

  • Fusion automatique pour l'intégrité des données : pour les plages temporelles déjà matérialisées, le moteur lit directement depuis la vue matérialisée. Pour les dernières données non matérialisées, il effectue un calcul en temps réel à partir du Source Logstore. Les deux ensembles de résultats sont fusionnés automatiquement pour renvoyer un résultat complet et à jour.

Remarque

La réécriture transparente constitue le mécanisme central des vues matérialisées. Contrairement aux systèmes qui exigent que vous interrogiez manuellement une table de résultats matérialisés, SLS automatise la mise en correspondance du code SQL, sa réécriture et la fusion des résultats sans apporter de modifications à vos requêtes existantes. Après avoir créé une vue matérialisée, l'accélération n'est pas immédiate : le système doit pré-calculer de manière asynchrone les données historiques, de l'heure de début jusqu'à l'heure actuelle. Ce processus de construction prend généralement entre 1 et 12 heures, selon le volume de données et la complexité. L'accélération ne prend effet qu'une fois que le pré-calcul couvre la plage temporelle de la requête.

Portée et limitations

  • Seuls les Logstores Standard sont pris en charge. Les Query Logstores, MetricStores et StoreViews ne sont pas pris en charge.

  • Vous pouvez créer jusqu'à 100 vues matérialisées par projet.

  • Vous pouvez créer et gérer des vues matérialisées dans la console ou via l'API.

Exigences en matière d'autorisations

Un compte Alibaba Cloud dispose par défaut de toutes les autorisations requises. Un utilisateur RAM doit se voir attribuer les autorisations suivantes :

Autorisations requises pour les vues matérialisées

Demandez la stratégie système AliyunLogFullAccess pour SLS à l'administrateur de votre compte Alibaba Cloud, ou consultez la rubrique Créer une stratégie d'autorisation personnalisée pour mettre en œuvre un contrôle d'accès granulaire comme décrit dans le tableau suivant.

Actions

Action d'autorisation

Créer une vue matérialisée

log:CreateMaterializedView

Mettre à jour une vue matérialisée

log:UpdateMaterializedView

Obtenir les détails d'une vue matérialisée

log:GetMaterializedView

Supprimer une vue matérialisée

log:DeleteMaterializedView

Lister les vues matérialisées

log:ListMaterializedViews

Utiliser les vues matérialisées

Créer depuis la page de requête

Vous pouvez créer une vue matérialisée directement à partir d'une requête SQL sur la page de requête et d'analyse.

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

  2. Dans la liste Projects, cliquez sur le projet cible, puis sur le Logstore Standard cible.

  3. Sur la page de requête et d'analyse, saisissez l'instruction SQL que vous souhaitez accélérer, puis cliquez sur Search & Analyze.

  4. Dans la zone statistics chart des résultats de la requête, cliquez sur Create Materialized View.

  5. Dans l'assistant de création, complétez la configuration. L'instruction SQL est automatiquement renseignée avec la requête actuelle. Les autres paramètres sont identiques à ceux de la création d'une vue depuis le panneau des vues matérialisées.

Créer et gérer dans la console

Créer une vue matérialisée

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

  2. Dans la liste Projects, cliquez sur le projet cible.

  3. Dans le volet de navigation de gauche, cliquez sur l'icône Materialized View.

  4. Sur le panneau des vues matérialisées, cliquez sur Create Now.

  5. Dans l'assistant de création, configurez les paramètres suivants.

    1. Source Logstore : configurez la source de données pour la vue matérialisée.

      Paramètre

      Description

      Project

      Automatiquement renseigné avec le projet actuel et ne peut pas être modifié.

      Type de source

      Sélectionnez Logstore. Actuellement, seuls les Logstores Standard sont pris en charge.

      Logstore

      Sélectionnez le Logstore cible dans la liste déroulante.

      Une fois la configuration terminée, cliquez sur Next.

    2. Configuration de la vue matérialisée : configurez le nom, le code SQL et les autres paramètres de la vue matérialisée.

      Paramètre

      Description

      Nom de la vue matérialisée

      Saisissez un nom pour la vue matérialisée. Le système ajoute automatiquement le préfixe mv_. Vous n'avez pas besoin de l'ajouter manuellement.

      Code SQL

      Saisissez l'instruction SQL à accélérer. L'éditeur prend en charge la coloration syntaxique et la saisie semi-automatique. Après avoir saisi l'instruction SQL, cliquez sur Preview pour valider le résultat d'exécution.

      Remarque

      Les noms de colonnes utilisés dans l'instruction SQL doivent être indexés. Sinon, une erreur se produit lors de la prévisualisation.

      Heure de début

      Sélectionnez l'heure de début pour la matérialisation des données. Cette heure est basée sur l'heure d'écriture des données brutes. Le système ne matérialise que les données écrites après cette heure.

      Intervalle de matérialisation

      Définissez l'intervalle (en minutes) auquel la vue est recalculée. Un intervalle plus court maintient le résultat matérialisé plus proche du temps réel, mais augmente les coûts de calcul.

  6. Une fois la configuration terminée, cliquez sur Save.

    Après la création de la vue matérialisée, le système vous redirige automatiquement vers la page de requête de la vue matérialisée.

    Remarque

    La période de conservation des données d'une vue matérialisée est identique à celle du Source Logstore associé. Vous pouvez créer un maximum de 100 vues matérialisées par projet.

Afficher et gérer les vues matérialisées

Après avoir créé une vue matérialisée, vous pouvez la consulter et la gérer dans la console.

  • Afficher la liste des vues matérialisées

    Dans le volet de navigation de gauche du projet cible, cliquez sur l'icône Materialized View. Le panneau latéral qui s'affiche présente toutes les vues matérialisées du projet actuel.

  • Afficher les détails d'une vue matérialisée

    Dans la liste des vues matérialisées, cliquez sur le nom d'une vue matérialisée pour ouvrir sa page de détails. La page de détails affiche les informations de configuration suivantes :

    • Materialized View Name : le nom complet de la vue matérialisée, y compris le préfixe mv_.

    • Start At : l'heure de début pour la matérialisation des données.

    • View Update Interval : l'intervalle auquel la vue est recalculée.

    • Data Retention Period : identique à la période de conservation des données du Source Logstore.

    • SQL Code : l'instruction SQL correspondant à la vue matérialisée.

  • Supprimer une vue matérialisée

    Sur la page de détails de la vue matérialisée, cliquez sur Delete, puis sur OK dans la boîte de dialogue de confirmation.

    Avertissement

    Une vue matérialisée supprimée ne peut pas être récupérée. Le materialized store correspondant est également supprimé.

Accélération des requêtes de tableau de bord

Si un graphique de tableau de bord présente une latence de requête élevée, vous pouvez créer une vue matérialisée pour l'accélérer. Pour plus d'informations, consultez la rubrique accélération des requêtes de tableau de bord.

Utiliser un SDK

Vous pouvez également créer et gérer des vues matérialisées par programmation à l'aide d'un SDK. L'exemple suivant utilise Java.

  1. Importez le SDK SLS pour Java.

    <dependency>
        <groupId>com.aliyun.openservices</groupId>
        <artifactId>aliyun-log</artifactId>
        <version>0.6.138</version>
    </dependency>
  2. L'exemple suivant montre comment créer, lister, obtenir et supprimer des vues matérialisées. Modifiez et exécutez le code selon vos besoins.

    • Obtenez les paramètres du code comme suit :

      • Pour obtenir un ID AccessKey et un secret AccessKey, consultez la rubrique Obtenir une paire de clés AccessKey.

      • Pour obtenir l'endpoint :

        1. Connectez-vous à la console Simple Log Service, et dans la liste des projets, cliquez sur le projet cible.

        2. Cliquez sur l'icône image à côté du nom du projet pour ouvrir la page Project Overview, puis copiez l'endpoint public.

      import com.aliyun.openservices.log.Client;
      import com.aliyun.openservices.log.exception.LogException;
      import com.aliyun.openservices.log.request.CreateMaterializedViewRequest;
      import com.aliyun.openservices.log.request.ListMaterializedViewsRequest;
      import com.aliyun.openservices.log.response.GetMaterializedViewResponse;
      import com.aliyun.openservices.log.response.ListMaterializedViewsResponse;
      
      import java.text.SimpleDateFormat;
      import java.util.concurrent.TimeUnit;
      
      public class MvDemo
      {
          static String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
          static String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
          /**
           * The endpoint for Simple Log Service. This example uses Hangzhou. Change it to your actual region.
           */
          static String host = "cn-hangzhou.log.aliyuncs.com";
          /**
           * Create a Simple Log Service client.
           */
          static Client client = new Client(host, accessId, accessKey);
          /**
           * The project name.
           */
          static String projectName = "xxx";
          /**
           * The Logstore name.
           */
          static String logstoreName = "xxx";
      
          public static void main(String[] args) throws Exception {
              String materializedViewName = "test_mv";
      
              createMv(materializedViewName); // Create a materialized view with the specified name.
      
              listMv(); // Get the list of materialized views in the current project.
      
              getMv(materializedViewName); // Get information about the current materialized view.
      
              // deleteMv(materializedViewName); // Delete the materialized view.
          }
      
          static int dateStrToSecond(String dateStr) throws Exception {
              SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
              return (int)TimeUnit.MILLISECONDS.toSeconds(simpleDateFormat.parse(dateStr).getTime());
          }
      
          static void createMv(String materializedViewName) throws Exception {
              String originalSql = "* | select count(l1) as cnt, l2 from stability group by l2"; // Modify this to the SQL query you want to accelerate.
              int aggInternalMins = 60; // The materialization interval, in minutes.
              int startTime = dateStrToSecond("2025-07-30 00:00:00"); // The start time for materialization, based on the write time of raw data. Only data written after this time is materialized.
              int ttl = 0; // The TTL of the materialized store. A value of 0 means the TTL matches that of the Source Logstore. This TTL cannot be shorter than the Source Logstore's TTL.
              // The number of materialized views per project cannot exceed 100.
              CreateMaterializedViewRequest request = new CreateMaterializedViewRequest(projectName, materializedViewName, logstoreName, originalSql, aggInternalMins, startTime, ttl);
              client.createMaterializedView(request);
              System.out.println("create materialized view " + materializedViewName);
          }
      
          static void listMv() throws LogException
          {
              ListMaterializedViewsRequest request = new ListMaterializedViewsRequest(projectName, "", 0, 10); // 0 and 10 are pagination parameters.
              ListMaterializedViewsResponse response = client.listMaterializedViews(request);
              System.out.println("total materialized view count: " + response.getTotal());
              for (String materializedView : response.getMaterializedViews()) {
                  System.out.println(materializedView);
              }
          }
      
          static void getMv(String materializedViewName) throws Exception
          {
              GetMaterializedViewResponse response = client.getMaterializedView(projectName, materializedViewName);
              System.out.println("get materialized view detail, name: " + materializedViewName);
              System.out.println("originalSql: " + response.getOriginalSql());
              System.out.println("startTime: " + response.getStartTime());
              System.out.println("ttl: " + response.getTtl());
          }
      
          static void deleteMv(String materializedViewName ) throws LogException {
              client.deleteMaterializedView(projectName, materializedViewName);
              System.out.println("delete materialized view " + materializedViewName);
          }
      
      }

Syntaxe prise en charge

  • Toutes les fonctions scalaires et expressions sont prises en charge.

  • Les clauses telles que WHERE, GROUP BY, LIMIT et TOP-N sont prises en charge.

  • Les fonctions d'agrégation courantes sont prises en charge, comme indiqué dans le tableau suivant :

Fonctions d'agrégation

Syntaxe

fonctions d'agrégation

count(*)

count(1)

count(x)

count_if(expression booléenne)

max(x)

max(x, n)

min(x)

min(x, n)

sum(x)

arbitrary(x)

Fonctions d'approximation

approx_distinct(x)

approx_distinct(x, e)

approx_percentile(x, pourcentage)

Facturation

La facturation des vues matérialisées est basée sur le volume de données écrites dans le materialized store, qui dépend de la taille des résultats du SQL planifié et est généralement bien inférieure au volume du Source Logstore. La facturation suit le modèle paiement selon les données ingérées du Logstore Standard.

Remarque

Pour réduire les coûts de matérialisation, évitez d'utiliser un champ à cardinalité élevée, tel qu'un horodatage ou un ID utilisateur, dans la clause GROUP BY. Choisissez un intervalle de matérialisation qui correspond à la fréquence d'actualisation de votre activité.