Catatan :Ini ditulis pada tahun 2013 ketika MongoDB masih sangat muda, tidak memiliki fitur seperti sekarang ini, sementara jawaban ini masih berlaku untuk mmap, tidak untuk teknologi penyimpanan lain yang sekarang diterapkan MongoDB, seperti WiredTiger, atau Percona.
Tempat yang baik untuk mulai memahami dengan tepat apa itu indeks:http://docs.mongodb.org/manual/core/indexes/
Namun, setelah Anda mempelajarinya, Anda akan mengetahui dan mengapa mereka begitu bagus, namun, lanjutkan ke beberapa pertanyaan yang lebih rumit.
Bagaimana kita bisa yakin bahwa data yang kita query akan berasal dari memori atau tidak?
Salah satu caranya adalah dengan melihat yields
bidang pada kueri apa pun explain()
. Ini akan memberi tahu Anda berapa kali pembaca membuka kuncinya karena data tidak ada di RAM.
Cara lain yang lebih mendalam adalah dengan melihat program seperti mongostat dan program sejenis lainnya. Program-program ini akan memberi tahu Anda tentang kesalahan halaman apa (ketika data perlu dimasukkan ke dalam RAM dari disk) yang terjadi pada mongod
Anda .
Saya mengerti bahwa MongoDB menggunakan memori bebas untuk menyimpan data tentang memori yang kosong saat ini, tetapi apakah seseorang dapat menjelaskan lebih lanjut perilaku global?
Ini sebenarnya tidak benar. Lebih mudah untuk mengatakan bahwa MongoDB melakukan ini tetapi pada kenyataannya tidak. Sebenarnya OS dan algoritma pagingnya sendiri, biasanya LRU, yang melakukan ini untuk MongoDB. MongoDB melakukan rencana indeks cache untuk jangka waktu tertentu sehingga tidak harus terus-menerus memeriksa dan menguji indeks.
Dalam hal apa lebih baik menggunakan variabel di server node kami yang menyimpan data daripada mempercayai sistem cache MongoDB?
Tidak yakin bagaimana Anda mengharapkannya bekerja... Maksud saya keduanya melakukan hal yang sangat berbeda dan jika Anda bermaksud membaca data Anda dari MongoDB ke dalam aplikasi Anda saat startup ke var itu, maka saya pasti tidak akan merekomendasikannya.
Selain itu, algoritma OS untuk manajemen memori sangat matang dan cepat, jadi tidak masalah.
Bagaimana Anda menyarankan secara global untuk menggunakan MongoDB untuk lalu lintas besar?
Hmm, ini pertanyaan yang sangat besar. Sungguh saya akan merekomendasikan Anda Google sedikit dalam hal ini, tetapi sebagai dokumentasi menyatakan Anda perlu memastikan set kerja Anda cocok dengan RAM untuk satu.
Berikut adalah titik awal yang baik:Apa artinya memasukkan "working set" ke dalam RAM untuk MongoDB?