سؤال

أود أن أطرح بعض الأسئلة المتعلقة بآلية قفل خادم SQL

  1. إذا لم أستخدم تلميح القفل مع عبارة SQL ، فإن SQL Server يستخدم تلميح Pagelock افتراضيًا. هل انا على حق؟؟؟ إذا كانت الإجابة بنعم فلماذا؟ قد يكون ذلك بسبب عامل إدارة الكثير من الأقفال هذا هو الشيء الوحيد الذي أخذته كعلاج ولكن يرجى إعلامي إذا كان هناك آخرون. وأخبرني أيضًا إذا كان بإمكاننا تغيير هذا السلوك الافتراضي إذا كان من المعقول القيام به.

  2. أنا أكتب تطبيقًا من جانب الخادم ، خادم Sync (لا أستخدم Sync Framework) ولدي استعلامات قاعدة بيانات مكتوبة في ملف رمز C# واستخدام اتصال ODBC لتنفيذها. الآن السؤال هو ما هي أفضل طريقة لتغيير القفل الافتراضي من صفحة إلى صف مع مراعاة العيوب (على سبيل المثال ، إضافة تلميح القفل في الاستعلامات ، هذا ما أخطط له).

  3. ماذا لو تم تنفيذ استعلام SQL (SELECT/DML) دون نطاق المعاملة ويحتوي العبارة على تلميح القفل ، فما نوع القفل الذي سيتم الحصول عليه (على سبيل المثال مشترك ، تحديث ، حصري)؟ وبينما يكون مستوى المعاملة في نطاق المعاملات له تأثير على نوع القفل إذا تم استخدام تلميح Rowlock.

  4. أخيرًا ، إذا كان البعض يمكن أن يعطيني عينة حتى أتمكن من اختبار جميع السيناريوهات أعلاه (على سبيل المثال ، رمز Net Dot أو SQL Script)

شكرا موباشار

هل كانت مفيدة؟

المحلول

  1. لا. إنه يقفل لأنه يرى مناسبًا ويصعد الأقفال حسب الحاجة

  2. دع محرك DB يديره

  3. انظر النقطة 2

  4. انظر النقطة 2

سأستخدم تلميحات القفل فقط إذا كنت تريد سلوكيات محددة وبعض طوابير أو عدم الحظر (القذرة) يقرأ.

بشكل عام ، لماذا تعتقد أن محرك DB لا يستطيع فعل ما تريد افتراضيًا؟

نصائح أخرى

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

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

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

إلى أن تعلم أن لديك بالفعل مشكلة تصعيد قفل / قفل ، فإنك تخاطر قبل الأوان بتحسين مشكلة غير موجودة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top