انتقل إلى المحتوى
أمين أبوزيد
درس مخطط لهMID-015-L05

الجمود المتبادل (Deadlocks)

  • الدرس 5 من 7
  • Mid-level
في هذا الدرس 4 موضوعات

هذا الدرس مخطط له. يعرض المخطط أدناه الموضوعات التي سيغطيها، ولم يُنشر الدرس الكامل بعد.

نص الدروس والتمارين باللغة الإنجليزية، بينما تبقى واجهة الموقع وعناوين الدروس بالعربية.

في هذا الدرس

understand, diagnose, and prevent deadlocks.

الموضوعات المخطط لها

  • Deadlock: T1 holds A and wants B, T2 holds B and wants A. PostgreSQL detects it after deadlock_timeout (default 1 s) and aborts one transaction with SQLSTATE 40P01.
  • Prevention: lock in a consistent order (sort ids), keep transactions short, avoid user interaction inside them.
  • Diagnose from the server log (it names the processes and queries) and from pg_locks joined with pg_stat_activity.
  • The aborted transaction can be retried.
تفاصيل المخطط المبدئي

عرض عملي

sql
SELECT a.pid, a.query, l.locktype, l.mode, l.granted
FROM pg_locks l JOIN pg_stat_activity a USING (pid) WHERE NOT l.granted;

اختبر فهمك

What is the simplest rule to prevent most deadlocks?

أظهر الإجابة

Always lock rows in the same order.

التطبيق

طبّق هذا الدرس بمختبر الوحدة وتمارينها واختبارها.

المختبر والتمارين الاختبار

تعليم الدرس كمكتمل اختياري ويمكنك التراجع عنه في أي وقت. يبقى تقدمك محفوظًا في هذا المتصفح.

اكتب للبحث في المستويات والمراحل والوحدات والدروس.