رسم بياني للأسبقية

يُستخدم مخطط الأسبقية ، المعروف أيضًا بمخطط التعارض [ 1 ] ومخطط التسلسل ، في سياق التحكم بالتزامن في قواعد البيانات . [ 2 ] وهو الرسم البياني الموجه الذي يمثل أسبقية المعاملات في الجدول الزمني، كما يتضح من أسبقية العمليات المتعارضة في المعاملات. يكون الجدول الزمني قابلاً للتسلسل في حالة التعارض إذا وفقط إذا كان مخطط أسبقية المعاملات الملتزمة فيه غير دوري .

يحتوي مخطط الأسبقية للجدول S على ما يلي:

  • عقدة لكل معاملة ملتزمة في S
  • يُنشأ قوس من العملية T i إلى العملية T j إذا سبق إجراءٌ من T i أحد إجراءات T j وتعارض معه . أي أن الإجراءات تنتمي إلى معاملات مختلفة، وأن أحد الإجراءات على الأقل هو عملية كتابة، وأن الإجراءات تصل إلى نفس الكائن (قراءة أو كتابة).

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

أمثلة على مخططات الأسبقية

المثال 1

S=[تي1تي2R(أ)R(أ)أ=أ*5R(ب)دبليو(أ)ب=ب+أR(ب)دبليو(ب)ب=ب*10دبليو(ب)]{\displaystyle S={\begin{bmatrix}T1&T2\\R(A)&R(A)\\A=A*5&R(B)\\W(A)&B=B+A\\R(B)&W(B)\\B=B*10&\\W(B)&\\\end{bmatrix}}}

المثال 2

د=R1(أ){\displaystyle D=R1(A)}R2(ب){\displaystyle R2(B)}دبليو2(أ){\displaystyle W2(A)}جoم0.2{\displaystyle Com.2}دبليو1(أ){\displaystyle W1(A)}جoم1{\displaystyle Com.1}دبليو3(أ){\displaystyle W3(A)}جoم0.3{\displaystyle Com.3}

مخطط أسبقية الجدول الزمني D، بثلاث معاملات. نظرًا لوجود دورة (طولها 2؛ بحافتين) عبر المعاملتين الملتزمتين T1 وT2، فإن هذا الجدول الزمني (السجل) غير قابل للتسلسل في حالة التعارض . لاحظ أن التزام المعاملة 2 لا يُؤثر على إنشاء مخطط الأسبقية.

المثال 3

مثال على اختبار قابلية التسلسل

خوارزمية لاختبار قابلية التسلسل المتعارض لجدول S مع مثال لجدول.

S=[تي1تي2تي3R(أ)دبليو(أ)جoم.دبليو(أ)جoم.دبليو(أ)جoم.]{\displaystyle S={\begin{bmatrix}T1&T2&T3\\R(A)&&\\&W(A)&\\&Com.&\\W(A)&&\\Com.&&\\&&W(A)\\&&Com.\\\end{bmatrix}}}

أو

S=R1(أ){\displaystyle S=R1(A)}دبليو2(أ){\displaystyle W2(A)}جoم0.2{\displaystyle Com.2}دبليو1(أ){\displaystyle W1(A)}جoم1{\displaystyle Com.1}دبليو3(أ){\displaystyle W3(A)}جoم0.3{\displaystyle Com.3}

  1. لكل معاملة T x مشاركة في الجدول S، أنشئ عقدة تحمل اسم Ti في مخطط الأسبقية. وبالتالي، يحتوي مخطط الأسبقية على T 1 و T 2 و T 3 .
  2. لكل حالة في المجموعة S حيث يقوم T j بتنفيذ عملية قراءة العنصر (X) بعد أن يقوم T i بتنفيذ عملية كتابة العنصر (X)، أنشئ حافة (T i → T j ) في مخطط الأسبقية. لا يحدث هذا في المثال أعلاه، حيث لا توجد عملية قراءة بعد عملية كتابة.
  3. لكل حالة في المجموعة S حيث يقوم T j بتنفيذ عملية كتابة العنصر (X) بعد أن يقوم T i بتنفيذ عملية قراءة العنصر (X)، أنشئ حافة (T i → T j ) في مخطط الأسبقية. ينتج عن ذلك حافة موجهة من T 1 إلى T 2 (حيث أن T 1 لديه R(A) قبل أن يكون لدى T 2 W(A) ).
  4. لكل حالة في المجموعة S حيث يقوم T j بتنفيذ أمر كتابة العنصر (X) بعد أن يقوم T i بتنفيذ أمر كتابة العنصر (X)، أنشئ حافة (T i → T j ) في مخطط الأسبقية. ينتج عن ذلك حواف موجهة من T 2 إلى T 1 ، ومن T 2 إلى T 3 ، ومن T 1 إلى T 3 .
  5. يكون الجدول الزمني S قابلاً للتسلسل إذا وفقط إذا لم يكن لمخطط الأسبقية أي دورات. وبما أن T1 و T2 يشكلان دورة، فإن المثال أعلاه غير قابل للتسلسل (بسبب التعارض).

مراجع