หนึ่งในเครื่องมือที่ทำให้ Postgres มีประสิทธิภาพที่โดดเด่นคือคำสั่ง EXPLAIN ซึ่งให้รายละเอียดเกี่ยวกับแผนการดำเนินการของแบบสอบถาม SQL
คำสั่ง EXPLAIN คืออะไร?
คำสั่ง EXPLAIN แสดงแผนการดำเนินการที่ตัววางแผน PostgreSQL สร้างขึ้นสำหรับคำสั่ง SQL ที่กำหนด
ซึ่งรวมถึงข้อมูลเกี่ยวกับค่าใช้จ่ายโดยประมาณของการดำเนินการค้นหาแต่ละขั้นตอน การตรวจสอบค่าใช้จ่ายเหล่านี้ทำให้เราเข้าใจได้ว่าเหตุใดการค้นหาจึงทำงานช้าและจะเพิ่มประสิทธิภาพได้อย่างไร
PostgreSQL อธิบายค่าใช้จ่าย
เราใช้คำสั่ง EXPLAIN เพื่อดึงข้อมูลเกี่ยวกับข้อความค้นหาที่กำหนดเป็นหลัก คำสั่งจะแสดงข้อมูลบางอย่างเกี่ยวกับแบบสอบถาม
ยกตัวอย่างแบบสอบถามที่แสดงดังต่อไปนี้:
เลือก f.title, c.name
จากภาพยนตร์เรื่อง ฉ
เข้าร่วม film_category fc บน f.film_id = fc.film_id
เข้าร่วมหมวดหมู่ c ON fc.category_id = c.category_id;
หากเราเรียกใช้คำสั่ง expand ในการรวมอย่างง่ายก่อนหน้านี้:
อธิบาย SELECT f.title, c.nameจากภาพยนตร์เรื่อง ฉ
เข้าร่วม film_category fc บน f.film_id = fc.film_id
เข้าร่วมหมวดหมู่ c ON fc.category_id = c.category_id;
เราควรได้ผลลัพธ์ดังที่แสดงต่อไปนี้:
คุณอาจสังเกตเห็นว่าสำหรับแต่ละขั้นตอนการสืบค้น PostgreSQL จะส่งคืนค่าใช้จ่ายโดยประมาณของแบบสอบถามนั้น
- startup_cost – แสดงค่าใช้จ่ายโดยประมาณเพื่อเริ่มต้นการดำเนินการก่อนที่จะสามารถเริ่มเอาต์พุตแถวได้
- total_cost – ต้นทุนรวมในการดึงแถวทั้งหมด
- แถว – กำหนดจำนวนแถวโดยประมาณที่แบบสอบถามส่งคืน
- ความกว้าง – กำหนดจำนวนไบต์เฉลี่ยของแถวทั้งหมดที่ดำเนินการส่งคืน
ต้นทุนการสืบค้นใน PostgreSQL จะแสดงเป็นหน่วยตามอำเภอใจ ซึ่งกำหนดโดยพารามิเตอร์ต้นทุนที่ตั้งค่าไว้ในการกำหนดค่าเซิร์ฟเวอร์
คีย์ของพารามิเตอร์เหล่านี้คือ seq_page_cost ซึ่งจะกำหนดต้นทุนของการดึงหน้าดิสก์ที่ไม่ได้อยู่ในแคช
หากคุณใช้ pgAdmin คุณสามารถใช้คุณลักษณะ 'อธิบายวิเคราะห์' เพื่อรับไดอะแกรมที่อ่านง่ายขึ้นและนำเสนอได้ดีสำหรับคำสั่งอธิบาย ตัวอย่างเช่น:
จากนั้นคุณสามารถคลิกที่แต่ละขั้นตอนเพื่อดูสถิติและค่าใช้จ่ายโดยประมาณ
การเพิ่มประสิทธิภาพการค้นหาตามต้นทุน
เมื่อเพิ่มประสิทธิภาพการค้นหาของคุณ สิ่งสำคัญคือต้องเข้าใจว่าต้นทุนที่ต่ำกว่ามักจะหมายถึงการดำเนินการที่เร็วขึ้น ดังนั้น คุณสามารถแก้ไขข้อความค้นหาของคุณโดยมีค่าใช้จ่ายที่ต่ำลง
นี่คือปัจจัยบางประการที่ควรพิจารณา:
ใช้ดัชนีตาราง – ดัชนีช่วยลดต้นทุนของคำค้นหาตามการค้นหาได้อย่างมากโดยรักษาโครงสร้างข้อมูลที่ช่วยให้ค้นหาได้เร็วขึ้น
ใช้ฟังก์ชันและตัวดำเนินการอย่างชาญฉลาด – การประมาณต้นทุนสำหรับฟังก์ชันและตัวดำเนินการนั้นไม่ถูกต้องเสมอไป เนื่องจากต้นทุนจริงอาจขึ้นอยู่กับข้อมูลเฉพาะอย่างมาก ดังนั้น จำกัดการใช้ฟังก์ชันและตัวดำเนินการที่ซับซ้อนให้น้อยที่สุด
บทสรุป
เราได้สำรวจแนวคิดของต้นทุนในคำสั่ง PostgreSQL ANALYZE เราได้กล่าวถึงความหมายของเอาต์พุตคำสั่งและวิธีใช้เอาต์พุตต้นทุนเพื่อวิเคราะห์วิธีที่มีประสิทธิภาพสูงสุดในการเรียกใช้คิวรีที่กำหนด