ฉันอยู่ระหว่างการตรวจสอบคำสั่ง SQL ทุกคำที่แอปพลิเคชันทำกับฐานข้อมูลเพื่อเหตุผลด้านประสิทธิภาพ มีวิธีง่าย ๆ ในการบันทึกคำสั่งทั้งหมดที่ดำเนินการโดยเซิร์ฟเวอร์ฐานข้อมูล PostgreSQL หรือไม่ ขอบคุณ
ฉันอยู่ระหว่างการตรวจสอบคำสั่ง SQL ทุกคำที่แอปพลิเคชันทำกับฐานข้อมูลเพื่อเหตุผลด้านประสิทธิภาพ มีวิธีง่าย ๆ ในการบันทึกคำสั่งทั้งหมดที่ดำเนินการโดยเซิร์ฟเวอร์ฐานข้อมูล PostgreSQL หรือไม่ ขอบคุณ
คำตอบ:
ตัวเลือกปรับแต่งที่คุณกำลังมองหาคือlog_statement = "all"
(หากคุณต้องการข้อความสั่ง) หรือlog_min_statement_duration = <some number>
หากคุณอยู่หลังข้อความค้นหา "ช้า" (สำหรับค่าบางส่วนของ "ช้า") ดูhttp://www.postgresql.org/docs/current/static/runtime-config-logging.htmlสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการกำหนดค่าการบันทึก
explain analyze
การทำให้การสืบค้นช้าลงเมื่อมีการดำเนินการคุณอาจต้องการเริ่มต้นการทดสอบโดยที่ 8.4 ยังไม่ออก แต่เป็นตัวเลือกที่ดีที่จะรู้ว่าเกิดขึ้นในช่วงเวลาของการดำเนินการถ้าวิเคราะห์อธิบายผลลัพธ์ได้คุณอาจพบปัญหาเกี่ยวกับ I / O หรือขอบเขต CPU แต่อย่างน้อยคุณก็รู้ว่ามันไม่ใช่ตัวเอง
auto_explain
โมดูลเป็นประโยชน์อย่างมากสำหรับเรื่องนี้ มันจะไม่เพียงบันทึกคำสั่งมันจะบันทึกแผนการดำเนินการของพวกเขาและยังสามารถบันทึกคำสั่งที่ทำงานในฟังก์ชั่น PL / PgSQL การเข้าชมของประสิทธิภาพค่อนข้างต่ำเว้นแต่คุณจะเปิดใช้งานการวิเคราะห์ซึ่งในกรณีนี้คุณมีค่าใช้จ่ายในการตั้งเวลาค่อนข้างยุติธรรมสำหรับการค้นหาทั้งหมด
ดูauto_explain
ในเอกสารประกอบ
auto_explain
อยู่ในรายการของโมดูลที่มีความสุข ดูเอกสารที่docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…
แน่นอนคุณสามารถตรวจสอบคิวรีที่ช้าที่สุดได้ด้วยตัวเอง แต่ฉันแนะนำให้คุณใช้pgFouine - เครื่องมือวิเคราะห์บันทึก PostgreSQL ติดตั้งง่ายและมีประโยชน์จริงๆ
รายงานตัวอย่าง: ที่นี่และที่นี่