Todos os produtos
Search
Central de documentação

Tablestore:O que fazer se houver latência de dados ao consultar dados executando instruções SQL?

Última atualização: Jun 30, 2026

Descrição do problema

Após a adição ou atualização de dados em uma tabela, pode ocorrer latência e impedir a obtenção das informações mais recentes por meio de instruções SQL.

Causa possível

Ao criar um índice de pesquisa para uma tabela de dados, o mecanismo SQL seleciona automaticamente esse índice para consultas caso ele contenha todas as colunas referenciadas na instrução SQL executada. Para mais detalhes, consulte Política de seleção de índice.

Como pode haver latência na sincronização dos dados no índice de pesquisa, a execução de instruções SQL pode não retornar as informações mais recentes, mesmo que a gravação na tabela de dados já tenha sido concluída.

Solução

  • Especifique explicitamente que índices de pesquisa não devem ter prioridade

    Ao consultar dados com instruções SQL, inclua o comando use index() nas instruções para indicar explicitamente que os índices de pesquisa não devem ser usados prioritariamente.

    Por exemplo, considere uma tabela chamada exampletable com as colunas pk, name e context, para a qual foi criado um índice de pesquisa contendo essas mesmas colunas. Execute a seguinte instrução SQL de exemplo, sem especificar nenhum índice de pesquisa, para consultar os dados:

    SELECT pk,name,context FROM exampletable use index();  -- Specify that search indexes are not preferentially used when you query data from the data table.
  • Utilize operações de leitura de dados para consultas

    Para ler dados com base na chave primária, utilize as operações de leitura disponíveis. O Tablestore oferece a operação GetRow para ler uma única linha, além de operações como BatchGetRow e GetRange para leitura em lote de múltiplas linhas. Para mais informações, consulte Ler dados.

    Operação

    Descrição

    Cenário

    GetRow

    Lê os dados de uma única linha com base na chave primária especificada.

    Ideal quando os valores de todas as colunas da chave primária da linha desejada são conhecidos e o volume de linhas a serem lidas é pequeno.

    BatchGetRow

    Lê várias linhas de dados de uma ou mais tabelas simultaneamente.

    Recomendado quando os valores de todas as colunas da chave primária das linhas desejadas são conhecidos e há um grande volume de linhas ou necessidade de leitura em múltiplas tabelas.

    GetRange

    Lê dados cujos valores de chave primária estão dentro de um intervalo específico.

    Adequado para cenários onde é possível determinar o intervalo de valores da chave primária ou o prefixo desses valores para as linhas que se deseja ler.

  • Use um índice secundário

    Importante

    O uso do recurso de índice secundário gera custos de armazenamento. Além disso, a gravação de dados na tabela consome recursos computacionais para a criação do índice de pesquisa e para a leitura dos dados.

    Utilize um índice secundário para consultar dados via instruções SQL. Siga as etapas abaixo.

    1. Crie um índice secundário para a tabela de dados. Para mais informações, consulte Usar índices secundários no console do Tablestore.

      Recomendamos a criação de um índice secundário local para atender aos requisitos de consistência forte.

    2. Execute instruções SQL para consultar dados com base em um índice secundário utilizando um dos métodos a seguir:

      Por exemplo, considere uma tabela chamada exampletable com as colunas pk, name e context. Suponha que um índice secundário chamado exampletable_index tenha sido criado para essa tabela, contendo as colunas mencionadas.

      • Método 1: Especificar explicitamente um índice secundário para consultar dados na tabela

        Se nenhum índice for especificado explicitamente durante a execução da instrução SQL, o Tablestore determinará automaticamente se deve usar um índice, seguindo a política de seleção de índices.

        Execute a seguinte instrução SQL de exemplo, que utiliza o comando use index() para especificar explicitamente o índice secundário na consulta:

        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étodo 2: Consultar dados usando uma tabela de mapeamento criada para o índice secundário

        1. Execute a instrução CREATE TABLE para criar uma tabela de mapeamento chamada exampletable_index para o índice secundário. Para mais informações, consulte Criar uma tabela de mapeamento para uma tabela.

        2. Execute a seguinte instrução SQL SELECT de exemplo para consultar dados por meio da tabela de mapeamento do índice secundário:

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