หน้านี้อธิบายวิธีดึงข้อมูลการดำเนินการค้นหาเมื่อคุณดำเนินการค้นหา
ใช้คำอธิบายการค้นหา
ใช้คำอธิบายการค้นหาเพื่อทำความเข้าใจวิธีดำเนินการค้นหา ซึ่งจะให้รายละเอียดที่คุณใช้เพิ่มประสิทธิภาพการค้นหาได้
คุณใช้คำอธิบายการค้นหาผ่านคอนโซล Firebase หรือใช้ไลบรารีไคลเอ็นต์เซิร์ฟเวอร์ของ Firestore ได้คอนโซล
-
ในคอนโซล Firebase ให้ไปที่ ฐานข้อมูลและพื้นที่เก็บข้อมูล > Firestore > ข้อมูล > เครื่องมือแก้ไขการค้นหา
- เรียกใช้คําค้นหาที่คุณต้องการข้อมูลการดําเนินการ
- คลิกแท็บ Query Explain เพื่อดูเอาต์พุตการวิเคราะห์การค้นหา
Node.js (ผู้ดูแลระบบ)
import { field } from '@google-cloud/firestore/pipelines';
const q = db.pipeline() .collection('/users') .sort(field('status').ascending()) .limit(100); let results; try { results = await q.execute({ explainOptions: { mode: 'analyze', outputFormat: 'text' } }); } catch (error) { console.log(error); } const metrics = results?.explainStats?.text; console.log(metrics);
Java (ผู้ดูแลระบบ)
Pipeline q = db.pipeline() .collection("/users") .sort(field("status").ascending()) .limit(100); PipelineExecuteOptions pipelineOpts = new PipelineExecuteOptions().withExplainOptions( new ExplainOptions().withExecutionMode(ExplainOptions.ExecutionMode.ANALYZE) ); Pipeline.Snapshot result = q.execute(pipelineOpts).get(); String metrics = null; if (result.getExplainStats() != null) { metrics = result.getExplainStats().getText(); System.out.println(metrics); }
โหมดอธิบาย
คุณเรียกใช้การค้นหาด้วย Query Explain ได้หลายโหมด ขึ้นอยู่กับสิ่งที่คุณต้องการแก้ไขข้อบกพร่อง
analyze: วางแผนและดำเนินการค้นหา แสดงข้อมูลเครื่องมือวางแผนการคืนสินค้า สถิติและเมตริกการดำเนินการรันไทม์ พร้อมกับผลลัพธ์ปกติ ที่เกิดจากการค้นหาexplain: วางแผนการค้นหา แต่ไม่ได้ดำเนินการ แสดงข้อมูลเครื่องมือวางแผน แต่ไม่มีสถิติ เมตริก หรือผลลัพธ์รันไทม์ ซึ่งจะเป็นประโยชน์ ในการแก้ไขข้อบกพร่องของลักษณะการทำงานของคําค้นหาโดยไม่ต้องเรียกใช้การดําเนินการที่มีค่าใช้จ่ายสูง
การวิเคราะห์
เอาต์พุตของ Query Explain มีองค์ประกอบหลัก 2 อย่าง ได้แก่ สถิติสรุป และแผนผังการดำเนินการ ลองดูตัวอย่างคำค้นหานี้
db.pipeline().collection('/users').sort(field("status").ascending()).limit(100)
สถิติสรุป
ส่วนบนของเอาต์พุตที่อธิบายจะมีสรุปสถิติการดำเนินการ ใช้สถิติเหล่านี้เพื่อพิจารณาว่าการค้นหามีเวลาในการตอบสนองหรือต้นทุนสูงหรือไม่ นอกจากนี้ ยังมีสถิติหน่วยความจำที่ช่วยให้คุณทราบว่าคําค้นหาของคุณใกล้ถึงขีดจํากัดหน่วยความจำมากน้อยเพียงใด
Execution:
results returned: 2
request peak memory usage: 20.25 KiB (20,736 B)
data bytes read: 148 B
entity row scanned: 2
Billing:
read units: 1
แผนผังการดำเนินการ
แผนผังการดำเนินการอธิบายการดำเนินการของคําค้นหาเป็นชุดของโหนด โหนดด้านล่าง (โหนดใบ) จะดึงข้อมูลจากเลเยอร์พื้นที่เก็บข้อมูลซึ่งจะเคลื่อนที่ขึ้นไปตามโครงสร้างต้นไม้เพื่อสร้างการตอบกลับการค้นหา
ดูรายละเอียดเกี่ยวกับโหนดการดำเนินการแต่ละรายการได้ที่ข้อมูลอ้างอิงเกี่ยวกับการดำเนินการ
ดูรายละเอียดเกี่ยวกับวิธีใช้ข้อมูลนี้เพื่อเพิ่มประสิทธิภาพการค้นหาได้ที่เพิ่มประสิทธิภาพการดำเนินการค้นหา
ตัวอย่างแผนผังการดำเนินการมีดังนี้
Tree:
• Compute
| $out_1: map_set($record_1, "__name__", $__name___1, "__key__", unset)
| is query result: true
|
| Execution:
| records returned: 2
| latency: 5.96 ms (local <1 ms)
|
└── • Compute
| $__name___1: map_get($record_1, "__key__")
|
| Execution:
| records returned: 2
| latency: 5.88 ms (local <1 ms)
|
└── • MajorSort
| fields: [$v_1 ASC]
| output: [$record_1]
| limit: 100
|
| Execution:
| records returned: 2
| latency: 5.86 ms (local <1 ms)
| peak memory usage: 20.25 KiB (20,736 B)
|
└── • Compute
| $v_1: map_get($record_1, "status")
|
| Execution:
| records returned: 2
| latency: 5.23 ms (local <1 ms)
|
└── • TableScan
source: /users
order: UNDEFINED
properties: *
row range: (-∞..+∞)
output record: $record_1
variables: [$record_1]
Execution:
records returned: 2
latency: 4.68 ms
records scanned: 2
data bytes read: 148 B
ขั้นตอนถัดไป
- ดูข้อมูลเกี่ยวกับโหนดแผนการดำเนินการได้ที่ข้อมูลอ้างอิงการดำเนินการของคําค้นหา
- ดูวิธีเพิ่มประสิทธิภาพการค้นหาได้ที่เพิ่มประสิทธิภาพการดำเนินการค้นหา