الانتقال إلى المحتوى الرئيسي

ما هو مع (نولوك) في سكل وما هو عليه ل?

  • الدكتور جمال الدّين الماني
  • المدونة

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

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

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

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

  1. ما هو قفل قراءة غير ملتزم في سكل ولماذا هو مطلوب?
  2. تعريف قفل القراءة غير الملتزم به
  3. كيف يعمل قفل القراءة غير الملتزم به?
  4. تأثير قفل القراءة غير الملتزم على الأداء
  5. مخاطر استخدام قفل القراءة غير الملتزم
  6. متى ولماذا تستخدم قفل القراءة غير الملتزم?
  7. بدائل لقفل القراءة غير الملتزم
  8. سؤال وجواب
  9. لماذا استخدام مع (نولوك) في سكل?
  10. كيف مع (نولوك) العمل في سكل?
  11. ما هي المشاكل المحتملة التي يمكن أن تنشأ عند استخدام مع (نولوك) في سكل?

ما هو قفل قراءة غير ملتزم في سكل ولماذا هو مطلوب?

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

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

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

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

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

تحديد قفل القراءة غير الملتزم به

قراءة قفل غير ملتزم (أو" القراءة القذرة") هو مستوى خاص من العزلة الصفقة في سكل التي تسمح معاملة واحدة لقراءة البيانات التي تم تعديلها من قبل معاملة أخرى ولكن لم تكتمل بعد (ارتكبت). هذا يعني أن البيانات التي قد تكون غير متسقة مؤقتا أو في طور التعديل يمكن قراءتها بواسطة معاملات أخرى.

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

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

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

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

كيف يعمل قفل القراءة غير الملتزم به?

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

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

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

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

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

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

تأثير قفل القراءة غير الملتزم على الأداء

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

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

1. قراءة غير قابلة للتكرار (قراءة غير قابلة للتكرار)

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

2. القذرة قراءة

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

3. أقفال تنافسية

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

4. تنفيذ الطلب من قبل المجدول

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

الاستنتاجات

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

مخاطر استخدام قفل القراءة غير الملتزم

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

1. القذرة يقرأ

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

2. قراءة غير قابلة للتكرار

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

3. قراءات فانتوم

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

4. حجب وتصعيد الحجب

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

5. غير متوافق مع العمليات الأخرى

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

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

متى ولماذا تستخدم قفل القراءة غير الملتزم?

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

ومع ذلك ، يحتوي قفل القراءة غير الملتزم على بعض الميزات التي يمكن أن تؤدي إلى نتائج غير متوقعة:

  • عدم تناسق البيانات: عند استخدام قفل القراءة غير الملتزم به ، يمكن للاستعلامات قراءة البيانات المعدلة ولكن لم يتم الالتزام بها بعد. هذا يمكن أن يؤدي إلى قراءة البيانات "القذرة" ، والتي يمكن تعديلها أو حذفها في المعاملات اللاحقة.
  • قراءات غير قابلة للتكرار: عند استخدام قفل القراءة غير الملتزم به ، قد يتم إجراء قراءات متكررة في نفس المعاملة ، مما قد يؤدي إلى نتائج مختلفة. يحدث هذا عندما تقوم معاملة أخرى بتعديل البيانات ، بين القراءات المتكررة للمعاملة الأولى.
  • التحديث المفقود: عند استخدام قفل القراءة غير الملتزم به ، يمكن للمعاملات المتعددة قراءة وتعديل نفس البيانات في نفس الوقت. قد يؤدي هذا إلى فقدان التغييرات التي تم إجراؤها بواسطة معاملة واحدة إذا قامت معاملة أخرى بتحديث البيانات قبل المعاملة الأولى.

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

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

بدائل للحظر قراءة غير ملتزم بها

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

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

بدلا من استخدام قفل القراءة غير الملتزم ، يمكنك التفكير في البدائل التالية:

  1. قراءة تأمين ملتزم-على عكس قراءة غير ملتزم بها ، قراءة ملتزمة يضمن أن كل سجل قراءة ثابتة ودون تغيير حتى نهاية الصفقة. ومع ذلك ، عند استخدام القراءة الملتزمة ، قد تحدث مشكلة قراءة غير قابلة للتكرار عندما تقوم معاملة أخرى بتعديل البيانات أثناء المعاملة.
  2. قراءة قابلة للتكرار قفل - قراءة قابلة للتكرار يتجنب مشكلة قراءة غير قابلة للتكرار عن طريق تأمين البيانات قراءة أثناء المعاملة حتى يتم الانتهاء منه. يضمن ذلك عدم تغيير البيانات أثناء المعاملة ، ولكن قد تظل هناك مشكلة قراءة وهمية عند إضافة سجلات جديدة إلى نتائج الاستعلام.
  3. قفل قابل للتسلسل-يمنع التسلسل أي عمليات قراءة أو كتابة متزامنة عن طريق قفل البيانات حتى تكتمل المعاملة. يوفر هذا أقصى قدر من العزل ، ولكن يمكن أن يؤدي إلى مشكلة قراءة وهمية عند إضافة سجلات جديدة إلى نتائج الاستعلام.
  4. استخدام نهج" قراءة بدون قفل " فقط في الحالات القصوى — يمكن أن يكون القفل غير الملتزم للقراءة مفيدا في الحالات القصوى حيث يكون الأداء مطلوبا حتى على حساب دقة البيانات. في جميع الحالات الأخرى ، يوصى باستخدام مستوى عزل أكثر صرامة لضمان صحة البيانات.

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

سؤال وجواب

لماذا استخدام مع (نولوك) في سكل?

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

كيف مع (نولوك) العمل في سكل?

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

ما هي المشاكل المحتملة التي يمكن أن تنشأ عند استخدام مع (نولوك) في سكل?

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