المعاملات وآليات الرقابة عليها

المعاملات

المعاملة هي سلسلة من العمليات على البيانات التي لها بداية ونهاية.

المعاملة هي التنفيذ المتسلسل لعمليات القراءة والكتابة. يمكن أن تكون نهاية المعاملة إما حفظ التغييرات (الالتزام) أو إلغاء التغييرات (التراجع). فيما يتعلق بقاعدة البيانات، تتكون المعاملة من عدة طلبات يتم التعامل معها كطلب واحد.

يجب أن تستوفي المعاملات خصائص ACID

الذرية. إما أن تتم الصفقة بالكامل أو لا تكتمل على الإطلاق.

تناسق. عند إتمام معاملة ما، يجب عدم انتهاك القيود المفروضة على البيانات (على سبيل المثال، القيود الموجودة في قاعدة البيانات). يشير الاتساق إلى أنه سيتم نقل النظام من حالة صحيحة إلى حالة صحيحة أخرى.

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

الاستدامة. بمجرد الالتزام، لا ينبغي أن تضيع التغييرات.

سجل المعاملات

يقوم السجل بتخزين التغييرات التي تم إجراؤها بواسطة المعاملات، ويضمن ذرية البيانات واستقرارها في حالة فشل النظام

يحتوي السجل على القيم التي كانت عليها البيانات قبل وبعد تغييرها بواسطة المعاملة. تتطلب استراتيجية سجل الكتابة المسبقة إضافة إدخال سجل حول القيم السابقة قبل البدء، وحول القيم النهائية بعد اكتمال المعاملة. في حالة التوقف المفاجئ للنظام، تقوم قاعدة البيانات بقراءة السجل بترتيب عكسي وإلغاء التغييرات التي تم إجراؤها بواسطة المعاملات. بعد مواجهة معاملة متقطعة، تقوم قاعدة البيانات بتنفيذها وإجراء تغييرات عليها في السجل. كونها في الحالة وقت الفشل، تقوم قاعدة البيانات بقراءة السجل بترتيب للأمام وإرجاع التغييرات التي تم إجراؤها بواسطة المعاملات. بهذه الطريقة، يتم الحفاظ على استقرار المعاملات التي تم تنفيذها بالفعل وذرية المعاملة المتوقفة.

إن مجرد إعادة تنفيذ المعاملات الفاشلة لا يكفي للاسترداد.

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

مستويات العزل

قراءة ملتزمة

مشكلة القراءة القذرة هي أن المعاملة يمكنها قراءة النتيجة المتوسطة لمعاملة أخرى.

مثال. قيمة الرصيد الأولي هي 0 دولار. يضيف T1 50 دولارًا إلى رصيدك. يقرأ T2 قيمة الرصيد (50 دولارًا). يتجاهل T1 التغييرات ويخرج. يستمر T2 في التنفيذ ببيانات رصيد غير صحيحة.

الحل هو قراءة البيانات الثابتة (القراءة ملتزم بها) مما يمنع قراءة البيانات التي تغيرت بالمعاملة. إذا قامت المعاملة أ بتغيير مجموعة معينة من البيانات، فإن المعاملة ب، عند الوصول إلى هذه البيانات، تضطر إلى الانتظار حتى تكتمل المعاملة أ.

قراءة متكررة

مشكلة فقدان التحديثات. يحفظ T1 التغييرات فوق تغييرات T2.

مثال. قيمة الرصيد الأولي هي 0 دولار أمريكي، وهناك معاملتان في نفس الوقت تعملان على تجديد الرصيد. يقرأ T1 وT2 رصيدًا بقيمة 0 دولار. يضيف T2 بعد ذلك 200 دولار إلى 0 دولار ويحفظ النتيجة. يضيف T1 100 دولار إلى 0 دولار ويحفظ النتيجة. والنتيجة النهائية هي 100 دولار بدلاً من 300 دولار.

مشكلة القراءة غير المتكررة. تؤدي قراءة نفس البيانات بشكل متكرر إلى إرجاع قيم مختلفة.

مثال. يقرأ T1 قيمة رصيد قدرها 0 دولار. يضيف T2 بعد ذلك 50 دولارًا إلى الرصيد وينتهي. يقرأ T1 البيانات مرة أخرى ويجد تناقضًا مع النتيجة السابقة.

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

القراءة المرتبة (قابلة للتسلسل)

مشكلة القراءة الوهمية يقوم استعلامان يحددان البيانات بناءً على شرط معين بإرجاع قيم مختلفة.

مثال. يطلب T1 عدد جميع المستخدمين الذين يزيد رصيدهم عن 0 دولار ولكن أقل من 100 دولار. يقوم T2 بخصم دولار واحد من مستخدم برصيد قدره 1 دولار. يقوم T101 بإعادة إصدار الطلب.

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

مجدول

يضبط الترتيب الذي يجب تنفيذ العمليات به أثناء المعاملات المتوازية.

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

آليات التحكم في الوظائف الموازية (التحكم في التزامن)

التفاؤل مبني على اكتشاف الصراعات وحلها، والتشاؤم مبني على منع نشوب الصراعات.

في النهج المتفائل، يمتلك العديد من المستخدمين نسخًا من البيانات تحت تصرفهم. يقوم أول شخص يكمل التحرير بحفظ التغييرات، بينما يجب على الآخرين دمج التغييرات. تسمح الخوارزمية المتفائلة بحدوث تعارض، لكن يجب على النظام التعافي من التعارض.

مع النهج المتشائم، فإن المستخدم الأول الذي يلتقط البيانات يمنع الآخرين من تلقي البيانات. إذا كانت الصراعات نادرة، فمن الحكمة اختيار الإستراتيجية المتفائلة، لأنها توفر مستوى أعلى من التزامن.

قفل

إذا كانت إحدى المعاملات تحتوي على بيانات مقفلة، فيجب على المعاملات الأخرى الانتظار حتى يتم إلغاء قفلها عند الوصول إلى البيانات.

يمكن تراكب الكتلة على قاعدة بيانات أو جدول أو صف أو سمة. يمكن فرض القفل المشترك على نفس البيانات من خلال عدة معاملات، ويسمح لجميع المعاملات (بما في ذلك تلك التي فرضتها) بالقراءة، ويمنع التعديل والالتقاط الحصري. يمكن فرض القفل الحصري من خلال معاملة واحدة فقط، ويسمح بأي إجراءات من المعاملة المفروضة، ويحظر أي إجراءات من قبل الآخرين.

الجمود هو حالة تنتهي فيها المعاملات في حالة معلقة تستمر إلى أجل غير مسمى.

مثال. تنتظر المعاملة الأولى إصدار البيانات التي تم التقاطها بواسطة المعاملة الثانية، بينما تنتظر المعاملة الثانية إصدار البيانات التي تم التقاطها بواسطة المعاملة الأولى.

يسمح الحل المتفائل لمشكلة حالة توقف تام بحدوث حالة توقف تام، ولكنه يقوم بعد ذلك باسترداد النظام عن طريق استرجاع إحدى المعاملات المتضمنة في حالة توقف تام.

يتم البحث عن حالة توقف تام على فترات زمنية معينة. إحدى طرق الكشف هي الوقت، أي اعتبار حدوث حالة توقف تام إذا استغرقت المعاملة وقتًا طويلاً حتى تكتمل. عند العثور على حالة توقف تام، يتم التراجع عن إحدى المعاملات، مما يسمح بإكمال المعاملات الأخرى المشاركة في حالة توقف تام. يمكن أن يعتمد اختيار الضحية على قيمة المعاملات أو أقدميتها (مخططات الانتظار والموت والانتظار).

كل معاملة T يتم تعيين الطابع الزمني TS تحتوي على وقت بدء المعاملة.

انتظر الموت.

إذا الملخص (تي) < تيسي (تي)ثم Ti ينتظر وإلا Ti يتراجع ويبدأ مرة أخرى بنفس الطابع الزمني.

إذا حصلت معاملة حديثة على مورد وطلبت معاملة أقدم نفس المورد، فسيتم السماح للمعاملة الأقدم بالانتظار. إذا حصلت معاملة أقدم على مورد، فسيتم التراجع عن المعاملة الأحدث التي تطلب ذلك المورد.

انتظر الجرح.

إذا الملخص (تي) < تيسي (تي)ثم Tj يتراجع ويبدأ مرة أخرى بنفس الطابع الزمني، وإلا Ti انتظار.

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

الحل المتشائم لمشكلة حالة توقف تام لا يسمح للمعاملة بالبدء في التنفيذ إذا كان هناك خطر حدوث حالة توقف تام.

للكشف عن حالة توقف تام، يتم إنشاء رسم بياني (رسم بياني للانتظار، رسم بياني للانتظار)، تكون رؤوسه عبارة عن معاملات، ويتم توجيه الحواف من المعاملات التي تنتظر إصدار البيانات إلى المعاملة التي التقطت هذه البيانات. يعتبر حدوث حالة توقف تام إذا كان الرسم البياني يحتوي على حلقة. يعد إنشاء رسم بياني للانتظار، خاصة في قواعد البيانات الموزعة، إجراءً مكلفًا.

القفل على مرحلتين - يمنع حالات الجمود عن طريق الاستيلاء على جميع الموارد المستخدمة من قبل المعاملة في بداية المعاملة وتحريرها في النهاية

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

يضمن الالتزام على مرحلتين تنفيذ الالتزام على كافة النسخ المتماثلة لقاعدة البيانات

تقوم كل قاعدة بيانات بإدخال معلومات حول البيانات التي سيتم تغييرها في السجل وتستجيب للمنسق بالموافقة (مرحلة التصويت). وبعد أن يجيب الجميع بالموافقة، يرسل المنسق إشارة تلزم الجميع بالالتزام. بعد الالتزام، تستجيب الخوادم بشكل جيد؛ إذا لم يستجب واحد على الأقل بشكل جيد، فسيرسل المنسق إشارة لإلغاء التغييرات على جميع الخوادم (مرحلة الإكمال).

طريقة الطابع الزمني

يتم التراجع عن معاملة قديمة عند محاولة الوصول إلى البيانات المتعلقة بمعاملة أقدم

يتم تعيين طابع زمني لكل معاملة TS المقابلة لوقت بدء التنفيذ. لو Ti انتهى Tjثم الملخص (تي) < تيسي (تي).

عندما يتم التراجع عن معاملة ما، يتم تعيين طابع زمني جديد لها. كل كائن بيانات Q المشاركة في الصفقة يتم تمييزها بعلامتين. W-TS(س) — الطابع الزمني لأحدث معاملة أكملت السجل بنجاح Q. آر-TS(س) - الطابع الزمني لأحدث معاملة تم فيها تسجيل القراءة Q.

عندما الصفقة T طلبات قراءة البيانات Q خياران ممكنان.

إذا تيسي (تي) < W-TS(س)أي أنه تم تحديث البيانات بمعاملة أحدث ثم المعاملة T يتراجع.

إذا تيسي (تي) >= W-TS(س)، ثم تتم القراءة و آر-TS(س) أصبح ماكس (R-TS(Q)، TS(T)).

عندما الصفقة T يطلب تغييرات البيانات Q خياران ممكنان.

إذا تيسي (تي) < آر-TS(س)أي أن البيانات قد تمت قراءتها بالفعل من خلال معاملة أصغر سنًا، وإذا تم إجراء تغيير، فسينشأ تعارض. عملية T يتراجع.

إذا تيسي (تي) < W-TS(س)أي أن المعاملة تحاول الكتابة فوق قيمة أحدث، ويتم التراجع عن المعاملة T. وفي حالات أخرى، يتم تنفيذ التغيير و W-TS(س) يصبح متساويا تيسي (تي).

لا يلزم إنشاء رسم بياني انتظار باهظ الثمن. تعتمد المعاملات الأقدم على المعاملات الأحدث، لذلك لا توجد دورات في الرسم البياني للانتظار. لا توجد حالات توقف تام لأنه لا يتم انتظار المعاملات ولكن يتم التراجع عنها على الفور. التراجعات المتتالية ممكنة. لو Ti توالت بعيدا، و Tj قرأت البيانات التي قمت بتغييرها Tiثم Tj ينبغي أيضا التراجع. إذا في نفس الوقت Tj وقد تم ارتكابها بالفعل، فسيكون هناك انتهاك لمبدأ الاستقرار.

أحد الحلول للتراجع المتتالية. تكمل المعاملة جميع عمليات الكتابة في النهاية، ويجب أن تنتظر المعاملات الأخرى حتى تكتمل هذه العملية. تنتظر المعاملات الالتزام بها قبل قراءتها.

قاعدة توماس للكتابة - شكل مختلف من طريقة الطابع الزمني حيث يُحظر استبدال البيانات التي تم تحديثها بواسطة معاملة أصغر بمعاملة أقدم

عملية T يطلب تغييرات البيانات Q. إذا تيسي (تي) < W-TS(س)، أي أن المعاملة تحاول الكتابة فوق قيمة أحدث، ولا يتم التراجع عن المعاملة T كما هو الحال في طريقة الطابع الزمني.

المصدر: www.habr.com

إضافة تعليق