Tous les produits
Search
Centre de documentation

Tablestore:Analyse parallèle

Dernière mise à jour :Oct 09, 2026

Si l'ordre des résultats de la requête n'a pas d'importance, utilisez la fonctionnalité d'analyse parallèle pour obtenir les résultats efficacement.

Important

Le SDK Tablestore pour PHP version 5.1.0 ou ultérieure prend en charge l'analyse parallèle. Avant d'utiliser cette fonctionnalité, assurez-vous d'avoir installé le SDK Tablestore pour PHP version 5.1.0 ou ultérieure. Pour plus d'informations sur l'historique des versions du SDK Tablestore pour PHP, consultez Historique des versions du SDK Tablestore pour PHP.

Prérequis

Paramètres

Paramètre

Description

table_name

Nom de la table de données.

index_name

Nom de l'index de recherche.

scan_query

query

Type de requête. L'opération prend en charge les requêtes par terme, floues, par plage, géographiques et imbriquées, similaires à celles prises en charge par l'opération Search.

limit

Nombre maximal de lignes renvoyées par chaque appel ParallelScan.

max_parallel

Nombre maximal de tâches d'analyse parallèle par requête. Ce nombre varie selon le volume de données : un volume plus important nécessite davantage de tâches parallèles. Utilisez l'opération ComputeSplits pour connaître le nombre maximal de tâches d'analyse parallèle par requête.

current_parallel_id

ID de la tâche d'analyse parallèle dans la requête. Valeurs possibles : [0, max_parallel).

token

Jeton utilisé pour paginer les résultats de la requête. Les résultats de la requête ParallelScan contiennent le jeton de la page suivante, que vous pouvez utiliser pour récupérer cette page.

alive_time

Durée de validité de la tâche d'analyse parallèle actuelle, qui correspond également à la durée de validité du jeton. Unité : secondes. Valeur par défaut : 60. Il est recommandé d'utiliser la valeur par défaut. Si la requête suivante n'est pas initiée dans ce délai, aucune donnée supplémentaire ne peut être interrogée. La durée de validité du jeton est actualisée à chaque envoi de requête.

Remarque

Les sessions expirent prématurément en cas de basculement des schémas entre l'index source et l'index canari, de panne d'un serveur ou de rééquilibrage de charge côté serveur. Dans ce cas, recréez les sessions.

columns_to_get

Noms des colonnes à renvoyer pour chaque ligne correspondant aux conditions de requête.

Pour renvoyer toutes les colonnes de l'index de recherche, définissez le paramètre return_type sur RETURN_ALL_FROM_INDEX.

session_id

ID de session de la tâche d'analyse parallèle. Appelez l'opération ComputeSplits pour créer une session et connaître le nombre maximal de tâches d'analyse parallèle prises en charge par la requête d'analyse parallèle.

Exemples

L'exemple de code suivant illustre l'utilisation de la fonctionnalité d'analyse parallèle des index de recherche :

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