รับสถิติการสืบค้นที่ทำงานช้า


10

แอปพลิเคชันฐานข้อมูลของฉันเรียกใช้แบบสอบถามที่แตกต่างกันมากมาย ฉันได้ตั้งไว้log_min_duration_statementที่ 1,000 แต่การสืบค้นที่บันทึกไว้มีไม่ช้าเสมอส่วนใหญ่พวกเขาใช้เวลาเพียงไม่กี่มิลลิวินาที

เป็นไปได้หรือไม่ที่จะได้รับสถิติของข้อความค้นหาทั้งหมดและบ่อยครั้งที่พวกเขาใช้เวลานานกว่า 1,000 มิลลิวินาที


1
ดูว่าจะช่วย: การตั้งค่า log_min_duration_statement จะถูกละเว้น หรือคุณลืมโหลดการกำหนดค่าใหม่หลังจากเปลี่ยนการตั้งค่า
Daniel Vérité

คำตอบ:


11

ติดตั้งส่วนขยาย pg_stat_statements ด้วยคำสั่ง SQL

CREATE EXTENSION pg_stat_statements

คุณอาจต้องการให้แน่ใจว่าคุณสร้างสิ่งนี้โดยใช้ผู้ใช้ที่เหมาะสม (เช่นผู้ใช้แอปพลิเคชันของคุณใช้หรือบัญชี dba บางส่วน) โปรดระวังว่าผู้ใช้รายใดสร้างส่วนขยายก็จะเป็นเจ้าของด้วยเช่นกัน

สิ่งนี้จะต้องมีการรีสตาร์ทเซิร์ฟเวอร์เพื่อให้สามารถใช้งานได้ (เนื่องจากคุณต้องเปลี่ยนการตั้งค่าใน postgresql.conf นิดหน่อยที่ส่งผลต่อการใช้หน่วยความจำ) แต่มันจะให้สถิติเกี่ยวกับการสืบค้นทั้งหมด

โปรดดูหน้าเอกสารสำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่ pg_stat_statements มีให้ ดูที่นี่สำหรับการอ้างอิงอย่างรวดเร็วเกี่ยวกับการกำหนดค่าของไฟล์กำหนดค่า postgresql.conf สำหรับ pg_stat_statements

เมื่อคุณติดตั้งและใช้งานแล้วคุณสามารถดูสถิติได้โดยการสอบถามมุมมอง pg_stat_statements ..

select * from pg_stat_statements;
-- or
select * from pg_stat_statements where total_time / calls > 200; -- etc ..

2

@JoishiBodio บอกว่าคุณสามารถใช้pg_stat_statementsส่วนขยายเพื่อดูสถิติการสืบค้นที่ช้าได้ สำหรับผู้ที่ต่อสู้กับการติดตั้ง (เช่นฉัน):

  1. ตรวจสอบว่าpg_stat_statementsอยู่ในรายการส่วนขยายที่มีหรือไม่:

    SELECT * FROM pg_available_extensions;
  2. ลองติดตั้งpostgresql-contribแพ็คเกจผ่านตัวจัดการแพ็คเกจระบบของคุณบน Debian / Ubuntu:

    sudo apt-get install postgresql-contrib-9.5

จากนั้นทำตามขั้นตอนที่ 1 อีกครั้ง

  1. เพิ่มpg_stat_statementsไปshared_preload_librariesในการกำหนดค่า PostgreSQL:

ผ่านpostgres.conf:

    shared_preload_libraries = 'pg_stat_statements'

ผ่านอาร์กิวเมนต์บรรทัดคำสั่ง (ไม่มีเครื่องหมายอัญประกาศ!):

    postgres -c shared_preload_libraries=pg_stat_statements
  1. จากนั้นสร้างส่วนขยายในฐานข้อมูล:

    CREATE EXTENSION pg_stat_statements;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.