সাথে (নোলক) বনাম সেট ট্রান্সএকশন বিচ্ছিন্নতা স্তর পড়ুন নিঃশব্দে


118

কেউ যখন আমাকে এর WITH (NOLOCK)বিপরীতে ব্যবহার করতে পারে সে সম্পর্কে আমাকে কিছু গাইডেন্স দিতে পারেSET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

প্রত্যেকের উপকার / বিভক্তি কী কী? অন্যের বিপরীতে আপনি যে কোনও অনিচ্ছাকৃত ফলাফল ব্যবহার করে চলেছেন সেগুলি কি?

উত্তর:


105

তারা একই জিনিস। আপনি যদি set transaction isolation levelবিবৃতিটি ব্যবহার করেন তবে এটি সংযোগের সমস্ত টেবিলের জন্য প্রযোজ্য, সুতরাং আপনি যদি কেবলমাত্র nolockএক বা দুটি টেবিলের উপর একটি ব্যবহার করতে চান তবে এটি ব্যবহার করুন; অন্যথায় অন্যটি ব্যবহার করুন।

দুজনেই আপনাকে নোংরা পড়বে। আপনি যদি এটির সাথে ঠিক থাকেন তবে সেগুলি ব্যবহার করুন। যদি আপনার নোংরা পাঠ্য না থাকে তবে তার পরিবর্তে বিবেচনা করুন snapshotবা serializableইঙ্গিত করুন।


আপনি যদি ড্যান্ট ডেটা সম্পর্কে চিন্তা না করেন REPEATABLE READতার পরিবর্তে বিবেচনা করুন SERIALIZABLESERIALIZABLEসত্যিই সীমাবদ্ধ এবং এটি কখনও ব্যবহার করা উচিত নয় (উদাহরণস্বরূপ কিছু সমালোচনামূলক আর্থিক অ্যাপ্লিকেশনগুলিতে বাদে)।
Kryptos

25

উইথ (নোলক) একটি টেবিল স্তরের একটি ইঙ্গিত। সংযোগ প্রভাবিত করে READ_UNCOMMITTED এ লেনদেনের বিচ্ছিন্নতা স্তর সেট করা। পার্থক্য সুযোগের দিক দিয়ে। এসকিউএল সার্ভার ডকুমেন্টেশনে এখানে READUNCOMMITTED এবং NOLOCK দেখুন:

http://technet.microsoft.com/en-us/library/ms187373.aspx

ট্রানসেকশন আইসোলেশন লেভেলের জন্য: http://technet.microsoft.com/en-us/library/ms173763.aspx


10
  • NOLOCK টেবিলের স্থানীয় (বা দেখা ইত্যাদি)
  • রিড আনকমিটেড প্রতি সেশনে / সংযোগে

গাইডলাইন হিসাবে ... স্ট্যাকওভারফ্লো এবং বৈদ্যুতিক আন্তঃবিবাহ থেকে একটি এলোমেলো অনুসন্ধান ...


শেষ লিঙ্ক "NOLOCK ব্যবহার করা খারাপ কেন .." আর বিদ্যমান নেই।
সংগম

1
বৈদ্যুতিক আন্তঃমূল্য অমূল্য। আমার দিন কিছু রোদ যোগ করার জন্য ধন্যবাদ।
জেজেএস

9

আমার জ্ঞানের কাছে কেবলমাত্র পার্থক্য হ'ল স্ট্রোমি বলেছিলেন প্রভাবগুলির সুযোগ। কোনও টেবিলের সাথে নলক ইঙ্গিত এবং অধিবেশনটিতে অননুমোদিত পাঠান।

যে সমস্যাগুলি ঘটতে পারে সেগুলি সম্পর্কে এটি ধারাবাহিকতা। আপনি যদি যত্নশীল হন তবে সচেতন হন যে আপনি নোংরা পাঠ্য যা পেয়েছিলেন যা অন্য তথ্যগুলিকে ভুল তথ্যের দ্বারা চালিত করার জন্য প্রভাবিত করতে পারে get

আমি ব্যক্তিগতভাবে মনে করি না যে আমি এ থেকে কোনও সমস্যা দেখেছি তবে আমি কীভাবে নলক ব্যবহার করি তার কারণে এটি আরও বেশি হতে পারে। আপনার সচেতন হওয়া দরকার যে এমন পরিস্থিতিতে রয়েছে যেখানে এটি ব্যবহার করা ঠিক হবে। পরিস্থিতি যেখানে আপনি বেশিরভাগই কোনও টেবিলে নতুন ডেটা যুক্ত করছেন তবে একটি ডেটা দৃশ্যের জন্য যাচাই করার জন্য পিছনে আসার মতো আরও একটি প্রক্রিয়া রয়েছে। এটি সম্ভবত ঠিক থাকবে কারণ প্রধান ফ্লোতে কোনও পড়ার সময় ফিরে যাওয়া এবং সারিগুলি আপডেট করা অন্তর্ভুক্ত নয়।

এছাড়াও আমি বিশ্বাস করি যে এই দিনগুলিতে আপনার বহু সংস্করণ কনকুরન્સી নিয়ন্ত্রণে থাকা উচিত into আমি বিশ্বাস করি যে তারা 2005 এ এটি যুক্ত করেছে এবং এটি পাঠকদের ডাটাবেসগুলির স্ন্যাপশট ব্যবহারের মাধ্যমে পাঠককে ব্লক করা থেকে বিরত রাখতে সহায়তা করে। আমি একটি লিঙ্ক অন্তর্ভুক্ত করব এবং আরও গবেষণা পাঠকের কাছে ছেড়ে দেব:

MVCC

ডাটাবেস বিচ্ছিন্নতা স্তর


+1 টি যদিও আমি READ_UNCOMMITTED এর "" আপনি উচিত "দৃষ্টিভঙ্গি ঢোকা না, শন এই চমত্কারভাবে জুড়ে এছাড়া ক্ষেত্রে যেখানে আপনি (পৃষ্ঠা টুকরা কারণে) SQL সার্ভার দুইবার একই সারিতে পড়তে পারেন
Anon246

6

আপনি কোনও দৃশ্যে সেট ট্রানজেকশন আইসোলেশন লেভেল রিড আনমনমিট ব্যবহার করতে পারবেন না (সেখানে কেবলমাত্র আপনার কাছে একটি স্ক্রিপ্ট থাকতে পারে), তাই নোংরা সারিগুলি অন্তর্ভুক্ত করা উচিত হলে আপনাকে (নলক) ব্যবহার করতে হবে।


4

যেহেতু প্রতিটি টেবিলের জন্য আপনার সাথে উইথ (নলক) ব্যবহার করতে হবে এটি প্রতিটি FROM বা JOIN ধারাতে এটি লিখে বিরক্তিকর হতে পারে। তবে একে "নোংরা" পড়া বলা হওয়ার কারণ রয়েছে। সুতরাং আপনি কখন করবেন তা আপনার সত্যই জানা উচিত, এবং এটি সেশনের সুযোগের জন্য ডিফল্ট হিসাবে সেট করা হয়নি। কেন?

একটি উইথ (নলক) ভুলে যাওয়া আপনার প্রোগ্রামটিকে খুব নাটকীয় উপায়ে প্রভাবিত করতে পারে না, তবে যেখানে আপনি নন এমন নোংরা পাঠ করছেন এমন নির্দিষ্ট পরিস্থিতিতে পার্থক্য আনতে পারে।

সুতরাং নির্বাচিত বর্তমান ডেটাটিকে ভুল হওয়ার অনুমতি দেওয়া হলে WITH (NOLOCK) ব্যবহার করুন, কারণ এটি পরে আবার ঘুরিয়ে দেওয়া হতে পারে। আপনি কর্মক্ষমতা বাড়াতে চাইলে এটি বেশিরভাগ ক্ষেত্রে ব্যবহৃত হয় এবং আপনার অ্যাপ্লিকেশন প্রসঙ্গে প্রয়োজনীয়তা এটিকে ঝুঁকি নিতে দেয় যে অসঙ্গতিপূর্ণ ডেটা প্রদর্শিত হচ্ছে। তবে আপনার বা দায়িত্বে থাকা কারও সাথে WITH (NOLOCK) ব্যবহারের সিদ্ধান্তের পক্ষে মতামত ও বিবেকের বিষয়টি বিবেচনা করতে হবে।

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