ตัวแสดงผล PostgreSQL EXPLAIN
แปลง JSON ของ EXPLAIN ANALYZE เป็นแผนผังต้นไม้ที่อ่านง่าย พร้อมเวลา การประมาณ และบัฟเฟอร์
อินพุต
วางเอาต์พุตของ EXPLAIN (FORMAT JSON) รองรับเอาต์พุต psql ที่มีหัวข้อ QUERY PLAN และเครื่องหมาย + ด้วย
สูงสุด 5 MB วิเคราะห์ในเบราว์เซอร์ของคุณและไม่ถูกบันทึก
สรุป
รันคำสั่งด้านล่าง แล้ววางผลลัพธ์ JSON ทางซ้าย หรือโหลดตัวอย่าง
คำสั่งที่แนะนำ
EXPLAIN ( ANALYZE, BUFFERS, SETTINGS, WAL, VERBOSE, FORMAT JSON ) SELECT ...;
ANALYZE จะรันคำสั่งจริง ให้ครอบ INSERT, UPDATE หรือ DELETE ด้วย BEGIN และ ROLLBACK
แผนการทำงาน
กำลังรอแผน EXPLAIN
เครื่องมือที่เกี่ยวข้อง
สิ่งที่แสดง
PostgreSQL EXPLAIN Visualizer แปลงเอาต์พุต EXPLAIN (FORMAT JSON) เป็นแผนผังต้นไม้ที่ยุบได้ ตารางโหนดที่เรียงลำดับได้ และ JSON ต้นฉบับที่จัดรูปแบบแล้ว ส่วนสรุปแสดงเวลาประมวลผลและเวลาวางแผน จำนวนโหนด โหนดที่ช้าที่สุด การประมาณแถวที่คลาดเคลื่อนมากที่สุด และบล็อกที่อ่านจากนอก shared buffers เลือกโหนดใดก็ได้เพื่อดูทุกฟิลด์ที่ PostgreSQL รายงาน
วิธีเก็บแผน
รัน EXPLAIN (ANALYZE, BUFFERS, SETTINGS, WAL, VERBOSE, FORMAT JSON) ตามด้วยคิวรีของคุณ แล้ววางผลลัพธ์ เอาต์พุต psql ที่มีหัวข้อ QUERY PLAN เครื่องหมายต่อบรรทัด + และบรรทัดท้ายที่บอกจำนวนแถวจะถูกทำความสะอาดอัตโนมัติ ANALYZE จะรันคำสั่งจริง จึงควรครอบ INSERT, UPDATE และ DELETE ด้วย BEGIN และ ROLLBACK แผนที่ไม่มี ANALYZE ยังแสดงต้นทุนและการประมาณ แต่จะข้ามข้อสังเกตที่อิงเวลา
วิธีคำนวณตัวชี้วัด
เวลารวมคือเวลาจริงต่อรอบคูณจำนวนรอบ ใต้โหนด Gather จะหารด้วยจำนวนโปรเซสเพื่อไม่ให้นับงานแบบขนานซ้ำ เวลาของตัวเองหักเวลารวมของโหนดลูกและไม่ต่ำกว่าศูนย์ จึงเป็นค่าประมาณสำหรับแผนแบบขนาน CTE, InitPlan และ SubPlan ตัวคูณการประมาณเปรียบเทียบแถวจริงกับแถวที่ประมาณต่อรอบ จำนวนบัฟเฟอร์ใน EXPLAIN รวมโหนดลูกไว้ด้วย ค่าของตัวเองจึงหักของลูกออก ขนาดบล็อกถือว่าเป็นค่าเริ่มต้น 8 kB
ข้อสังเกตและข้อจำกัด
ข้อสังเกตคือสิ่งที่พบพร้อมตัวเลขจากแผน ได้แก่ การประมาณแถวที่คลาดเคลื่อนมาก Nested Loop ที่ฝั่งในทำงานหลายครั้ง การสแกนแบบลำดับที่ทิ้งแถวส่วนใหญ่ การเรียงลำดับและแฮชที่ล้นไปดิสก์ ไฟล์ชั่วคราว การอ่านจากนอก shared buffers และโหนดที่ใช้เวลาประมวลผลเป็นส่วนใหญ่ คำแนะนำมีความระมัดระวังและไม่ระบุดัชนีเฉพาะที่ควรสร้าง เพราะแผนเพียงอย่างเดียวไม่บอกความถี่ของคิวรี ภาระการเขียน หรือการกระจายของข้อมูล
ความเป็นส่วนตัว
แผนอาจเปิดเผยชื่อตาราง ชื่อสคีมา เงื่อนไข และค่าลิเทอรัล แผนถูกแยกวิเคราะห์ในเบราว์เซอร์ของคุณ แผนขนาดใหญ่ทำงานใน Web Worker และจะไม่ถูกอัปโหลด บันทึกล็อก หรือจัดเก็บ ระบบจำเฉพาะมุมมองที่เลือก (ต้นไม้ ตาราง หรือข้อมูลดิบ)
