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 obter os dados com maior eficiência.

Importante

O Tablestore SDK for PHP V5.1.0 ou posterior oferece suporte ao recurso de varredura paralela. Antes de usar esse recurso, verifique se você obteve o Tablestore SDK for PHP V5.1.0 ou uma versão mais recente. Para obter informações sobre o histórico de versões do Tablestore SDK for PHP, consulte Histórico de versões do Tablestore SDK for PHP.

Pré-requisitos

Parâmetros

Parâmetro

Descrição

table_name

Nome da tabela de dados.

index_name

Nome do índice de busca.

scan_query

query

Tipo da consulta. A operação aceita consultas por termo (term query), fuzzy, intervalo (range), geoespaciais (geo) e aninhadas (nested), semelhantes às suportadas pela operação Search.

limit

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

max_parallel

Número máximo de tarefas de varredura paralela por requisição. Esse valor varia conforme o volume de dados: quanto maior o volume, mais tarefas são necessárias. Use a operação ComputeSplits para consultar o número máximo de tarefas de varredura paralela por requisição.

current_parallel_id

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

token

Token usado para paginar os resultados da consulta. Os resultados da requisição ParallelScan contêm o token da próxima página. Use o token para recuperar a próxima página.

alive_time

Período de validade da tarefa de varredura paralela atual. Esse período também define a validade do token. Unidade: segundos. Valor padrão: 60. Recomendamos usar o valor padrão. Se a próxima requisição não for iniciada dentro do período de validade, não será possível consultar mais dados. O tempo de validade do token é atualizado sempre que você envia uma requisição.

Nota

As sessões expiram antecipadamente se os esquemas do índice de origem e do índice canário forem alternados, se houver falha em um único servidor ou se ocorrer balanceamento de carga no lado do servidor. Nesse caso, recrie as sessões.

columns_to_get

Nomes das colunas a serem retornadas para cada linha que atenda às condições da consulta.

Para retornar todas as colunas do índice de busca, defina o parâmetro return_type como RETURN_ALL_FROM_INDEX.

session_id

ID da 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 suportadas pela requisição.

Exemplos

O código de exemplo a seguir mostra como usar o recurso de varredura paralela de índices de busca:

// 1. Obtain the session ID. 
$computeSplitsPointReq = array(
    'table_name' => 'php_sdk_test',
    'search_index_splits_options' => array(
        'index_name' => 'test_create_search_index'
    )
);

$computeSplits = $otsClient->computeSplits($computeSplitsPointReq);
print json_encode ($computeSplits, JSON_PRETTY_PRINT);

// 2. Specify query conditions. 
$scanQuery = array(
    'query' => array(
        'query_type' => QueryTypeConst::MATCH_ALL_QUERY
    ),
    'limit' => 2,
    'alive_time' => 30,
    'token' => null,
    'current_parallel_id' => 0,
    'max_parallel' => 1
);

//3. Construct a ParallelScan request. 
$parallelScanReq = array(
    'table_name' => 'php_sdk_test',
    'index_name' => 'test_create_search_index',
    'columns_to_get' => array(
        'return_type' => ColumnReturnTypeConst::RETURN_ALL_FROM_INDEX, // RETURN_ALL is not allow in parallel_scan, use RETURN_ALL_FROM_INDEX
        'return_names' => array('geo', 'text', 'long', 'keyword')
    ),
    'session_id' => $computeSplits['session_id'],
    'scan_query' => $scanQuery
);

$parallelScanRes = $otsClient->parallelScan($parallelScanReq);
print json_encode ($parallelScanRes['rows'], JSON_PRETTY_PRINT);

//4. Export data by using token-based pagination. In this example, only the total number of rows is collected. 
$totalCount = count($parallelScanRes['rows']);
while (!is_null($parallelScanRes['next_token'])) {
    $parallelScanReq['scan_query']['token'] = $parallelScanRes['next_token'];
    $parallelScanRes = $otsClient->parallelScan($parallelScanReq);
    print json_encode ($parallelScanRes['rows'], JSON_PRETTY_PRINT);

    $totalCount += count($parallelScanRes['rows']);
}
print "TotalCount: " . $totalCount;