Menganalisis eksekusi kueri dengan Query Explain
Halaman ini menjelaskan cara mengambil informasi eksekusi kueri saat Anda menjalankan kueri.Menggunakan Query Explain
Anda dapat menggunakan Query Explain untuk memahami cara kueri Anda dijalankan. Hal ini memberikan detail yang dapat Anda gunakan untuk mengoptimalkan kueri.
Anda dapat menggunakan Query Explain melalui konsol Google Cloud atau perintah explain
.
Konsol
Jalankan kueri di Editor Kueri dan buka tab Penjelasan:
-
Di konsol Google Cloud , buka halaman Databases.
- Dari daftar database, pilih database Firestore dengan kompatibilitas MongoDB. Konsol Google Cloud akan membuka Firestore Explorer untuk database tersebut.
- Masukkan kueri di editor kueri, lalu klik Jalankan.
-
Klik tab Penjelasan untuk melihat output analisis kueri.
Mongo API
Penjelasan Kueri di Mongo API didukung melalui perintah
explain
yang dapat Anda gunakan di alat seperti Mongo Shell dan Compass.
Perintah explain
didukung dengan perintah aggregate
,
find
, distinct
, dan count
, misalnya:
db.collection.explain.find(...)
Anda juga dapat menggunakan metode explain()
, misalnya:
db.collection.find({QUERY}).explain()
Batasan
Perhatikan batasan dan perbedaan berikut:-
Query Explain tidak mendukung perintah yang menampilkan kursor. Misalnya, memanggil explain dengan memanggil perintah berikut secara langsung tidak didukung:
db.collection.aggregate(..., explain: true)
Explain Kueri hanya didukung pada perintah
find
,aggregate
,count
, dandistinct
.-
Opsi
Verbosity
danComment
Query Explain tidak didukung melalui MongoDB API. Perilakunya cocok dengan opsiexecutionStats
. OpsiallPlansExecution
danqueryPlanner
diabaikan jika disediakan.
Analisis
Output Query Explain berisi dua komponen utama, yaitu Statistik Ringkasan dan Pohon Eksekusi. Pertimbangkan kueri ini sebagai contoh:
db.order.aggregate(
[
{ "$match": { "user_id": 1234 } },
{ "$sort": { "date_placed": 1 } }
]
)
Statistik Ringkasan
Bagian atas output yang dijelaskan berisi ringkasan statistik eksekusi. Gunakan statistik ini untuk menentukan apakah kueri memiliki latensi atau biaya yang tinggi. Selain itu, tab ini juga berisi statistik memori yang memberi tahu Anda seberapa dekat kueri Anda dengan batas memori.
Billing Metrics:
read units: 1
Execution Metrics:
request peak memory usage: 4.00 KiB (4,096 B)
results returned: 1
Hierarki Eksekusi
Hierarki eksekusi menjelaskan eksekusi kueri sebagai serangkaian node. Node bawah (node daun) mengambil data dari lapisan penyimpanan yang melintasi pohon untuk menghasilkan respons kueri.
Untuk mengetahui detail tentang setiap node eksekusi, lihat Referensi eksekusi.
Untuk mengetahui detail cara menggunakan informasi ini guna mengoptimalkan kueri Anda, lihat Mengoptimalkan eksekusi kueri.
Berikut adalah contoh pohon eksekusi:
• Drop
| fields to drop: [__$3__]
| records returned: 0
|
└── • MajorSort
| fields: [__$3__ ASC]
| peak memory usage: 4.00 KiB (4,096 B)
| records returned: 0
|
└── • Extend
| expressions: [date_placed AS __$3__]
| records returned: 0
|
└── • Drop
| fields to drop: [__key__]
| records returned: 0
|
└── • Extend
| expressions: [_id(__key__) AS __id__]
| records returned: 0
|
└── • Filter
| expression: $eq(user, 1,234)
| records returned: 0
|
└── • TableScan
order: UNDEFINED
properties: * - { __create_time__, __update_time__ }
records returned: 0
records scanned: 0
source: (default)#/**/collection
Langkah berikutnya
- Untuk mempelajari node pohon eksekusi, lihat Referensi eksekusi kueri.
- Untuk mempelajari cara mengoptimalkan kueri, lihat Mengoptimalkan eksekusi kueri.