যদি ক্লায়েন্টটি ডেটা পেতে দীর্ঘ সময় নেয় এবং পরিবর্তে এসকিউএল সার্ভারের কাছে এটি স্বীকৃতি প্রেরণ করে যে এটি এসকিউএল সার্ভারের ডেটা পেয়েছে অপেক্ষা করতে হবে, এই অপেক্ষার কারণে এসকিউএল সার্ভার ক্লায়েন্টের কাছ থেকে স্বীকৃতি না পাওয়া পর্যন্ত কোয়েরির অধীন থাকা লকগুলি প্রকাশ করবে না।
এটি সঠিক নয়, এটি বিচ্ছিন্নতা স্তরের উপর নির্ভরশীল।
ডিফল্ট READ COMMITTED
লকগুলিতে বিবৃতি কার্যকর করার সময়কালের জন্য রাখা হয় না। READ COMMITTED
বিবৃতি স্তরের পঠন ধারাবাহিকতা সরবরাহ করে না, একমাত্র গ্যারান্টি হ'ল আপনি অনির্বাচিত ডেটা পড়তে পারবেন না। একটি ভাগ করা লক অধিগ্রহণ করা হয় এবং সারিটি পড়ার জন্য রাখা হয় এবং তারপরে ছেড়ে দেওয়া হয়।
যদি না আপনার LOB প্রকার থাকে।
এলওবি ধরণের, সম্ভাব্যভাবে খুব বড় হওয়ার কারণে এটি বাফার করা যায় না। মূলত আপনাকে REPEATABLE READ
আচরণ প্রদানের মাধ্যমে স্টেটমেন্ট সম্পূর্ণ না হওয়া পর্যন্ত একটি ভাগ করা লক অবশ্যই অর্জন করতে হবে এবং ধরে রাখতে হবে READ COMMITTED
।
যদি আমি একটি উচ্চ-বিলম্বিত নেটওয়ার্কের মাধ্যমে কোনও এমএসএসকিউএল ডাটাবেসে একটি কল করে থাকি, তবে এই লেটেন্সিটির কারণে টেবিলের লকগুলি ঘটতে পারে?
প্রচ্ছন্নতা টেবিল লক না ঘটায়, না। যাইহোক, যদি কোনও টেবিল লকটি অধিগ্রহণ করা হয় তবে বিলম্বটি এটি দীর্ঘায়িত হতে চলেছে।
আমার ( @ রেমাসুরাসানু ) এর চেয়ে আরও ভাল যিনি এর যান্ত্রিকগুলি জানেন এমন কাউকে উদ্ধৃত করা :
ফলশ্রুতি কার্যকর হওয়ার সাথে সাথে ক্লায়েন্ট প্রোগ্রামে ফিরে আসে returned সারিগুলি 'বুদ্বুদ' হিসাবে এক্সিকিউশন ট্রিটিকে উপরে রাখে, শীর্ষস্থানীয় অপারেটরকে সাধারণত এই সারিগুলি নেটওয়ার্ক বাফারগুলিতে লিখে ক্লায়েন্টকে ফেরত পাঠানো হয়। ফলাফলটি কিছু মধ্যবর্তী স্টোরেজ (মেমরি বা ডিস্ক) এর মধ্যে তৈরি করা হয় না এবং তারপরে ক্লায়েন্টের কাছে ফেরত পাঠানো হয়, পরিবর্তে এটি তৈরি করা হয় যেমন ফেরত পাঠানো হয় (ক্যোয়ারী কার্যকর হয়)। ক্লায়েন্টকে ফলাফল পাঠানো অবশ্যই নেটওয়ার্ক ফ্লো কন্ট্রোল প্রোটোকলের সাপেক্ষে। যদি ক্লায়েন্ট সক্রিয়ভাবে ফলাফল গ্রাস না করে (যেমন, স্কেলডাটাডার রিডারকে কল করে) then প্রশ্ন.[সূত্র]
ফলাফলগুলি এসকিউএল সার্ভার যত তাড়াতাড়ি সরবরাহ করতে পারে তত তাড়াতাড়ি গ্রাস করা হয় না, তা ক্লায়েন্ট বা নেটওয়ার্কের কারণে হোক, আমরা ASYNC_NETWORK_IO
অপেক্ষা করতে থাকি accum পুনরাবৃত্তি করার জন্য, এটি লকগুলি যেগুলি অধিগ্রহণ করা হয়, কেবলমাত্র তাদের ধারণকালের মধ্যে প্রভাবিত করবে না।
nolock
ইঙ্গিত নির্দিষ্ট না করেন তবে সর্বদা একটি লক থাকবে । বিলম্বটি কেবলমাত্র কতক্ষণ লকটি অনুষ্ঠিত হবে তা নির্ধারণ করে।