سؤال

بالنظر إلى بيان التحديث التالي:

UPDATE @TableVariable
SET city = T2.city
FROM @TableVariable TV
INNER JOIN dbo.TABLE_1 T1 WITH (NOLOCK)
    ON  (TV.customer_id = T1.customer_id)
INNER JOIN dbo.TABLE_2 T2 WITH (NOLOCK)
    ON  (T1.address_id = T2.address_id)

هل سيتم تكريم (Nolock) على Table_1 و Table_2؟

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

المحلول

هل سيتم تكريم (Nolock) على Table_1 و Table_2؟

نعم هم سوف.

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

ما هو الغرض من NOLOCK تلميحات؟ لماذا تريد تحديث متغير الجدول الخاص بك مع البيانات القذرة؟

نصائح أخرى

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

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