หน้านี้อธิบายวิธีดึงข้อมูลการดำเนินการค้นหาเมื่อคุณดำเนินการค้นหา
ใช้คำอธิบายการค้นหา
คุณสามารถใช้คำอธิบายการค้นหาเพื่อทำความเข้าใจวิธีดำเนินการกับการค้นหา ซึ่งจะให้รายละเอียดที่คุณใช้เพื่อเพิ่มประสิทธิภาพการค้นหาได้
คุณสามารถใช้คำสั่งอธิบายการค้นหาผ่านคอนโซล Google Cloud หรือexplainได้
คอนโซล
เรียกใช้การค้นหาในเครื่องมือแก้ไขการค้นหา แล้วเปิดแท็บคำอธิบาย
-
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
- เลือกCloud Firestoreฐานข้อมูลจากรายการฐานข้อมูล คอนโซล Google Cloud จะเปิด Firestore Explorer สำหรับฐานข้อมูลนั้น
- ป้อนการค้นหาในเครื่องมือแก้ไขการค้นหา แล้วคลิกเรียกใช้
-
คลิกแท็บคำอธิบายเพื่อดูเอาต์พุตการวิเคราะห์การค้นหา
MongoDB API
ระบบรองรับการอธิบายการค้นหาใน MongoDB API ผ่านคำสั่ง
explain
ซึ่งคุณใช้ได้ในเครื่องมือต่างๆ เช่น Mongo Shell และ Compass
คำสั่ง explain ใช้ได้กับคำสั่ง aggregate,
find, distinct และ count
เช่น
db.collection.explain('executionStats').find(...)
คุณยังใช้วิธี explain() ได้ด้วย เช่น
db.collection.find({QUERY}).explain('executionStats')ข้อจำกัด
ข้อจำกัดและความแตกต่างมีดังนี้-
Query Explain ไม่รองรับคำสั่งที่แสดงผลเคอร์เซอร์ ตัวอย่างเช่น ระบบไม่รองรับการเรียกใช้คำอธิบายโดยการเรียกใช้คำสั่งต่อไปนี้โดยตรง
db.collection.aggregate(..., explain: true)
คำอธิบายการค้นหาใช้ได้กับคำสั่ง
find,aggregate,count,distinct,update,deleteและfindAndModifyเท่านั้น-
Query Explain รองรับโหมด Verbosity
executionStats,allPlansExecutionและqueryPlannerqueryPlanner: แสดงเฉพาะแผนการดำเนินการโดยไม่ต้องดำเนินการค้นหาexecutionStatsและallPlansExecution: แสดงแผนการดำเนินการพร้อมกับการเรียกเก็บเงิน หน่วยความจำ และสถิติการดำเนินการ
หากไม่ได้ระบุโหมด Verbosity ไว้ Shell จะใช้
queryPlannerเป็นค่าเริ่มต้น หากต้องการดูสถิติการดำเนินการทั้งหมด คุณต้องระบุโหมดความละเอียดexecutionStatsหรือallPlansExecution
การวิเคราะห์
เอาต์พุตของ Query Explain มีองค์ประกอบหลัก 2 อย่าง ได้แก่ สถิติสรุป และแผนการดำเนินการ ลองดูตัวอย่างการค้นหานี้
db.orders.aggregate(
[
{ "$match": { "user_id": 1234 } },
{ "$sort": { "date_placed": 1 } }
]
)
สถิติสรุป
ส่วนบนของเอาต์พุตที่อธิบายจะมีสรุปสถิติการดำเนินการ ใช้สถิติเหล่านี้เพื่อพิจารณาว่าคําค้นหามีเวลาในการตอบสนองหรือค่าใช้จ่ายสูงหรือไม่ นอกจากนี้ ยังมีสถิติหน่วยความจำที่ช่วยให้คุณทราบว่าการค้นหาของคุณใกล้ถึงขีดจำกัดหน่วยความจำมากน้อยเพียงใด
Execution:
results returned: 35
query id: 7e7b37ea1a259d79
request peak memory usage: 45.56 KiB (46,656 B)
data bytes read: 24.58 KiB (25,175 B)
entity row scanned: 265
Billing:
read units: 7
แผนผังการดำเนินการ
แผนผังการดำเนินการจะอธิบายการดำเนินการค้นหาเป็นชุดของโหนด โหนดล่างสุด (โหนดใบ) จะดึงข้อมูลจากเลเยอร์ที่เก็บข้อมูลซึ่งจะเคลื่อนที่ขึ้นไปตามโครงสร้างต้นไม้เพื่อสร้างการตอบกลับคำค้นหา
ดูรายละเอียดเกี่ยวกับโหนดการดำเนินการแต่ละรายการได้ที่ข้อมูลอ้างอิงการดำเนินการ
ดูรายละเอียดเกี่ยวกับวิธีใช้ข้อมูลนี้เพื่อเพิ่มประสิทธิภาพการค้นหาได้ที่เพิ่มประสิทธิภาพการดำเนินการค้นหา
ตัวอย่างแผนผังการดำเนินการมีดังนี้
Execution:
results returned: 35
query id: 7e7b37ea1a259d79
request peak memory usage: 45.56 KiB (46,656 B)
data bytes read: 24.58 KiB (25,175 B)
entity row scanned: 265
Billing:
read units: 7
Tree:
• Compute
| $out_1: map_set($record_1, "__id__", $__id___1, "__key__", unset)
| is query result: true
|
| Execution:
| records returned: 35
| latency: 204.87 ms (local 7.64 ms)
|
└── • Compute
| $__id___1: _id($__key___2)
|
| Execution:
| records returned: 35
| latency: 197.23 ms (local 2.04 ms)
|
└── • MajorSort
| fields: [$v_5 ASC]
| output: [$__key___2, $record_1]
|
| Execution:
| records returned: 35
| latency: 195.20 ms (local 28.42 ms)
| peak memory usage: 45.56 KiB (46,656 B)
|
└── • Compute
| $v_5: offset($v_4, 0L)
|
| Execution:
| records returned: 35
| latency: 166.78 ms (local 14.84 ms)
|
└── • Compute
| $v_4: sortPaths(array($date_placed_1), [date_placed ASC])
|
| Execution:
| records returned: 35
| latency: 151.94 ms (local 5.43 ms)
|
└── • TableScan
source: **/orders
order: STABLE
filter: $eq($user_id_1, 1,234)
output bindings: {$__key___2=row().__key__, $date_placed_1=row().date_placed, $record_1=row[* - { __create_time__, __update_time__ }](), $user_id_1=row().user_id}
output: [$__key___2, $date_placed_1, $record_1]
Execution:
records returned: 35
latency: 146.50 ms
data bytes returned: 3.25 KiB (3,325 B)
post-filtered rows: 230
records scanned: 265
data bytes read: 24.58 KiB (25,175 B)
ขั้นตอนถัดไป
- ดูข้อมูลเกี่ยวกับโหนดแผนการดำเนินการได้ที่ข้อมูลอ้างอิงการดำเนินการของคําค้นหา
- ดูวิธีเพิ่มประสิทธิภาพการค้นหาได้ที่เพิ่มประสิทธิภาพการดำเนินการค้นหา