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
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 Firestore.
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
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 nama kolom stempel waktu.
{i>Hotspotting<i} karena meningkatnya nama kolom
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 kolom 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 di Firestore.
Kode berikut menunjukkan contoh format kunci indeks yang Anda lihat saat mengarahkan kursor ke rentang kunci yang terpengaruh pada peta panas.
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users
PROPERTIES: (Timestamp: DESC)
VALUES: (16500000000000001)
DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001
Dengan keterangan:
- KOLEKSI: lokasi koleksi di database Anda. Berdasarkan cakupan, lokasi ini dapat berupa jalur koleksi untuk cakupan koleksi atau nama koleksi untuk cakupan grup koleksi.
- PROPERTI: kolom yang digunakan untuk membuat indeks. Properti pengurutan
__name__
hanya ditampilkan untuk definisi indeks yang mengubah pengurutan default. - VALUES: nilai setiap properti.
- DOCUMENT: ID dokumen yang diperbarui dalam operasi.
Dari contoh sebelumnya, identifikasi kolom dari nilai PROPERTI untuk menemukan indeks yang terpengaruh.
Untuk menemukan indeks, selesaikan langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Databases.
Pilih database yang diperlukan dari daftar database.
Pada menu navigasi, klik Indeks.
Buka tab Gabungan atau Kolom Tunggal.
Anda dapat mengidentifikasi jenis indeks dengan menganalisis kolom PROPERTI. Lihat contoh kunci indeks untuk informasi selengkapnya.
Klik Filter, pilih Kolom, lalu masukkan nama kolom.
Gunakan operator OR untuk menambahkan lebih banyak kolom jika menggunakan indeks komposit.
Setelah mengidentifikasi indeks yang menyebabkan masalah, Anda dapat menggunakan solusi berikut:
Indeks komposit: Ubah indeks untuk memastikan kolom yang nilainya meningkat atau menurun secara monoton tidak dipilih sebagai kolom pertama untuk pengindeksan, atau menghapus indeks.
Indeks kolom tunggal: Tambahkan pengecualian untuk kolom tersebut dan urutan pengurutan yang ingin Anda kecualikan. Lihat Menambahkan pengecualian satu kolom untuk informasi selengkapnya.
Contoh entri kunci indeks pada peta panas
Jenis | Deskripsi | Contoh |
---|---|---|
Cakupan koleksi Indeks kolom tunggal ASC, DESC | Firestore membuat indeks dengan cakupan koleksi secara default. Entri indeks untuk Indeks kolom tunggal di kolom Timestamp , dalam urutan menurun untuk dokumen Users/5000000000000001 . |
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users PROPERTIES: (Timestamp: DESC) VALUES: (16500000000000001) DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001 |
Indeks kolom tunggal cakupan koleksi untuk kolom array | Untuk setiap kolom array dalam dokumen, Firestore membuat dan mempertahankan indeks array-contains dengan cakupan koleksi. Entri indeks untuk indeks kolom tunggal dalam mode array-contains yang akan dibuat saat kolom Country: [USA, Japan] ditambahkan ke dokumen. Perhatikan bahwa indeks ASC,DESC juga akan dibuat secara {i>default<i} untuk bidang ini. Contoh ini menunjukkan indeks ASC untuk kolom Country . |
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users PROPERTIES:(Country: ASC) VALUES:([USA, Japan]) DOCUMENT:(projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001) |
Indeks kolom tunggal grup koleksi ASC, DESC, ARRAY | Grup koleksi mencakup semua koleksi dengan ID koleksi yang sama. Entri indeks untuk Indeks kolom tunggal grup koleksi di kolom Timestamp , dalam urutan menurun. |
COLLECTION GROUP: Users PROPERTIES: (Timestamp: DESC) VALUES: (16500000000000001L) DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001 |
Indeks kolom tunggal grup koleksi ASC, DESC, ARRAY | Entri indeks untuk Indeks kolom tunggal grup koleksi di kolom Country dalam mode array-contains |
COLLECTION GROUP: Users PROPERTIES: (Country: ARRAY ASC) VALUES: (USA) DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001 |
Entri indeks komposit koleksi dengan properti ASC, ASC, ARRAY | Entri indeks komposit dengan induk dibuat saat dokumen bertingkat dibuat dengan definisi indeks cakupan koleksi. Entri indeks untuk indeks komposit dengan kolom Timestamp dan Name dalam urutan menaik, dan Country dalam mode array-contains . |
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users PROPERTIES: (Timestamp: ASC, Name: ASC,Country: ARRAY) VALUES: (16500000000000001L, 'Alice', 'USA') DOCUMENT: (projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001) |
Entri indeks komposit cakupan grup koleksi dengan properti ASC dan ASC | Entri indeks untuk indeks komposit di kolom Timestamp , dalam urutan menaik dan kolom Name dalam urutan menaik |
COLLECTION GROUP: Users PROPERTIES: (Timestamp: ASC, Name: ASC) VALUES: (16500000000000001L, 'Alice') DOCUMENT: (projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001) |
Entri Indeks komposit cakupan koleksi dengan properti ASC dan __name__ |
Entri indeks untuk Indeks komposit di kolom Timestamp dalam urutan menaik dan dengan __name__ mengurutkan dalam urutan menurun untuk dokumen Users/5000000000000001 . Anda dapat menggunakan __name__ sebagai kolom terakhir dalam definisi indeks untuk mengubah urutan hasil default. |
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users PROPERTIES: (Timestamp: ASC, __name__ DESC) VALUES: (16500000000000001) DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001 |
Langkah selanjutnya
- Pelajari cara mulai menggunakan Key Visualizer.
- Cari tahu cara menjelajahi peta panas secara mendetail.
- Baca metrik yang dapat Anda lihat di peta panas.