All Products
Search
Document Center

Tablestore:Parallel scan

Last Updated:Oct 09, 2026

Jika Anda tidak memiliki persyaratan terkait urutan hasil kueri, Anda dapat menggunakan fitur parallel scan untuk memperoleh hasil kueri secara efisien.

Penting

Tablestore SDK for PHP V5.1.0 atau versi yang lebih baru mendukung fitur parallel scan. Pastikan Anda telah menginstal Tablestore SDK for PHP V5.1.0 atau versi yang lebih baru sebelum menggunakan fitur ini. Untuk informasi mengenai riwayat versi Tablestore SDK for PHP, lihat Riwayat versi Tablestore SDK for PHP.

Prasyarat

Parameter

Parameter

Deskripsi

table_name

Nama tabel data.

index_name

Nama indeks pencarian.

scan_query

query

Jenis kueri. Operasi ini mendukung kueri tepat (term query), kueri fuzzy, kueri rentang (range query), kueri geografis (geo query), dan kueri bersarang (nested query), yang mirip dengan jenis kueri yang didukung oleh operasi Search.

limit

Jumlah maksimum baris yang dapat dikembalikan oleh setiap pemanggilan ParallelScan.

max_parallel

Jumlah maksimum tugas parallel scan per permintaan. Jumlah maksimum tugas parallel scan per permintaan bervariasi tergantung pada volume data. Volume data yang lebih besar memerlukan lebih banyak tugas parallel scan per permintaan. Anda dapat menggunakan operasi ComputeSplits untuk mengetahui jumlah maksimum tugas parallel scan per permintaan.

current_parallel_id

ID tugas parallel scan dalam permintaan. Nilai yang valid: [0, max_parallel).

token

Token yang digunakan untuk membagi hasil kueri ke dalam beberapa halaman. Hasil dari permintaan ParallelScan berisi token untuk halaman berikutnya. Anda dapat menggunakan token tersebut untuk mengambil halaman berikutnya.

alive_time

Periode validitas tugas parallel scan saat ini. Periode validitas ini juga merupakan periode validitas token. Satuan: detik. Nilai default: 60. Kami menyarankan agar Anda menggunakan nilai default. Jika permintaan berikutnya tidak diajukan dalam periode validitas, data tambahan tidak dapat diambil lagi. Waktu validitas token diperbarui setiap kali Anda mengirim permintaan.

Catatan

Sesi akan kedaluwarsa lebih awal jika skema indeks sumber dan indeks canary dialihkan, terjadi kegagalan pada satu server, atau dilakukan load balancing di sisi server. Dalam kasus tersebut, Anda harus membuat ulang sesi.

columns_to_get

Nama kolom yang ingin Anda kembalikan untuk setiap baris yang memenuhi kondisi kueri.

Untuk mengembalikan semua kolom dalam indeks pencarian, atur parameter return_type ke RETURN_ALL_FROM_INDEX.

session_id

ID sesi tugas parallel scan. Anda dapat memanggil operasi ComputeSplits untuk membuat sesi dan mengetahui jumlah maksimum tugas parallel scan yang didukung oleh permintaan parallel scan.

Contoh

Kode contoh berikut menunjukkan cara menggunakan fitur parallel scan pada indeks pencarian:

// 1. Dapatkan 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. Tentukan kondisi kueri.
$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. Buat permintaan ParallelScan.
$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 tidak diizinkan dalam parallel_scan, gunakan 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. Ekspor data menggunakan pagination berbasis token. Pada contoh ini, hanya jumlah total baris yang dikumpulkan.
$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;