(NOLOCK) বনাম NOLOCK


24

আমি এমন কোনও কোয়েরি দেখেছি যা দেখে মনে হচ্ছে কিছু ব্লক করার তদন্ত করছি:

SELECT SomeField FROM SomeTable NOLOCK

আমি দেখেছি NOLOCKএবং কৌতূহলী ছিলাম কীভাবে এটি অন্যান্য ক্যোয়ারিকে ব্লক করে দিতে পারে, এই ক্ষেত্রে DELETEবিবৃতিতে। আমি লকগুলি ব্যবহার করে একটি তাত্ক্ষণিকভাবে sp_lockদেখেছি এবং আমি যা দেখেছি তা এখানে:

DB      S   GRANT

TAB     IS  GRANT

PAG    S    GRANT

এখন, আমার বোধগম্যতা হল যে NOLOCKকেবল একটি স্কিমা-স্থিতিশীলতা লক নেওয়ার কথা, কেন তখন এটি আইএস লকটি ধরেছিল?

আমার কৌতূহল বেহাল। আমি BOL লাগছিল এবং সেখানে এটি ব্যবহার করার দুটি উপায় ছিল দেখে WITH (NOLOCK)এবং অবচিত (NOLOCK), তাই আমি ঐ ব্যবহার করে দেখুন করার সিদ্ধান্ত নিয়েছে। আমি নিম্নলিখিত জিজ্ঞাসা চালিয়ে অনুসরণ করে চালিয়েছি sp_lock:

SELECT SomeField FROM SomeTable WITH (NOLOCK)
ডিবি এস গ্রান্ট

ট্যাব এস-এস গ্রান্ট
SELECT SomeField FROM SomeTable (NOLOCK)
ডিবি এস গ্রান্ট

ট্যাব এস-এস গ্রান্ট

নিশ্চিতভাবেই, আমার স্কিমা-স্থিতিশীলতা লক রয়েছে। সুতরাং আমার প্রশ্নটি হ'ল: এখানে কী চলছে? যদি NOLOCK ব্যবহারের জন্য গৃহীত সিনট্যাক্স হয় WITH (NOLOCK)বা হয় (NOLOCK)তবে কোয়েরি ত্রুটিটি বের করে যখন এটি কেবল প্লেইন NOLOCK(প্রথম বন্ধনী ছাড়াই) দিয়ে চলে? যদি এটি সমর্থিত হয় তবে কেন একটি আইএস লক দখল করা হচ্ছে? আমি এখানে কি মিস করছি? আমি একটি উত্তর খুঁজছি অনলাইন, কিন্তু এখন পর্যন্ত সংক্ষেপে এসেছি।

আমি 2008R2 এবং 2012 উভয়ই এটি পরীক্ষা করেছি।


4
SELECT SomeField FROM SomeTable NOLOCK (NOLOCK)ডাবল
নলক

উত্তর:


52
SELECT SomeField
FROM   SomeTable NOLOCK 

মানে আপনি সবেমাত্র এলিয়াস করেছেন SomeTable AS NOLOCK। এটি স্পষ্ট দেখতে নীচের চেষ্টা করুন:

SELECT NOLOCK.SomeField
FROM   SomeTable NOLOCK 

এটি অবশ্যই ক্যোয়ারের লকিং আচরণের উপর কোনও প্রভাব ফেলবে না। ক্যোয়ারী ব্যর্থ হয় না কারণ এসএসএমএসে কীওয়ার্ড হওয়া এবং নীল দেখানো সত্ত্বেও, NOLOCK লেনদেন-এসকিউএল-তে কোনও সংরক্ষিত শব্দ নয় এবং সুতরাং একটি সিনট্যাক্স ত্রুটির কারণ নয়। সংরক্ষিত শব্দের তালিকা: https://msdn.microsoft.com/en-us/library/ms189822.aspx

ইঙ্গিত হিসাবে ব্যবহারের জন্য সঠিক বাক্য গঠন:

  • (NOLOCK) বৈধ তবে অবচিত।
  • WITH (NOLOCK) প্রস্তাবিত বাক্য গঠন।

14
বাহ, নিশ্চিত যে আমি কীভাবে এটি খুঁজে পেলাম না। এটি সত্যিই আমাকে পাগল করে তুলেছিল, এখন আমি কেবল বিব্রত বোধ করি :) কখনও কখনও এটি সাদামাটা জিনিস হয় বলে আমার ধারণা।
ব্রায়ান

2
@ ব্রায়ান কোনও উদ্বেগ নয়, আমাকে সম্প্রতি খুব অনুরূপ কিছু ডিবাগ করতে হয়েছিল, অন্যথায় এটি সম্ভবত এত সহজ ছিল না! আপনি দেখতে পাচ্ছেন যে এমএস কেন সেই বাক্য গঠনটিকে অবমূল্যায়ন করেছে।
গ্যারেথ লিওনস

নলক কি কোনও সংরক্ষিত কীওয়ার্ড নয়? আপনি যদি [নলক] ব্যবহার না করেন তবে অভিযোগ করা উচিত নয়?
অ্যারোনিনাস

6
নাঃ msdn.microsoft.com/en-us/library/ms189822.aspx এটা SSMS নীল প্রদর্শিত হচ্ছে না যদিও আপনি বন্ধ নিক্ষেপ করতে পারেন।
গ্যারেথ লিওনস

ভাল ধরা, LOL। আমার প্রিয় প্রশ্ন / এ আজ।
আরবেরি ইয়ং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.