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 berupaya menskalakan secara otomatis untuk memenuhi peningkatan permintaan tersebut. Saat Firestore melakukan penskalaan, latensi mulai menurun. Hot-spot (kecepatan baca, tulis, dan hapus yang tinggi untuk rentang dokumen yang sempit) membatasi kemampuan Firestore untuk melakukan penskalaan. Tinjau desain untuk mengatur skala dan identifikasi hot-spot dalam aplikasi Anda. |
Pertentangan, baik karena terlalu sering memperbarui satu dokumen atau dari transaksi. | baca, tulis |
Kurangi kecepatan operasi tulis untuk masing-masing dokumen. Tinjau pertentangan data dalam transaksi dan cara Anda menggunakan transaksi. |
Kueri penggabungan-gabungan yang lambat. | read |
Misalnya, kueri dengan beberapa filter kesetaraan (== ) tetapi tidak didukung oleh indeks komposit dapat menghasilkan kueri penggabungan yang lambat.
Untuk meningkatkan performa, tambahkan indeks komposit untuk kueri ini. Lihat Alasan #3 di bagian Mengapa kueri Firestore saya lambat?
|
Pembacaan besar yang menampilkan banyak dokumen. | read | Gunakan penomoran halaman untuk memisahkan pembacaan besar. |
Terlalu banyak penghapusan baru-baru ini. | read Hal ini sangat memengaruhi operasi yang mencantumkan koleksi di database. |
Jika latensi disebabkan oleh terlalu banyak penghapusan baru-baru ini, masalah akan otomatis teratasi setelah beberapa waktu. Jika masalah tidak terselesaikan, hubungi dukungan. |
Menambahkan dan menghapus pemroses terlalu cepat. | kueri pemroses realtime | Lihat praktik terbaik untuk update realtime. |
Memproses dokumen besar atau kueri dengan banyak hasil. | kueri pemroses realtime | Lihat praktik terbaik untuk update realtime |
Fanout indeks, terutama untuk kolom array dan kolom peta. | tulis | Tinjau penggunaan kolom array dan kolom peta Anda. Untuk kolom peta, Anda dapat menonaktifkan subkolom dari pengindeksan. Anda juga dapat menggunakan pengecualian tingkat koleksi. |
Operasi tulis besar dan batch operasi tulis. | tulis |
Coba kurangi jumlah operasi tulis di setiap batch operasi tulis. Batch operasi tulis bersifat atomik dan banyak operasi tulis dalam satu batch dapat meningkatkan latensi dan pertentangan. Misalnya, batch yang terdiri dari 10 penulisan memiliki performa lebih baik daripada batch 500 penulisan. Untuk entri data massal yang tidak memerlukan atomicity, gunakan library klien server dengan penulisan individual yang diparalelkan. Batch operasi tulis berperforma lebih baik daripada operasi tulis serial, tetapi tidak lebih baik daripada operasi tulis paralel. |