تجنب فقدان التحديثات في عمليات Read–Modify–Write

قراءة القيمة ثم تعديلها وحفظها في ثلاث خطوات قد تفقد أحد التحديثات المتزامنة؛ اجعل العملية ذرية أو احمها بمعاملة مناسبة.

عُمَر العلوي مقال

افترض أن رصيد النقاط يساوي 100، ووصل طلبان في اللحظة نفسها لإضافة 10 نقاط. إذا قرأ كل طلب القيمة 100 ثم حسب 110 وحفظها، فقد تصبح النتيجة النهائية 110 بدل 120 لأن آخر كتابة ألغت أثر الأولى.

عندما يكون التغيير بسيطًا، نفذه كتحديث ذري داخل قاعدة البيانات، مثل زيادة العمود بقيمة محددة بشرط واضح. بهذه الطريقة تتولى قاعدة البيانات تطبيق التحديثات المتزامنة دون فصل القراءة عن الكتابة في التطبيق.

أما العمليات التي تقرأ عدة سجلات أو تتحقق من شروط ثم تكتب، فضعها داخل معاملة واستخدم القفل أو مستوى العزل المناسب. أضف قيود قاعدة بيانات تحمي القواعد الأساسية، واختبر التزامن بطلبات متوازية؛ فالاختبار المتسلسل وحده لن يكشف هذا النوع من الأخطاء.

شاركني رأيك

يسعدني مشاركة وجهة نظرك من خلال ترك تعليق في المقالة الأصلية في مواقع التواصل

مقالات مرتبطة

تطوير Backend وقواعد البيانات ·

اجعل Excel جزءًا من سير العمل داخل النظام

دعم الاستيراد والتصدير ليس كافيًا دائمًا؛ بعض المستخدمين يحتاجون إلى التعامل مع الجداول والمعادلات دون مغادرة النظام.

قراءة المقال

تطوير Backend وقواعد البيانات ·

ترحيل MySQL كبير دون إيقاف الخدمة

نسخة Hot Backup مع Replication قد تكون أنسب من mysqldump عندما تكون قاعدة الإنتاج كبيرة وتستمر فيها الكتابة أثناء الترحيل.

قراءة المقال