Menyelesaikan masalah latensi
Halaman ini menunjukkan cara menyelesaikan masalah latensi dengan Firestore.
Latensi
Tabel berikut menjelaskan kemungkinan penyebab peningkatan latensi:
Penyebab latensi | Jenis operasi yang terpengaruh | Resolusi |
---|---|---|
Traffic berkelanjutan yang melebihi aturan 500-50-5. | baca, tulis |
Untuk peningkatan traffic yang cepat, Firestore akan mencoba melakukan penskalaan secara otomatis untuk memenuhi peningkatan permintaan. Saat Firestore diskalasikan, latensi mulai menurun. Hotspot (kecepatan baca, tulis, dan hapus yang tinggi untuk rentang dokumen yang sempit) membatasi kemampuan Firestore untuk diskalakan. Tinjau desain untuk skalabilitas dan identifikasi hotspot di aplikasi Anda. |
Pertentangan, baik dari memperbarui satu dokumen terlalu sering atau dari transaksi. | baca, tulis |
Kurangi kecepatan tulis untuk setiap dokumen. Tinjau persaingan data dalam transaksi dan cara Anda menggunakan transaksi. |
Kueri penggabungan-gabungan lambat. | read |
Misalnya, kueri dengan beberapa filter kesetaraan (== )
tetapi tidak didukung oleh indeks komposit dapat menyebabkan kueri penggabungan-gabungan lambat.
Untuk meningkatkan performa, tambahkan indeks gabungan untuk kueri ini,
lihat Alasan #3 di
Mengapa kueri Firestore saya lambat?
|
Operasi baca besar yang menampilkan banyak dokumen. | read | Gunakan penginstalan nomor halaman untuk memisahkan pembacaan yang besar. |
Terlalu banyak penghapusan baru-baru ini. | read Hal ini sangat memengaruhi operasi yang mencantumkan koleksi dalam database. |
Jika latensi disebabkan oleh terlalu banyak penghapusan baru-baru ini, masalah akan otomatis teratasi setelah beberapa saat. Jika masalah tidak teratasi, hubungi dukungan. |
Menambahkan dan menghapus pemroses terlalu cepat. | kueri pemroses realtime | Lihat praktik terbaik untuk update real-time. |
Memproses dokumen besar atau kueri dengan banyak hasil. | kueri pemroses realtime | Lihat praktik terbaik untuk update real-time |
Fanout indeks, terutama untuk kolom array dan kolom peta. | write | Tinjau penggunaan kolom array dan kolom peta Anda. Untuk kolom peta, Anda dapat menonaktifkan pengindeksan subkolom. Anda juga dapat menggunakan pengecualian tingkat koleksi. |
Operasi tulis besar dan operasi tulis batch. | write |
Coba kurangi jumlah operasi tulis dalam setiap operasi tulis berkelompok. Operasi tulis dalam batch bersifat atomik dan banyak operasi tulis dalam satu batch dapat meningkatkan latensi dan pertentangan. Misalnya, batch operasi tulis sebanyak 10 berperforma lebih baik daripada batch operasi tulis sebanyak 500. Untuk entri data massal yang tidak memerlukan atomitas, gunakan library klien server dengan penulisan individual yang diparalelkan. Operasi tulis batch berperforma lebih baik daripada operasi tulis serial, tetapi tidak lebih baik daripada operasi tulis paralel. |