تشخيص النشاط المباشر باستخدام pg_stat_activity
تعلّم استخدام العرض pg_stat_activity لمعرفة ما تفعله كل اتصالاتك الآن، والعثور على الاستعلامات طويلة التشغيل والمحجوبة، وإلغاء الجلسات المسببة للمشكلات أو إنهائها بأمان
تشخيص النشاط المباشر باستخدام pg_stat_activity درس مجاني في PostgreSQL Performance & Query Optimization على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في PostgreSQL Performance & Query Optimization، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة PostgreSQL Performance & Query Optimization 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
Your Window into Live Sessions
The pg_stat_activity view has one row per server connection. It is the first place to look when the database feels slow or stuck, showing what each session is doing this instant.
The Key Columns
The most useful columns are:
pid: the backend process idstate: active, idle, idle in transactionquery: the current or last SQL textwait_event: what the session is waiting on
A Basic Look
Select the essentials for all active sessions.
SELECT pid, usename, state, wait_event, query
FROM pg_stat_activity
WHERE state <> 'idle';Finding Long-Running Queries
Compute how long each active query has been running by subtracting query_start from now.
SELECT pid, now() - query_start AS runtime, query
FROM pg_stat_activity
WHERE state = 'active'
ORDER BY runtime DESC;Idle in Transaction Danger
A session in idle in transaction holds locks and pins the oldest XID without doing work. These can block vacuum and other sessions. Hunt them down.
SELECT pid, now() - xact_start AS tx_age, query
FROM pg_stat_activity
WHERE state = 'idle in transaction'
ORDER BY tx_age DESC;Seeing What a Session Waits On
The wait_event_type and wait_event columns reveal whether a session is waiting on a lock, on I/O, or on a client. This pinpoints the bottleneck.
SELECT pid, wait_event_type, wait_event, query
FROM pg_stat_activity
WHERE wait_event IS NOT NULL;Finding Who Blocks Whom
Combine activity with pg_blocking_pids to see which sessions are blocking others.
SELECT pid, pg_blocking_pids(pid) AS blocked_by, query
FROM pg_stat_activity
WHERE cardinality(pg_blocking_pids(pid)) > 0;Cancelling a Query
pg_cancel_backend stops the current query in a session but leaves the connection open. Try this first — it is the gentler option.
SELECT pg_cancel_backend(12345);Terminating a Connection
If cancelling is not enough, pg_terminate_backend closes the whole connection, rolling back its transaction. Use it for stuck idle-in-transaction sessions.
SELECT pg_terminate_backend(12345);Building a Monitoring Habit
Good practice:
- Set
idle_in_transaction_session_timeoutto auto-kill stragglers - Set
statement_timeoutto bound runaway queries - Watch
pg_stat_activityduring incidents before reaching for the kill switch
Counting Connections by State
To gauge overall pressure, summarize how many connections sit in each state. A pile of idle-in-transaction or active sessions hints at pooling or query problems.
SELECT state, count(*)
FROM pg_stat_activity
GROUP BY state
ORDER BY count(*) DESC;Quick Check
Test your live-monitoring knowledge.
Recap
You learned live diagnosis with pg_stat_activity:
- One row per connection with state, query, and wait info
- Find long queries via
now() - query_start - Hunt idle-in-transaction sessions that block vacuum
pg_blocking_pidsreveals who blocks whom- Cancel a query or terminate a backend when needed
الأسئلة الشائعة
هل درس «تشخيص النشاط المباشر باستخدام pg_stat_activity» مجاني؟
نعم — نص درس «تشخيص النشاط المباشر باستخدام pg_stat_activity» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PostgreSQL Performance & Query Optimization، انتقل إلى CoddyKit PRO. تتضمن دورة PostgreSQL Performance & Query Optimization 4 دروس في المجموع.
ماذا ستتعلم في «تشخيص النشاط المباشر باستخدام pg_stat_activity»؟
تعلّم استخدام العرض pg_stat_activity لمعرفة ما تفعله كل اتصالاتك الآن، والعثور على الاستعلامات طويلة التشغيل والمحجوبة، وإلغاء الجلسات المسببة للمشكلات أو إنهائها بأمان تتمرن على PostgreSQL Performance & Query Optimization مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ PostgreSQL Performance & Query Optimization؟
لا تُشترط خبرة سابقة. PostgreSQL Performance & Query Optimization على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «تشخيص النشاط المباشر باستخدام pg_stat_activity»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس PostgreSQL Performance & Query Optimization هذا؟
نعم. كل درس في PostgreSQL Performance & Query Optimization يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- استخدام pg_stat_statements وpg_buffercache
- تهيئة السجلات للتحليل
- التكامل مع أدوات المراقبة الخارجية
- تشخيص النشاط المباشر باستخدام pg_stat_activity