عرض عملي: تحديث مفقود في طرفيتين
في هذا الدرس 3 موضوعات
هذا الدرس مخطط له. يعرض المخطط أدناه الموضوعات التي سيغطيها، ولم يُنشر الدرس الكامل بعد.
نص الدروس والتمارين باللغة الإنجليزية، بينما تبقى واجهة الموقع وعناوين الدروس بالعربية.
في هذا الدرس
reproduce a lost update and fix it.
تفاصيل المخطط المبدئي
خطوة بخطوة
- Create
stock(product_id, qty)with one row, qty 10. - In two
psqlterminals, bothBEGIN; SELECT qty(10), then bothUPDATE stock SET qty = 9and commit; final qty is 9, not 8. - Fix 1: atomic
UPDATE stock SET qty = qty - 1 WHERE qty > 0(final 8). - Planned mistake: assume
REPEATABLE READalways lets both commit; show T2 fails with a serialization error ("could not serialize access due to concurrent update"). Explain this is correct and needs a retry. - Fix 2:
SELECT ... FOR UPDATEso the second waits.
Prepares MID-015-LAB1.
اختبر فهمك
Which fix needs no extra round trip?
أظهر الإجابة
The atomic UPDATE expression.
التطبيق
طبّق هذا الدرس بمختبر الوحدة وتمارينها واختبارها.
تعليم الدرس كمكتمل اختياري ويمكنك التراجع عنه في أي وقت. يبقى تقدمك محفوظًا في هذا المتصفح.