0Pricing
SQL Academy · درس

pg_stat_statements: أهم الاستعلامات

فعّل pg_stat_statements، واعثر على أثقل الاستعلامات حسب الوقت الإجمالي، واستهدفها للتحسين

pg_stat_statements: أهم الاستعلامات درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.

ما الذي يقدمه pg_stat_statements

سجل تراكمي لكل استعلام، موحّد حسب بنيته — وهو أداة DBA الأكثر فائدة في PostgreSQL.

تفعيله

إنه امتداد contrib. أضفه إلى shared_preload_libraries ثم أعد التشغيل:

-- 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. تقضي بعض الاستعلامات وقتًا في التخطيط أطول من وقت تشغيلها، وعادةً ما يشير ذلك إلى ضرورة استخدام العبارات المُعدّة.

الإحصاءات حسب قاعدة البيانات / المستخدم

يعمل 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: أهم الاستعلامات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.

ماذا ستتعلم في «pg_stat_statements: أهم الاستعلامات»؟

فعّل pg_stat_statements، واعثر على أثقل الاستعلامات حسب الوقت الإجمالي، واستهدفها للتحسين تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟

لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «pg_stat_statements: أهم الاستعلامات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟

نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. pg_stat_statements: أهم الاستعلامات
  2. pgBadger لتحليل السجلات
  3. تجميع الاتصالات: PgBouncer
  4. تخطيط السعة وتدقيق التضخم
← العودة إلى SQL Academy