全部产品
Search
文档中心

Tablestore:Apa yang harus saya lakukan jika ada latensi data saat saya menanyakan data dengan menjalankan pernyataan SQL?

更新时间:Jul 02, 2025

Deskripsi masalah

Setelah data baru ditambahkan atau diperbarui dalam tabel data, muncul latensi sehingga data terbaru tidak dapat diperoleh saat menjalankan pernyataan SQL.

Penyebab yang mungkin

Jika Anda membuat indeks pencarian untuk tabel data, mesin SQL secara otomatis memilih indeks tersebut untuk menanyakan data jika semua kolom yang terlibat dalam pernyataan SQL tersedia di indeks pencarian. Untuk informasi lebih lanjut, lihat Kebijakan Pemilihan Indeks.

Latensi sinkronisasi pada indeks pencarian dapat menyebabkan data terbaru tidak dikembalikan meskipun data telah ditulis ke tabel data.

Solusi

  • Tentukan Secara Eksplisit Tidak Menggunakan Indeks Pencarian

    Saat menjalankan pernyataan SQL untuk menanyakan data, sertakan perintah use index() untuk menonaktifkan penggunaan indeks pencarian.

    Sebagai contoh, tabel data bernama exampletable berisi kolom pk, name, dan context. Indeks pencarian mencakup kolom-kolom ini. Anda dapat menjalankan pernyataan SQL berikut tanpa menggunakan indeks pencarian:

    SELECT pk,name,context FROM exampletable use index();  -- Tentukan bahwa indeks pencarian tidak digunakan sebagai prioritas saat Anda menanyakan data dari tabel data.
  • Gunakan Operasi Pembacaan Data untuk Menanyakan Data

    Untuk membaca data berdasarkan kunci utama, gunakan operasi pembacaan data. Tablestore menyediakan operasi GetRow untuk membaca satu baris data serta BatchGetRow dan GetRange untuk membaca beberapa baris data secara batch. Untuk informasi lebih lanjut, lihat Baca Data.

    Operasi

    Deskripsi

    Skenario

    GetRow

    Membaca data dalam satu baris berdasarkan kunci utama yang ditentukan.

    Operasi ini cocok untuk skenario di mana nilai semua kolom kunci utama dari baris yang ingin Anda baca dapat ditentukan dan jumlah baris yang ingin Anda baca sedikit.

    BatchGetRow

    Membaca beberapa baris data dari satu atau lebih tabel sekaligus.

    Operasi ini cocok untuk skenario di mana nilai semua kolom kunci utama dari baris yang ingin Anda baca dapat ditentukan dan jumlah baris yang ingin Anda baca besar atau Anda ingin membaca data dari beberapa tabel.

    GetRange

    Membaca data yang nilainya kunci utamanya berada dalam rentang tertentu.

    Operasi ini cocok untuk skenario di mana rentang nilai kunci utama atau awalan nilai kunci utama dari baris yang ingin Anda baca dapat ditentukan.

  • Gunakan Indeks Sekunder

    Penting

    Penggunaan fitur indeks sekunder akan dikenakan biaya penyimpanan. Penulisan data ke tabel juga memerlukan sumber daya komputasi untuk membuat indeks pencarian dan membaca data.

    Anda dapat menggunakan indeks sekunder untuk menanyakan data dengan menjalankan pernyataan SQL. Ikuti langkah-langkah berikut:

    1. Buat indeks sekunder untuk tabel data. Untuk informasi lebih lanjut, lihat Gunakan Indeks Sekunder di Konsol Tablestore.

      Disarankan untuk membuat indeks sekunder lokal untuk memastikan konsistensi kuat.

    2. Jalankan pernyataan SQL untuk menanyakan data berdasarkan indeks sekunder menggunakan salah satu metode berikut:

      Sebagai contoh, tabel data bernama exampletable berisi kolom pk, name, dan context. Indeks sekunder bernama exampletable_index dibuat untuk tabel ini dan mencakup kolom-kolom tersebut.

      • Metode 1: Tentukan Secara Eksplisit Indeks Sekunder untuk Menanyakan Data

        Jika tidak menentukan indeks secara eksplisit, Tablestore secara otomatis memilih indeks berdasarkan kebijakan pemilihan indeks.

        Jalankan pernyataan SQL berikut dengan menggunakan perintah use index() untuk menentukan indeks sekunder:

        SELECT pk,name,context FROM exampletable use index(exampletable_index);  -- Tentukan secara eksplisit bahwa indeks sekunder digunakan untuk menanyakan data dari tabel data.
      • Metode 2: Gunakan Tabel Pemetaan untuk Indeks Sekunder

        1. Jalankan pernyataan CREATE TABLE untuk membuat tabel pemetaan bernama exampletable_index. Untuk informasi lebih lanjut, lihat Buat Tabel Pemetaan untuk Tabel.

        2. Jalankan pernyataan SQL SELECT berikut untuk menanyakan data menggunakan tabel pemetaan:

          SELECT pk,name,context FROM exampletable_index;  -- Menanyakan data dengan menggunakan tabel pemetaan yang dibuat untuk indeks sekunder.