Pola peta panas untuk kunci indeks

Halaman ini menampilkan contoh pola yang mungkin Anda lihat di peta panas Key Visualizer. Pola ini dapat membantu Anda memecahkan masalah performa tertentu.

Penggunaan yang didistribusikan secara merata

Peta panas yang menampilkan operasi baca dan tulis yang terdistribusi secara merata

Jika peta panas menampilkan perpaduan halus antara warna gelap dan cerah, maka operasi tulis/hapus untuk kunci indeks akan didistribusikan secara merata di seluruh database. Peta panas ini kemungkinan mewakili pola penggunaan yang efektif untuk mode Datastore.

Indeks pada kunci berurutan

Peta panas dengan satu garis diagonal yang terang dapat menunjukkan indeks yang ada di kunci yang meningkat atau menurun secara ketat, seperti stempel waktu. Indeks pada kunci berurutan tidak direkomendasikan dan dapat menimbulkan hotspot. Saat melakukan hotspotting, Anda mungkin mengamati latensi peningkatan yang terkait.

Beberapa contoh hotspot umum pada indeks adalah sebagai berikut:

Penggunaan hotspot karena stempel waktu yang meningkat

Peta panas yang menampilkan hotspotting karena stempel waktu yang meningkat

Dalam contoh ini, peta panas dengan satu garis diagonal terang dapat menunjukkan database yang menggunakan operasi tulis/hapus indeks yang meningkat atau menurun secara ketat pada properti stempel waktu.

Hotspotting karena peningkatan nama properti

Peta panas yang menampilkan hotspotting karena peningkatan properti

Dalam contoh ini, peta panas dengan satu garis diagonal terang dapat menunjukkan database yang menggunakan operasi tulis/hapus indeks yang benar-benar meningkat atau menurun pada properti inkremental, seperti nomor invoice yang dibuat secara otomatis.

Untuk mengidentifikasi masalah hotspotting, gunakan alat Key Visualizer dan pahami struktur kunci indeks untuk menentukan indeks mana yang menyebabkan masalah dan mengecualikan indeks tersebut dengan praktik terbaik.

Memahami struktur kunci indeks

Sebelum memahami struktur kunci indeks yang Anda lihat di alat Key Visualizer, pelajari indeks dalam mode Datastore.

Kode berikut menunjukkan contoh format kunci indeks yang Anda lihat saat mengarahkan kursor ke rentang kunci yang terpengaruh pada peta panas.

NAMESPACE: NS KIND: Users
PROPERTIES: (Timestamp: DESC, Name: DESC)
ANCESTOR: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),`UserList`,1)
VALUES: (16500000000000001,'Alice')
ENTITY:KEY(PROJECT('PROJECT_ID'),NAMESPACE(''),`UserList`,1,`User`,5000000000000001)

Dengan keterangan:

  • NAMESPACE: namespace entity.
  • JENIS: jenis entitas yang mengategorikan entitas.
  • PROPERTI: properti yang terkait dengan entity. Properti pengurutan __key__ hanya ditampilkan untuk definisi indeks yang mengubah pengurutan default.
  • ANCESTOR: jalur ancestor opsional untuk menemukan entity dalam hierarki database.
  • VALUES: nilai setiap properti.
  • ENTITY: ID entitas yang diperbarui dalam operasi.

Dari contoh sebelumnya, identifikasi properti dari nilai PROPERTI untuk menemukan indeks yang terpengaruh.

Untuk menemukan indeks, selesaikan langkah-langkah berikut:

  1. Buka halaman Indeks mode Datastore di Konsol Google Cloud.

    Buka Indeks mode Datastore

    Anda dapat mengidentifikasi jenis indeks dengan menganalisis kolom PROPERTI. Lihat contoh kunci indeks untuk mengetahui informasi selengkapnya.

  2. Klik Filter, pilih Kolom, lalu masukkan nama kolom.

    Gunakan operator OR untuk menambahkan lebih banyak properti jika menggunakan indeks komposit.

Setelah mengidentifikasi indeks yang menyebabkan masalah, Anda dapat menggunakan solusi berikut:

  • Indeks bawaan: Mengecualikan properti sedemikian rupa sehingga indeks tidak mempertahankan entri indeks untuk properti tersebut. Lihat Properti yang dikecualikan untuk informasi selengkapnya.
  • Indeks komposit: Ubah indeks dalam file index.yaml untuk memastikan kolom yang nilainya meningkat atau menurun secara monoton tidak dipilih sebagai kolom pertama untuk pengindeksan, atau hapus indeks. Lihat Tentang index.yaml untuk informasi selengkapnya.

Contoh entri kunci indeks pada peta panas

Jenis Deskripsi Contoh
Entri indeks bawaan Entri indeks untuk indeks properti tunggal di properti Timestamp, dalam urutan menurun untuk namespace NS. NAMESPACE: NS
KIND: Users
PROPERTIES: (Timestamp: DESC)
ANCESTOR: NONE
VALUES: (16500000000000001)
ENTITY: KEY(PROJECT('PROJECT_ID'), NAMESPACE('NS'),Pengguna, 5000000000000001)
Entri indeks bawaan Entri indeks untuk indeks properti tunggal dalam namespace default. NAMESPACE: ' '
KIND: Users
PROPERTIES: (Timestamp: DESC)
ANCESTOR: NONE
VALUES: (16500000000000001)
ENTITY: KEY(PROJECT('PROJECT_ID'), NAMESPACE('NS'),Pengguna, 5000000000000001)
Entri indeks komposit Entri indeks untuk indeks komposit di properti Timestamp dan properti Name dalam urutan menurun tanpa mengaktifkan ancestor. NAMESPACE: NS
KIND: Users
PROPERTIES: (Timestamp: DESC, Name: DESC)
ANCESTOR: NONE
VALUES: (16500000000000001, 'Alice')
ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),Pengguna,5000000000000001)
Entri indeks komposit dengan ancestor Entri indeks untuk indeks komposit di properti Timestamp dalam urutan menurun dan properti Name dalam urutan menurun dengan ancestor diaktifkan. NAMESPACE: NS
KIND: Users
PROPERTIES: (Timestamp: DESC, Name: ASC)
ANCESTOR: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),Daftar Pengguna,1,Pengguna,5000000000000001
VALUES: (16500000000000001, 'Alice')
ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),Daftar Pengguna,1,Pengguna,5000000000000001)
Entri indeks komposit dengan __key__ Entri indeks untuk indeks komposit di properti Timestamp dalam urutan menaik dan __key__ dalam urutan menurun tanpa mengaktifkan ancestor. Anda dapat menggunakan __key__ sebagai properti akhir dalam definisi indeks untuk mengubah urutan default hasil. NAMESPACE: NS
KIND: Users
PROPERTIES: (Timestamp: ASC, __key__ DESC)
ANCESTOR: NONE
VALUES: (16500000000000001)
ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),Daftar Pengguna,1,Pengguna,5000000000000001)

Langkah selanjutnya