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

Mempercepat agregasi MongoDB

Saat ini ada beberapa batasan dalam apa yang dapat dilakukan kerangka kerja agregasi untuk meningkatkan kinerja kueri Anda, tetapi Anda dapat membantunya dengan cara berikut:

db.my_collection.aggregate([
    { "$sort" : { "LOG_TYPE" : 1 } },
    { "$group" :{ 
        "_id": "$LOG_TYPE",
        "COUNT": { "$sum":1 }
    }}
])

Dengan menambahkan pengurutan pada LOG_TYPE Anda akan "memaksa" pengoptimal untuk menggunakan indeks pada LOG_TYPE untuk mendapatkan dokumen secara berurutan. Ini akan meningkatkan kinerja dalam beberapa cara, tetapi berbeda tergantung pada versi yang digunakan.

Pada data nyata jika Anda memiliki data yang masuk ke tahap $group diurutkan, itu akan meningkatkan efisiensi akumulasi total. Anda dapat melihat paket kueri yang berbeda di mana dengan $sort akan menggunakan indeks kunci pecahan. Peningkatan yang diberikan ini dalam kinerja aktual akan tergantung pada jumlah nilai di setiap "ember" - secara umum LOG_TYPE hanya memiliki tujuh nilai berbeda menjadikannya kunci pecahan yang sangat buruk, tetapi itu berarti bahwa semua kemungkinan kode berikut akan menjadi jauh lebih cepat daripada agregasi yang dioptimalkan:

db.my_collection.distinct("LOG_TYPE").forEach(function(lt) {
   print(db.my_collection.count({"LOG_TYPE":lt});
});


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Peta Kurangi dengan mongo pada dokumen bersarang

  2. kinerja baca/tulis mongodb dan hosting mongo di cloud

  3. Ekspresi MongoDB untuk query array subdocuments

  4. MongoDB tidak dapat memulai server:Mesin penyimpanan default 'wiredTiger' tidak tersedia dengan build mongod ini

  5. Elemen pembaruan Node.js di MongoDB