Tous les produits
Search
Centre de documentation

Tablestore:Que faire en cas de latence des données lors de l'exécution de requêtes SQL ?

Dernière mise à jour :Aug 19, 2026

Description du problème

Après l'ajout ou la mise à jour de données dans une table, un délai de latence peut survenir. Il est alors impossible d'obtenir les données les plus récentes en exécutant des instructions SQL.

Cause possible

Lorsque vous créez un index de recherche pour une table de données, le moteur SQL sélectionne automatiquement cet index pour interroger les données, à condition que l'index contienne toutes les colonnes de données impliquées dans l'instruction SQL exécutée. Pour plus d'informations, consultez la rubrique Politique de sélection des index.

La synchronisation des données au sein de l'index de recherche peut présenter une certaine latence. Ainsi, même si les données ont été écrites dans la table, les instructions SQL peuvent ne pas renvoyer les informations les plus récentes immédiatement.

Solution

  • Spécifiez explicitement que les index de recherche ne doivent pas être utilisés en priorité

    Lors de l'exécution de requêtes SQL, incluez la commande use index() dans vos instructions pour indiquer explicitement au système de ne pas privilégier les index de recherche.

    Par exemple, supposons qu'une table de données nommée exampletable contient les colonnes pk, name et context, et qu'un index de recherche couvrant ces colonnes a été créé. Exécutez l'instruction SQL suivante, qui ne spécifie aucun index, pour interroger les données :

    SELECT pk,name,context FROM exampletable use index();  -- Specify that search indexes are not preferentially used when you query data from the data table.
  • Utilisez des opérations de lecture de données

    Pour lire des données en vous basant sur la clé primaire, privilégiez les opérations de lecture directes. Tablestore propose l'opération GetRow pour lire une seule ligne, ainsi que des opérations telles que BatchGetRow et GetRange pour lire plusieurs lignes par lot. Pour plus de détails, reportez-vous à la section Lire des données.

    Operation

    Description

    Scénario

    GetRow

    Lit les données d'une seule ligne en fonction de la clé primaire spécifiée.

    Cette opération convient aux scénarios où les valeurs de toutes les colonnes de la clé primaire de la ligne à lire sont connues et où le nombre de lignes à récupérer est faible.

    BatchGetRow

    Lit plusieurs lignes de données provenant d'une ou plusieurs tables en une seule fois.

    Utilisez cette méthode lorsque les valeurs de toutes les colonnes de la clé primaire des lignes cibles sont déterminées, que le volume de données à lire est important ou que vous devez extraire des données depuis plusieurs tables.

    GetRange

    Lit les données dont les valeurs de clé primaire se situent dans une plage spécifique.

    Cette approche est recommandée lorsque vous pouvez définir une plage de valeurs de clé primaire ou un préfixe de clé primaire pour les lignes à lire.

  • Utilisez un index secondaire

    Important

    L'utilisation de la fonctionnalité d'index secondaire entraîne des frais de stockage. De plus, l'écriture de données dans une table consomme des ressources de calcul pour créer l'index de recherche et lire les données.

    Vous pouvez utiliser un index secondaire pour interroger des données via des instructions SQL. Procédez comme suit.

    1. Créez un index secondaire pour la table de données. Pour plus d'informations, consultez la rubrique Utiliser des index secondaires dans la console Tablestore.

      Nous vous recommandons de créer un index secondaire local afin de satisfaire aux exigences de cohérence forte.

    2. Exécutez des instructions SQL pour interroger les données via un index secondaire en utilisant l'une des méthodes suivantes :

      Prenons l'exemple d'une table nommée exampletable contenant les colonnes pk, name et context. Un index secondaire nommé exampletable_index a été créé pour cette table et inclut les colonnes mentionnées.

      • Méthode 1 : Spécifiez explicitement un index secondaire pour interroger les données d'une table

        Si vous n'indiquez pas explicitement d'index lors de l'exécution d'une requête SQL, Tablestore décide automatiquement d'utiliser ou non un index selon sa politique de sélection.

        Exécutez l'instruction SQL suivante, qui spécifie explicitement un index secondaire via la commande use index() :

        SELECT pk,name,context FROM exampletable use index(exampletable_index);  -- Explicitly specify that a secondary index is used to query data from a data table.
      • Méthode 2 : Interrogez les données à l'aide d'une table de mappage créée pour un index secondaire

        1. Exécutez l'instruction CREATE TABLE pour créer une table de mappage nommée exampletable_index associée à l'index secondaire. Pour plus de détails, voir Créer une table de mappage pour une table.

        2. Exécutez l'instruction SQL SELECT suivante pour interroger les données via la table de mappage créée pour l'index secondaire :

          SELECT pk,name,context FROM exampletable_index;  -- Query data by using the mapping table that is created for the secondary index.