0Pricing
SQL Academy · บทเรียน

pg_stat_statements: คำสั่งค้นหายอดนิยม

เปิดใช้ pg_stat_statements ค้นหาคำสั่งที่ใช้เวลารวมมากที่สุด และมุ่งปรับปรุงคำสั่งเหล่านั้น

pg_stat_statements: คำสั่งค้นหายอดนิยม เป็นบทเรียน SQL Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน

สิ่งที่ pg_stat_statements มอบให้คุณ

บันทึกสะสมของทุกคิวรี โดยจัดให้เป็นมาตรฐานตามรูปแบบ — เครื่องมือ DBA ที่มีประโยชน์ที่สุดเพียงตัวเดียวใน PostgreSQL

เปิดใช้งาน

นี่คือส่วนขยายเสริม ให้เพิ่มส่วนขยายนี้ในไลบรารีที่โหลดล่วงหน้าร่วมกัน แล้วเริ่มระบบใหม่:

-- postgresql.conf
shared_preload_libraries = 'pg_stat_statements'

-- After restart:
CREATE EXTENSION pg_stat_statements;

คิวรีอันดับต้นตามเวลารวม

คิวรี "CPU ของฉันถูกใช้ไปที่ไหน":

SELECT calls,
       total_exec_time,
       mean_exec_time,
       rows,
       query
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;

คิวรีที่ช้าในแต่ละครั้งที่เรียกใช้

คิวรีที่ช้าในการเรียกใช้ทุกครั้ง:

SELECT mean_exec_time, calls, query
FROM pg_stat_statements
WHERE mean_exec_time > 100
ORDER BY mean_exec_time DESC
LIMIT 20;

คิวรีราคาถูกที่เรียกใช้บ่อย

คิวรีหนึ่งล้านครั้งที่ใช้เวลาครั้งละ 1 มิลลิวินาทีก็ยังเป็นปัญหา:

SELECT calls, mean_exec_time, total_exec_time, query
FROM pg_stat_statements
ORDER BY calls DESC
LIMIT 20;

การทำให้เป็นมาตรฐาน

pg_stat_statements จัดกลุ่มคิวรีตามรูปแบบมาตรฐาน โดยแทนค่าคงที่ด้วย $N ดังนั้น "SELECT * FROM users WHERE id = 1" และ "= 2" จึงกลายเป็นแถวเดียวกัน

รีเซ็ตสถิติ

เริ่มเก็บข้อมูลใหม่หลังการนำระบบไปใช้งาน เพื่อวัดพฤติกรรมใหม่:

SELECT pg_stat_statements_reset();

เวลาอินพุต/เอาต์พุตเทียบกับเวลา CPU

PG รุ่นใหม่จะแยกเวลาการทำงานออกเป็นส่วนต่าง ๆ ค่า shared_blks_hit / shared_blks_read ช่วยบอกได้ว่าข้อมูลมาจากแคชหรือดิสก์:

SELECT query, shared_blks_hit, shared_blks_read,
       shared_blks_read::FLOAT / NULLIF(shared_blks_hit + shared_blks_read, 0) AS read_ratio
FROM pg_stat_statements
ORDER BY shared_blks_read DESC LIMIT 20;

JIT และเวลาวางแผน

PG 13+ แสดงค่า total_plan_time ได้ คิวรีบางรายการใช้เวลาในการ PLANNING มากกว่าการทำงานจริง ซึ่งโดยปกติเป็นสัญญาณว่าควรใช้คำสั่งที่เตรียมไว้

สถิติแยกตามฐานข้อมูลและผู้ใช้

pg_stat_statements ครอบคลุมทั้งคลัสเตอร์ กรองตามคอลัมน์ dbid และ userid เพื่อดูข้อมูลแยกตามฐานข้อมูลหรือผู้ใช้

ใช้ร่วมกับ EXPLAIN ANALYZE

pg_stat_statements บอกคุณว่าคิวรีใดช้า ส่วน EXPLAIN ANALYZE บอกว่าช้าเพราะเหตุใด

ข้อควรระวัง

  • การสะสมข้อมูลแยกตามฐานข้อมูลและผู้ใช้อาจซ่อนปัญหาไว้ ดังนั้นให้ดูยอดรวมด้วย
  • ไม่ได้ติดตามเวลาต่อแถว แต่ติดตามเวลารวมต่อการเรียกใช้
  • ข้อมูลจะถูกรีเซ็ตเมื่อเริ่มระบบใหม่หรือเรียกใช้คำสั่งรีเซ็ต

สรุปทบทวน

pg_stat_statements เป็นสิ่งจำเป็นสำหรับระบบจริง

  • อันดับต้นตามเวลารวม → จุดที่ปรับปรุงแล้วได้ผลมากที่สุด
  • อันดับต้นตามค่าเฉลี่ย → ความช้าที่เกิดขึ้นอย่างสม่ำเสมอ
  • อันดับต้นตามจำนวนครั้งที่เรียกใช้ → ปัญหาด้านความถี่
  • ใช้คู่กับ EXPLAIN เพื่อแก้ไขปัญหา

ตรวจสอบอย่างรวดเร็ว

คุณเปิดใช้งาน pg_stat_statements แล้ว ควรตรวจสอบคิวรีใดเพื่อหาจุดที่ปรับปรุงประสิทธิภาพได้มากที่สุด

คำถามที่พบบ่อย

บทเรียน “pg_stat_statements: คำสั่งค้นหายอดนิยม” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “pg_stat_statements: คำสั่งค้นหายอดนิยม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “pg_stat_statements: คำสั่งค้นหายอดนิยม”

เปิดใช้ pg_stat_statements ค้นหาคำสั่งที่ใช้เวลารวมมากที่สุด และมุ่งปรับปรุงคำสั่งเหล่านั้น คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “pg_stat_statements: คำสั่งค้นหายอดนิยม” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน SQL Academy นี้ได้ไหม

ได้ บทเรียน SQL Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. pg_stat_statements: คำสั่งค้นหายอดนิยม
  2. pgBadger สำหรับวิเคราะห์บันทึก
  3. การรวมการเชื่อมต่อ: PgBouncer
  4. การวางแผนความจุและการตรวจสอบข้อมูลบวม
← กลับไปที่ SQL Academy