ฉันจะบอกได้อย่างไรว่ามีคิวรีจำนวนเท่าไรต่อวินาทีที่ฐานข้อมูล Postgres ของฉันกำลังดำเนินการอยู่
ฉันจะบอกได้อย่างไรว่ามีคิวรีจำนวนเท่าไรต่อวินาทีที่ฐานข้อมูล Postgres ของฉันกำลังดำเนินการอยู่
คำตอบ:
ใช้แบบสอบถามนี้เพื่ออ่านจำนวนธุรกรรมทั้งหมดที่ดำเนินการในฐานข้อมูลทั้งหมด:
SELECT sum(xact_commit+xact_rollback) FROM pg_stat_database;
ถ้าคุณต้องการตัวนับเดียวกันสำหรับฐานข้อมูลเดียวให้ใช้:
SELECT xact_commit+xact_rollback FROM pg_stat_database WHERE datname = 'mydb';
ในการคำนวณ TPS (ธุรกรรมต่อวินาที) ให้เรียกใช้แบบสอบถามหลายครั้งและคำนวณความแตกต่างตามช่วงเวลา
มีเครื่องมือที่พร้อมใช้แล้วหนึ่งในนั้นคือhttp://bucardo.org/wiki/Check_postgres
ข้อมูลเพิ่มเติม: http://www.postgresql.org/docs/9.2/static/monitoring-stats.html#PG-STAT-DATABASE-VIEW
อัปเดต: Konrad แก้ไขความเข้าใจที่คลาดเคลื่อนในคำถามของเขา เป้าหมายคือการนับการค้นหาไม่ใช่การทำธุรกรรม
วิธีนับแบบสอบถาม
วิธีที่ 1
ใช้pg_stat_statements contrib
วิธีที่ 2
เปิดใช้งานการบันทึกการสืบค้นแบบเต็มสำหรับระยะเวลาตัวแทน
หากต้องการเปิดใช้งานการบันทึกแบบเต็มสำหรับ PostgreSQL 9.0 - 9.3 ให้เปลี่ยนการตั้งค่าต่อไปนี้ใน postgresql.conf
logging_collector = on
log_line_prefix = '%t '
log_rotation_size = 1GB
log_statement = all
หากคุณต้องการที่จะดูระยะเวลาแบบสอบถามคุณสามารถตั้งค่าlog_min_duration_statement = 0
แทนlog_statement = all
ของ สิ่งนี้มีประโยชน์มากสำหรับการปรับแต่งแบบสอบถาม
จากนั้นโหลดการกำหนดค่าใหม่ (รีสตาร์ทหรือ HUP) และรวบรวมบันทึกเพียงพอที่จะประมาณการปริมาณการใช้งาน
หมายเหตุ:ไม่มีวิธีใดที่จะรวมข้อความค้นหาที่ฝังอยู่ในฟังก์ชั่นที่ผู้ใช้กำหนด