Todos los productos
Search
Centro de documentos

Tablestore:Escaneo paralelo

Última actualización: Oct 09, 2026

Si no necesita que los resultados de la consulta sigan un orden específico, utilice la función de escaneo paralelo para obtenerlos de manera eficiente.

Importante

Tablestore SDK for PHP V5.1.0 o versiones posteriores es compatible con la función de escaneo paralelo. Antes de usarla, compruebe que cuenta con Tablestore SDK for PHP V5.1.0 o una versión más reciente. Para consultar el historial de versiones de Tablestore SDK for PHP, consulte Version history of Tablestore SDK for PHP.

Requisitos previos

Parámetros

Parámetro

Descripción

table_name

El nombre de la tabla de datos.

index_name

El nombre del índice de búsqueda.

scan_query

query

El tipo de consulta. La operación admite consultas por término (term query), consultas difusas (fuzzy query), consultas por rango (range query), consultas geográficas (geo query) y consultas anidadas (nested query), similares a las que admite la operación Search.

limit

El número máximo de filas que puede devolver cada llamada a ParallelScan.

max_parallel

El número máximo de tareas de escaneo paralelo por solicitud. Este valor varía según el volumen de datos; a mayor volumen, se requieren más tareas de escaneo paralelo por solicitud. Utilice la operación ComputeSplits para consultar el número máximo de tareas de escaneo paralelo por solicitud.

current_parallel_id

El identificador de la tarea de escaneo paralelo en la solicitud. Valores válidos: [0, max_parallel).

token

El token que se usa para paginar los resultados de la consulta. Los resultados de la solicitud ParallelScan incluyen el token de la página siguiente, el cual le permite recuperar dicha página.

alive_time

El periodo de validez de la tarea de escaneo paralelo actual, que también corresponde al periodo de validez del token. Unidad: segundos. Valor predeterminado: 60. Se recomienda mantener el valor predeterminado. Si no se inicia la siguiente solicitud dentro de este periodo, ya no será posible consultar más datos. El tiempo de validez del token se actualiza cada vez que usted envía una solicitud.

Nota

Las sesiones caducan antes de tiempo si se intercambian los esquemas del índice de origen y del índice canary, si falla un servidor individual o si se ejecuta un balanceo de carga del lado del servidor. En estos casos, debe volver a crear las sesiones.

columns_to_get

Los nombres de las columnas que desea devolver para cada fila que cumple con las condiciones de la consulta.

Para devolver todas las columnas del índice de búsqueda, establezca el parámetro return_type en RETURN_ALL_FROM_INDEX.

session_id

El identificador de sesión de la tarea de escaneo paralelo. Llame a la operación ComputeSplits para crear una sesión y consultar el número máximo de tareas de escaneo paralelo que admite la solicitud de escaneo paralelo.

Ejemplos

A continuación se muestra un ejemplo de código sobre cómo utilizar la función de escaneo paralelo de los índices de búsqueda:

// 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;