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 menunjukkan campuran warna gelap dan terang yang terperinci, operasi tulis/hapus untuk kunci indeks 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 terang dapat menunjukkan indeks yang berada pada kunci yang meningkat atau menurun secara ketat, seperti stempel waktu. Indeks pada kunci berurutan tidak direkomendasikan dan dapat membuat hotspot. Saat menggunakan hotspot, Anda mungkin melihat peningkatan latensi yang sesuai.
Beberapa contoh hotspot umum di indeks adalah sebagai berikut:
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.
Hotspot karena nama kolom yang bertambah
Dalam contoh ini, peta panas dengan satu garis diagonal terang dapat menunjukkan database yang menggunakan operasi operasi tulis/hapus indeks yang meningkat atau menurun secara ketat 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:
- COLLECTION: lokasi koleksi di database Anda. Berdasarkan cakupan, ini dapat berupa jalur koleksi untuk cakupan koleksi atau nama koleksi untuk cakupan grup koleksi.
- PROPERTIES: 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 PROPERTIES 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.
Di menu navigasi, klik Indexes.
Buka tab Gabungan atau Kolom Tunggal.
Anda dapat mengidentifikasi jenis indeks dengan menganalisis kolom PROPERTIES. Lihat contoh kunci indeks untuk informasi selengkapnya.
Klik Filter, pilih Kolom, lalu masukkan nama kolom.
Gunakan operator OR untuk menambahkan lebih banyak kolom jika indeks komposit.
Setelah mengidentifikasi indeks yang menyebabkan masalah, Anda dapat menggunakan solusi berikut:
Indeks komposit: Ubah indeks untuk memastikan bahwa kolom yang nilainya meningkat atau menurun secara monoton tidak dipilih sebagai kolom pertama untuk pengindeksan, atau hapus indeks.
Indeks kolom tunggal: Tambahkan pengecualian untuk kolom dan urutan pengurutan yang ingin Anda kecualikan. Lihat Menambahkan pengecualian satu kolom untuk mengetahui informasi selengkapnya.
Contoh entri kunci indeks pada peta panas
Jenis | Deskripsi | Contoh |
---|---|---|
Indeks kolom tunggal cakupan koleksi 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 mode array-contains yang akan dibuat saat kolom Country: [USA, Japan] ditambahkan ke dokumen. Perhatikan bahwa indeks ASC,DESC juga akan dibuat secara default untuk kolom 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 pada 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 gabungan 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 gabungan cakupan grup koleksi dengan properti ASC, ASC | Entri indeks untuk indeks komposit pada 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 gabungan cakupan koleksi dengan properti ASC dan __name__ |
Entri indeks untuk Indeks komposit di kolom Timestamp dalam urutan menaik dan dengan pengurutan __name__ dalam urutan menurun untuk dokumen Users/5000000000000001 . Anda dapat menggunakan __name__ sebagai kolom terakhir dalam definisi indeks untuk mengubah urutan default hasil. |
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 memulai Key Visualizer.
- Cari tahu cara menjelajahi peta panas secara mendetail.
- Baca tentang metrik yang dapat Anda lihat di peta panas.