Skip to main content
Back to articles

อ่าน EXPLAIN ANALYZE ของ PostgreSQL เพื่อหาคิวรีช้า

EXPLAIN แสดงแผนที่ PostgreSQL เลือก ส่วน ANALYZE รันคิวรีและรายงานเวลาและจำนวนแถวจริง อธิบายหลักการใช้งาน กรณีที่เหมาะ และข้อควรระวังจากเอกสารทางการ

อ่าน EXPLAIN ANALYZE ของ PostgreSQL เพื่อหาคิวรีช้า

EXPLAIN แสดงแผนที่ PostgreSQL เลือก ส่วน ANALYZE รันคิวรีและรายงานเวลาและจำนวนแถวจริง เหมาะกับคิวรีที่ช้าเมื่อข้อมูลโตขึ้นหรือใช้ดัชนีไม่ตรงกับที่คาด บทความนี้สรุปแนวคิดจากเอกสารทางการของ PostgreSQL และจุดที่ควรตรวจเมื่อนำไปใช้จริง

ภาพรวม

PostgreSQL มีทั้งกลไกธุรกรรม การจัดเก็บ และตัววางแผนคิวรี การเปลี่ยนค่าเพียงจุดหนึ่งอาจกระทบประสิทธิภาพ การกู้คืน และความถูกต้องของข้อมูล

หัวข้อนี้ตอบโจทย์เฉพาะเรื่อง: EXPLAIN แสดงแผนที่ PostgreSQL เลือก ส่วน ANALYZE รันคิวรีและรายงานเวลาและจำนวนแถวจริง จึงควรเริ่มจากปัญหาที่ต้องแก้และผลลัพธ์ที่คาดหวัง ไม่ใช่เพียงเปิดฟีเจอร์เพราะมีอยู่ในเครื่องมือ

หลักการทำงาน

เปรียบเทียบแถวที่ประมาณกับแถวที่ได้จริงในแต่ละ node เพื่อดูว่า planner เข้าใจการกระจายข้อมูลตรงหรือไม่

ให้ตรวจทั้งสถานะที่เครื่องมือรายงานและผลลัพธ์ปลายทางที่ผู้ใช้หรือระบบอื่นได้รับ หากสองส่วนไม่ตรงกัน ควรกลับไปตรวจค่าตั้งต้นและขอบเขตที่ฟีเจอร์นี้รับผิดชอบก่อนเปลี่ยนค่าเพิ่มเติม

เหมาะกับงานแบบไหน

เหมาะกับคิวรีที่ช้าเมื่อข้อมูลโตขึ้นหรือใช้ดัชนีไม่ตรงกับที่คาด

ก่อนทดลอง ให้ระบุสิ่งที่จะใช้วัดผล เช่น เวลาตอบสนอง ความพร้อมใช้งาน ความถูกต้องของข้อมูล หรือภาระการดูแล แล้วเทียบกับสภาพเดิม วิธีนี้ช่วยให้รู้ว่าฟีเจอร์แก้ปัญหาจริงหรือย้ายภาระไปอีกจุดหนึ่ง

ขั้นตอนนำไปใช้

  1. เก็บค่าปัจจุบันและตัวเลขก่อนเปลี่ยน เช่น latency และขนาดตาราง
  2. ทดสอบกับข้อมูลที่มีขนาดและรูปแบบใกล้ production
  3. เตรียม backup ที่กู้คืนได้ และตรวจสถิติหลังเปลี่ยน

เริ่มจากขอบเขตเล็กและเก็บผลทดสอบไว้กับการเปลี่ยนแปลง หากจะใช้ใน production ให้กำหนดผู้ติดตามผลและเงื่อนไขที่จะหยุดการขยายการใช้งาน

ข้อควรระวัง

ANALYZE ทำให้คำสั่งถูกเรียกจริง ระวังคำสั่งที่เปลี่ยนข้อมูลและทดสอบใน transaction

แปลงข้อควรระวังนี้เป็นรายการตรวจในการทบทวนงาน เพราะปัญหาจากค่าตั้งต้นอาจไม่แสดงทันทีในสภาพแวดล้อมทดสอบ

สรุป

EXPLAIN แสดงแผนที่ PostgreSQL เลือก ส่วน ANALYZE รันคิวรีและรายงานเวลาและจำนวนแถวจริง เหมาะกับคิวรีที่ช้าเมื่อข้อมูลโตขึ้นหรือใช้ดัชนีไม่ตรงกับที่คาด ก่อนนำไปใช้กับงานหลัก ควรตรวจผลตามขั้นตอนข้างต้นและทบทวนข้อจำกัดของระบบที่มีอยู่

อ่านเพิ่มเติม: เอกสารทางการของ PostgreSQL