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
exampletableberisi kolompk,name, dancontext. 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
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.
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.
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
PentingPenggunaan 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:
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.
Jalankan pernyataan SQL untuk menanyakan data berdasarkan indeks sekunder menggunakan salah satu metode berikut:
Sebagai contoh, tabel data bernama
exampletableberisi kolompk,name, dancontext. Indeks sekunder bernamaexampletable_indexdibuat 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
Jalankan pernyataan
CREATE TABLEuntuk membuat tabel pemetaan bernamaexampletable_index. Untuk informasi lebih lanjut, lihat Buat Tabel Pemetaan untuk Tabel.Jalankan pernyataan SQL
SELECTberikut untuk menanyakan data menggunakan tabel pemetaan:SELECT pk,name,context FROM exampletable_index; -- Menanyakan data dengan menggunakan tabel pemetaan yang dibuat untuk indeks sekunder.