Saya telah mewarisi server MongoDB besar di tempat kerja, dan telah ditugaskan untuk mencari tahu mengapa permintaan berjalan sangat lambat. DB berisi berton-ton catatan (pada urutan 10 ^ 9) dan memakan waktu sekitar 300 GiB. Pada awalnya, saya berpikir bahwa jumlah catatan mentah mungkin adalah penyebabnya, jadi saya membuat indeks pada bidang yang sesuai. Itu sangat membantu untuk kueri yang mencari kriteria yang ada di DB, tetapi akan memakan waktu antara 80-90 menit untuk kueri di mana tidak akan ada kecocokan. Ada ide tentang cara mengatasinya?
9
Jawaban:
Tampaknya Anda kehilangan indeks penting, terutama karena kueri tanpa kecocokan menghabiskan waktu lebih lama dari kueri dengan kecocokan. Jenis pertanyaan apa itu? Mungkin Anda membutuhkan indeks gabungan? Apakah Anda menggunakan
where
sebagai bagian dari permintaan?Saya bukan ahli MongoDB, tetapi 80-90 menit benar-benar abnormal. Saya tidak tahu seperti apa MongoDB "terdengar" bagi Arenstar, tetapi telah ditunjukkan untuk menangani milyaran dokumen (terabyte data) .
sumber
Ini mungkin sudah terlambat untuk jawaban, tapi saya pikir itu layak disebut. Ada alat seperti mongostat yang dapat digunakan untuk melihat apa yang sebenarnya terjadi. Terlalu banyak indeks yang terlewatkan, terlalu banyak kesalahan halaman. Jika Anda menjalankan operasi baca dan tulis secara simultan, maka Anda juga harus mencari persentase kunci. 300 GB bukanlah jumlah besar untuk ditangani mongodb. Itu bisa dengan mudah melampaui hal itu.
Perintah bermanfaat lainnya:
sumber
Lihatlah Halaman Profiler MongoDB Database , khususnya bagian tentang Mengoptimalkan Kinerja Kueri .
sumber
MongoDb adalah webscale .. Maaf harus mengatakan itu ..
Tidak ada kecocokan yang mungkin memakan waktu cukup lama berdasarkan pada mungkin pemindaian jangkauan ???
Saya akan memecahnya .. Mongo tidak terdengar seperti DB untuk menangani 300GB, dan mungkin belum cukup dewasa untuk belum tahu bagaimana kerjanya dengan sejumlah besar data ..
Untuk alasan apa Anda menggunakan Mongo ??
sumber