MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

MongoDB:temukan waktu eksekusi untuk perintah count() pada jutaan catatan dalam koleksi?

MongoDB memiliki profiller bawaan yang dapat Anda aktifkan melalui:

db.setProfilingLevel(2)

Alih-alih '2' Anda dapat memilih opsi apa pun dari daftar di bawah ini:

  • 0 - profiler tidak aktif, tidak mengumpulkan data apa pun. mongod selalu menulis operasi lebih lama dari ambang slowOpThresholdMs ke lognya.
  • 1 - mengumpulkan data profil untuk operasi lambat saja. Secara default, operasi lambat adalah yang lebih lambat dari 100 milidetik. Anda dapat mengubah ambang batas untuk operasi "lambat" dengan opsi runtime slowOpThresholdMs atau perintah setParameter. Lihat bagian Tentukan Ambang Batas untuk Operasi Lambat untuk informasi selengkapnya.
  • 2 - mengumpulkan data pembuatan profil untuk semua operasi basis data.

Dan Anda dapat melihat hasil kueri Anda dengan memeriksa system.profile koleksi di MongoDB..

EDIT:

Jika Anda ingin menguji kinerja, Anda dapat menggunakan cuplikan kode berikut yang dapat dijalankan dari konsol mongo:

> for (var i = 0; i < 10000000; ++i) { db.countTest.insert({a: i % 10}) }
> db.countTest.ensureIndex({a:1})
> db.countTest.count({a: 1})
> db.countTest.count()
> db.countTest.find().count()

Dan kesimpulan saya adalah sebagai berikut:

  1. menambahkan indeks (terlepas dari id) mengembalikan hitungan untuk 10 juta catatan dalam waktu sekitar 170 md
  2. menghitung dengan id (hitung tanpa kueri apa pun) mengembalikan hitungan dalam kurang dari satu milidetik
  3. menghitung berdasarkan id dengan kursor (perhatikan bahwa .find() akan bertindak sebagai kursor di atas koleksi) mengembalikan hitungan dalam kurang dari satu milidetik

Jadi lebih banyak indeks koleksi Anda menjadi semakin lambat kueri Anda . Jika Anda menghitung dengan _id, itu akan instan , jika Anda memiliki indeks gabungan itu akan skala berdasarkan jumlah indeks .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara menangani panggilan balik dalam for loop (Node.JS)

  2. Mongodb - duplikat bidang di $set dan $setOnInsert

  3. Urutkan item berdasarkan nilai mongodb

  4. Ambil data dari koleksi MongoDB ke Swing JTable

  5. Mongodb v4.0 Transaction, MongoError:Nomor transaksi hanya diperbolehkan pada anggota kumpulan replika atau mongo