Todos os produtos
Search
Central de documentação

Tablestore:Varredura paralela

Última atualização: Jul 03, 2026

Se a ordem dos resultados da consulta não for relevante, use o recurso de varredura paralela para obtê-los com maior eficiência.

Pré-requisitos

Parâmetros

Parâmetro

Descrição

tableName

Nome da tabela de dados.

indexName

Nome do índice de pesquisa.

scanQuery

query

Instrução de consulta do índice de pesquisa. A operação aceita consultas por termo, difusa, por intervalo, geográfica e aninhada, semelhantes às da operação Search.

limit

Número máximo de linhas retornadas em cada chamada ParallelScan.

maxParallel

Número máximo de tarefas de varredura paralela por requisição. Esse valor varia conforme o volume de dados: volumes maiores exigem mais tarefas paralelas. Use a operação ComputeSplits para consultar o número máximo de tarefas paralelas por requisição.

currentParallelId

ID da tarefa de varredura paralela na requisição. Valores válidos: [0, Valor de maxParallel).

token

Token usado para paginar os resultados da consulta. A resposta da requisição ParallelScan inclui o token da próxima página, permitindo recuperar os dados subsequentes.

aliveTime

Período de validade da tarefa de varredura paralela atual, que corresponde também à validade do token. Unidade: segundos. Valor padrão: 60. Recomendamos manter o valor padrão. Se a próxima requisição não ocorrer dentro desse período, não será possível consultar dados adicionais. O tempo de validade do token é renovado a cada nova requisição enviada.

Nota

As sessões expiram antecipadamente se houver alteração dinâmica de índices nos esquemas, falha em um único servidor ou balanceamento de carga no lado do servidor. Nesses casos, recrie as sessões.

columnsToGet

Nome da coluna a ser retornada no resultado do agrupamento. Adicione o nome da coluna em Columns.

Para retornar todas as colunas do índice de pesquisa, use a operação ReturnAllFromIndex, que oferece uma sintaxe mais concisa.

Importante

Não é possível usar ReturnAll neste contexto.

sessionId

ID de sessão da tarefa de varredura paralela. Chame a operação ComputeSplits para criar uma sessão e consultar o número máximo de tarefas de varredura paralela compatíveis com a requisição.

Exemplos

O código de exemplo abaixo demonstra como executar uma varredura paralela:

// 1. Obtain the session ID. 
let computeSplits = await new Promise((resolve, reject) => {
    client.computeSplits({
        tableName: tableName,
        searchIndexSplitsOptions: {
            indexName: indexName,
        }
    }, function (err, data) {
        if (err) {
            console.log('computeSplits error:', err.toString());
            reject(err);
        } else {
            console.log('computeSplits success:', data);
            resolve(data)
        }
    })
})

// 2. Specify query conditions. 
const scanQuery = {
    query: {
        queryType: TableStore.QueryType.MATCH_ALL_QUERY,
    },
    limit: 1000,
    aliveTime: 30,
    token: undefined,
    currentParallelId: 0,
    maxParallel: 1,
}

// 3. Create a ParallelScan request. In this example, a synchronous request is created. You can create an asynchronous request based on your business requirement. 
const parallelScanPromise = function () {
    return new Promise(function (resolve, reject) {
        client.parallelScan({
            tableName: tableName,
            indexName: indexName,
            columnToGet: {
                returnType: TableStore.ColumnReturnType.RETURN_ALL_FROM_INDEX,
            },
            sessionId: computeSplits.sessionId,
            scanQuery: scanQuery,
        }, function (err, data) {
            if (err) {
                console.log('parallelScan error:', err.toString());
                reject(err);
            } else {
                console.log("parallelScan, rows:", data.rows.length)
                resolve(data)
            }
        });
    })
}
let totalCount = 0 // Specify that the total number of rows that meet the query conditions is returned. 
let parallelScanResponse = await parallelScanPromise()
totalCount = totalCount + parallelScanResponse.rows.length
// 4. Pull data by using an iterator until all data is pulled. 
while (parallelScanResponse.nextToken !== null && parallelScanResponse.nextToken.length > 0) {
    scanQuery.token = parallelScanResponse.nextToken
    parallelScanResponse = await parallelScanPromise()
    totalCount += parallelScanResponse.rows.length
}
console.log("total rows:", totalCount)

FAQ

O que fazer quando a operação Search não retorna dados?

Referências