ประวัติเซสชันที่ใช้งานของ PostgreSQL - ส่วนขยาย pgsentinel ใหม่

บริษัท พีจีเซนติเนล เผยแพร่ส่วนขยาย pgsentinel ที่มีชื่อเดียวกัน (ที่เก็บ GitHub) ซึ่งเพิ่มมุมมอง pg_active_session_history ให้กับ PostgreSQL — ประวัติของเซสชันที่ใช้งานอยู่ (คล้ายกับ v$active_session_history ของ Oracle)

โดยพื้นฐานแล้ว นี่เป็นเพียงสแนปช็อตแบบวินาทีต่อวินาทีจาก pg_stat_activity แต่มีประเด็นสำคัญ:

  1. ข้อมูลที่สะสมทั้งหมดจะถูกจัดเก็บไว้ใน RAM เท่านั้น และจำนวนหน่วยความจำที่ใช้จะถูกควบคุมโดยจำนวนบันทึกที่เก็บไว้ล่าสุด
  2. เพิ่มฟิลด์ queryid แล้ว - queryid เดียวกันจากส่วนขยาย pg_stat_statements (จำเป็นต้องติดตั้งล่วงหน้า)
  3. มีการเพิ่มฟิลด์ top_level_query - ข้อความของแบบสอบถามที่ใช้เรียกแบบสอบถามปัจจุบัน (หากใช้ pl/pgsql)


รายการช่อง pg_active_session_history ทั้งหมด:

      คอลัมน์ | พิมพ์ -------------------+----------------------------- ash_time | การประทับเวลาพร้อมโซนเวลา dadid | oid datename | ข้อความ พีไอ | usesysid จำนวนเต็ม | oid ชื่อผู้ใช้ | ข้อความ application_name | ข้อความ client_addr | ข้อความ client_hostname | ข้อความ client_port | จำนวนเต็ม backend_start | การประทับเวลาพร้อมเขตเวลา xact_start | การประทับเวลาพร้อมโซนเวลา query_start | การประทับเวลาพร้อมเขตเวลา state_change | การประทับเวลาพร้อมเขตเวลา wait_event_type | ส่งข้อความ wait_event | สถานะข้อความ | ข้อความ backend_xid | xid แบ็กเอนด์_xmin | xid top_level_query | ข้อความค้นหา | ข้อความสอบถาม ID | bigint backend_type | ข้อความ                     

ยังไม่มีแพ็คเกจสำเร็จรูปสำหรับติดตั้ง ขอแนะนำให้ดาวน์โหลดซอร์สและประกอบไลบรารีด้วยตนเอง ก่อนอื่นคุณต้องติดตั้งแพ็คเกจ “devel” สำหรับเซิร์ฟเวอร์ของคุณและตั้งค่าเส้นทางเป็น pg_config ในตัวแปร PATH เรารวบรวม:

ซีดี pgsentinel/src
ทำ
ให้ติดตั้ง

เพิ่มพารามิเตอร์ใน postgres.conf:

shared_preload_libraries = 'pg_stat_statements,pgsentinel'
track_activity_query_size = 2048
pg_stat_statements.track = ทั้งหมด

# จำนวนบันทึกล่าสุดที่เก็บไว้ในหน่วยความจำ
pgsentinel_ash.max_entries = 10000

รีสตาร์ท PostgreSQL และสร้างส่วนขยาย:

สร้างส่วนขยาย pgsentinel;

ข้อมูลที่สะสมช่วยให้เราสามารถตอบคำถามเช่น:

  • คุณใช้เวลารอช่วงใดมากที่สุด?
  • เซสชันใดที่มีการใช้งานมากที่สุด?
  • คำขอใดที่มีการใช้งานมากที่สุด?

แน่นอนว่าคุณสามารถรับคำตอบสำหรับคำถามเหล่านี้ได้โดยใช้คำสั่ง SQL แต่จะสะดวกกว่าหากดูภาพนี้บนกราฟโดยการเน้นช่วงเวลาที่สนใจด้วยเมาส์ คุณสามารถทำได้ด้วยโปรแกรมฟรี PASH-โปรแกรมดู (คุณสามารถดาวน์โหลดไบนารีที่รวบรวมไว้ได้ในส่วน สัมพันธ์).

เมื่อเริ่มต้น PASH-Viewer (ตั้งแต่เวอร์ชัน 0.4.0) จะตรวจสอบการมีอยู่ของมุมมอง pg_active_session_history หรือไม่ และหากมีอยู่ ก็จะโหลดประวัติที่สะสมทั้งหมดจากนั้นและอ่านข้อมูลขาเข้าใหม่ต่อไป โดยอัปเดตกราฟทุกๆ 15 วินาที

ประวัติเซสชันที่ใช้งานของ PostgreSQL - ส่วนขยาย pgsentinel ใหม่

ที่มา: will.com

เพิ่มความคิดเห็น