مستويات العزل
تحدد مستويات العزل مدى حماية المعاملة من تأثيرات المعاملات المتزامنة الأخرى، مع التضحية ببعض ضمانات العزل مقابل زيادة التزامن والإنتاجية.
Definition
مستوى العزل هو مواصفة للشذوذات التزامنية التي قد تلاحظها المعاملة؛ المستويات الأعلى تمنع المزيد من الشذوذات (حتى قابلية التسلسل الكاملة) على حساب تقليل التزامن، بينما تسمح المستويات الأدنى بشذوذات معينة مقابل الأداء.
Scope
يغطي هذا الموضوع مستويات العزل القياسية — القراءة غير الملتزمة (read uncommitted)، والقراءة الملتزمة (read committed)، والقراءة المتكررة (repeatable read)، والقابلة للتسلسل (serializable) — المعرفة من حيث الظواهر (القراءة القذرة، القراءة غير المتكررة، الشبح) التي يسمح بها أو يمنعها كل مستوى، والنقد المؤثر الذي أعاد صياغتها من حيث الشذوذات المسموح بها، وعزل اللقطة (snapshot isolation) المهم عمليًا وشذوذاته مثل انحراف الكتابة (write skew). ويتناول المفاضلة بين الاتساق والتزامن. ويستثني آليات القفل والإصدارات المتعددة الأساسية التي تنفذ هذه المستويات.
Core questions
- ما هي الشذوذات — القراءة القذرة، القراءة غير المتكررة، الشبح — التي يسمح بها كل مستوى عزل؟
- كيف يحدد معيار SQL مستويات العزل الأربعة؟
- لماذا انتقد الباحثون التعريفات القائمة على الشذوذات بأنها غامضة؟
- أين يقع عزل اللقطة (snapshot isolation)، وما هي الشذوذات (مثل انحراف الكتابة) التي يمكن أن يسمح بها؟
- كيف تختار التطبيقات مستوى العزل لعبء عمل معين؟
Key concepts
- القراءة غير الملتزمة
- القراءة الملتزمة
- القراءة المتكررة
- القابلة للتسلسل
- القراءة القذرة
- القراءة غير المتكررة
- قراءة الشبح
- عزل اللقطة وانحراف الكتابة
Key theories
- مستويات العزل القائمة على الشذوذات
- يحدد معيار SQL مستويات العزل من خلال أي من الظواهر الثلاثة — القراءات القذرة، والقراءات غير المتكررة، والأشباح — التي تسمح بها، وتتراوح من القراءة غير الملتزمة (يُسمح بها جميعًا) إلى القابلة للتسلسل (لا يُسمح بأي منها).
- نقد مستويات عزل ANSI
- أظهر بيرنسون وزملاؤه أن تعريفات المعيار القائمة على الظواهر غامضة ولا تميز بوضوح أنظمة الإصدارات المتعددة، وقدموا عزل اللقطة كمستوى مميز ومنفذ على نطاق واسع لم يتم التقاطه بواسطة التعريفات الأصلية.
- عزل اللقطة وشذوذاته
- في ظل عزل اللقطة، تقرأ كل معاملة لقطة متسقة اعتبارًا من بدايتها، مما يوفر سلوك قراءة قويًا بدون أقفال قراءة، ولكنه قد يسمح بشذوذات غير قابلة للتسلسل مثل انحراف الكتابة، مما يحفز عزل اللقطة القابل للتسلسل.
Clinical relevance
يُعد مستوى العزل خيارًا روتينيًا ولكنه ذا أهمية كبيرة لمطوري التطبيقات: قد يؤدي اختيار مستوى ضعيف جدًا إلى إفساد البيانات بصمت من خلال شذوذات دقيقة، بينما قد يؤدي استخدام مستوى قابل للتسلسل دائمًا إلى خنق الإنتاجية، لذا فإن فهم المستويات ضروري لتطبيقات المعاملات الصحيحة وذات الأداء العالي.
History
حدد معيار ANSI/ISO SQL مستويات العزل من حيث الظواهر المسموح بها. كشف نقد عام 1995 من قبل بيرنسون، بيرنشتاين، جراي، وعائلة أونيل عن غموض في تلك التعريفات ووصف عزل اللقطة (snapshot isolation)، الذي اعتمدته قواعد البيانات متعددة الإصدارات السائدة. حددت الأعمال اللاحقة عزل اللقطة القابل للتسلسل (serializable snapshot isolation) لسد الفجوة المتبقية في الشذوذات.
Debates
- تعريف العزل بالشذوذات مقابل قابلية التسلسل
- تعريفات قائمة الشذوذات في المعيار سهلة الصياغة ولكنها غامضة ولا تتناسب مع أنظمة الإصدارات المتعددة؛ البديل هو تعريف الصحة مباشرة عبر قابلية التسلسل، وهو أوضح ولكنه أصعب في الربط بالمستويات التي يكوّنها المطورون عمليًا.
Key figures
- Jim Gray
- Philip Bernstein
- Hal Berenson
Related topics
Seminal works
- berenson1995
- gray1992
Frequently asked questions
- ما الفرق بين القراءة غير المتكررة وقراءة الشبح؟
- تحدث القراءة غير المتكررة عندما تقرأ المعاملة نفس الصف مرتين وترى قيمًا مختلفة لأن معاملة أخرى قامت بتحديثه في هذه الأثناء. تحدث قراءة الشبح عندما تعيد المعاملة تشغيل استعلام بشرط بحث وترى صفوفًا جديدة أدخلتها معاملة أخرى. تمنع القراءة المتكررة الأولى؛ فقط القابلة للتسلسل تمنع الأشباح بشكل موثوق.
- هل عزل اللقطة هو نفسه القابل للتسلسل؟
- لا. يمنح عزل اللقطة كل معاملة لقطة متسقة ويمنع القراءات القذرة وغير المتكررة، ولكنه ليس قابلاً للتسلسل بالكامل: فهو يسمح بشذوذات انحراف الكتابة حيث تقرأ معاملتان بيانات متداخلة وتقومان بتحديثات منفصلة تنتهك معًا قيدًا. يوسع عزل اللقطة القابل للتسلسل هذا للقضاء على مثل هذه الشذوذات.