it-swarm.asia

ما هو تصعيد القفل؟

سئلت هذا السؤال في مقابلة وليس لدي إجابة. يمكن لأي شخص هنا أن يشرح؟

49
Kilhoffer

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

ستفعل ذلك تلقائيًا ، على الرغم من أنه يمكنك تعيين علامات على الجداول (انظر ALTER TABLE في الكتب على الإنترنت) للتحكم في سياسة تصعيد القفل على هذا الجدول المعين. على وجه الخصوص ، كان تصعيد قفل سابق لأوانه أو حريصًا جدًا على أن يكون مشكلة في الإصدارات القديمة من Sybase و SQL Server عندما كان لديك عمليتان لكتابة صفوف منفصلة في نفس الصفحة في نفس الوقت. إذا رجعت بعيدًا بما يكفي (IIRC SQL Server 6.5) ، لم يكن SQL Server يحتوي على تأمين الصفوف ولكن يمكنه فقط تأمين الجداول أو الصفحات. حيث حدث هذا ، يمكنك الحصول على خلاف بين إدخالات السجلات في نفس الصفحة ؛ غالبًا ما تضع فهرسًا مجمّعًا على الطاولة بحيث تنتقل الإدخالات الجديدة إلى صفحات مختلفة.

45
ConcernedOfTunbridgeWells

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

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

21
Bill the Lizard

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

  • يتم تأمين أقفال الصف دائمًا إلى أقفال الطاولة
  • يتم تصعيد أقفال الصفحة أيضًا إلى أقفال الطاولة.

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

إذا كان الجدول يحتوي على عدد قليل جدًا من تحديثات الصفوف ، فسيحاول محرك SQL أخذ أقفال الصفوف على تلك الصفوف أو قفل الصفحة على تلك الصفحات. لنفترض أن الأمر قد أخذ Row-Lock. ولكن إذا كانت تحديثات الصف تزيد من العتبة (أقفال 5k تقريبًا) ، فبدلاً من أخذ أقفال الصفوف المتعددة ، فإنها تأخذ قفل طاولة واحدًا. وبالتالي ، هذا يقلل من الذاكرة الزائدة عن طريق تحرير عدة أقفال الصفوف وأخذ قفل طاولة واحد ، لكنه يزيد من التوافق. يحدث نفس الشيء مع قفل الصفحة.

حد تصعيد القفل هو 5000 قفل على الأقل ، ويعتمد على عدة عوامل ، تم شرح شرح مفصل لقفل التصعيد هنا في MSDN BoL: - https://technet.Microsoft.com/en-us/library/ms184286 (v = sql.105) .aspx

12
Manoj Pandey

تصعيد القفل يعني تحويل القفل إلى وضع أكثر تقييدًا. غالبًا ما يظهر هذا في قواعد البيانات. قد يحتوي الاستعلام على مورد مقفل لـ "مشترك" ويقوم بتصعيده إلى "حصري" لإجراء التحديث.

5
Richard T