Mengapa pertanyaan MongoDB saya benar-benar lambat?

9

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?

Tandai LeMoine
sumber
1
Versi MongoDB yang mana? Perangkat keras apa? Berapa banyak pecahan?
Rob Olmos
2
Oh, rasa sakit dari masalah Warisan ...
gWaldo

Jawaban:

5

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 wheresebagai 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) .

Alexei Boronine
sumber
4

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:

    db.stats();
    db.currentOp();
awsiv
sumber
-5

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 ??

Arenstar
sumber
Itulah yang membuat orang sebelum saya (yang pergi) merasa nyaman menggunakan dan telah mengimplementasikannya, sayangnya. Sisi baiknya, kami terbuka untuk saran DB baru.
Mark LeMoine
Data apa yang Anda simpan ??? ini semua tentang struktur data Anda
Arenstar
Ini catatan file log kecil, yang masing-masing berisi ID (int), nama server (string), pesan payload (string), tanggal, dan alamat IP. Saat ini saya memiliki indeks pada ID dan nama server.
Mark LeMoine
8
ada banyak perusahaan di luar sana menggunakan mongodb. 300g dapat dilakukan, tanyakan pada orang-orang di foursquare, wordnik dan boxedice yang memiliki banyak data. jika ada, indeksnya salah. Saya akan memeriksa mereka sebelum Anda merobek DB dan menggantinya dengan yang lain.
luckytaxi
1
@Arenstar: Apa artinya webscale? Dan apa bedanya dengan skala lain?
Joshua Partogi