الجمود المتبادل (Deadlocks)
في هذا الدرس 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 SQLSTATE40P01. - 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_locksjoined withpg_stat_activity. - The aborted transaction can be retried.
تفاصيل المخطط المبدئي
عرض عملي
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.
التطبيق
طبّق هذا الدرس بمختبر الوحدة وتمارينها واختبارها.
تعليم الدرس كمكتمل اختياري ويمكنك التراجع عنه في أي وقت. يبقى تقدمك محفوظًا في هذا المتصفح.