Latest web development tutorials

analisis query MongoDB

MongoDB query dan analisis untuk memastikan efektivitas indeks diusulkan kami adalah alat penting untuk query analisis kinerja.

MongoDB analisis query fungsi umum digunakan adalah: menjelaskan () dan petunjuk ().


Gunakan menjelaskan ()

menjelaskan operasi menyediakan informasi query, menggunakan indeks dan permintaan statistik. Membantu kita untuk mengoptimalkan indeks.

Selanjutnya kita membuat jender indeks dan pengguna user_name dalam koleksi:

>db.users.ensureIndex({gender:1,user_name:1})
</p>
<p>现在在查询语句中使用 explain :</p>
<pre>
>db.users.find({gender:"M"},{user_name:1,_id:0}).explain()

Atas menjelaskan () permintaan mengembalikan hasil sebagai berikut:

{
   "cursor" : "BtreeCursor gender_1_user_name_1",
   "isMultiKey" : false,
   "n" : 1,
   "nscannedObjects" : 0,
   "nscanned" : 1,
   "nscannedObjectsAllPlans" : 0,
   "nscannedAllPlans" : 1,
   "scanAndOrder" : false,
   "indexOnly" : true,
   "nYields" : 0,
   "nChunkSkips" : 0,
   "millis" : 0,
   "indexBounds" : {
      "gender" : [
         [
            "M",
            "M"
         ]
      ],
      "user_name" : [
         [
            {
               "$minElement" : 1
            },
            {
               "$maxElement" : 1
            }
         ]
      ]
   }
}

Sekarang, kita melihat bidang hasil set:

  • indexOnly: bidang benar, bahwa kita menggunakan indeks.
  • kursor: Karena query ini menggunakan indeks, MongoDB indeks disimpan dalam struktur B-tree, sehingga juga digunakan jenis BtreeCursor kursor. Jika Anda tidak menggunakan indeks, jenis kursor adalah BasicCursor. Kunci ini akan memberikan nama indeks yang Anda gunakan, Anda dapat melihat dengan nama system.indexes ditetapkan dalam database saat ini (dibuat secara otomatis, karena informasi indeks disimpan, ini akan disebutkan sedikit) untuk mendapatkan informasi lebih lanjut Indeks .
  • n: jumlah dokumen yang dikembalikan oleh query saat ini.
  • nscanned / nscannedObjects: Penyelidikan menunjukkan bahwa jumlah total arus dari dokumen yang dipindai dalam koleksi, tujuan kami adalah untuk membuat nilai ini dan mengembalikan sejumlah dokumen yang lebih dekat lebih baik.
  • millis: waktu saat ini, jumlah milidetik dibutuhkan oleh query.
  • indexBounds: saat penggunaan khusus indeks query.

Gunakan petunjuk ()

Sementara MongoDB query optimizer umumnya bekerja sangat baik, tetapi Anda juga dapat menggunakan petunjuk untuk memaksa MongoDB menggunakan indeks tertentu.

Pendekatan ini akan meningkatkan kinerja dalam beberapa kasus. Indeks koleksi dan mengeksekusi query lebih dari satu bidang (beberapa bidang telah diindeks).

Contoh menggunakan query berikut menentukan bidang gender dan indeks user_name untuk query:

>db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1})

Anda dapat menggunakan fungsi menjelaskan () untuk mengurai pertanyaan di atas:

>db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1}).explain()