UNCOMMITTED বিচ্ছিন্নতা স্তরটি পড়ুন সেরা পরিস্থিতি


10

যেমনটি আমরা সবাই জানি, রিড আনকমিটড হ'ল সর্বনিম্ন বিচ্ছিন্নতা স্তর যেখানে নোংরা পাঠ এবং ভৌতিক পাঠের মতো জিনিসগুলি বাড়তে পারে। এই বিচ্ছিন্নতা স্তরটি ব্যবহার করার উপযুক্ত সময় কখন এবং কী কারণে এটি ব্যবহৃত হতে পারে?

আসলে আমি আগে উত্তরগুলি পড়েছিলাম, তবে পর্যাপ্ত উদাহরণ না থাকায় আমি এটি পুরোপুরি বুঝতে পারি না।

উত্তর:


20

এসএসএমএস থেকে প্রোডাকশন ডেটাবেসগুলি জিজ্ঞাসা করার সময় আমি ব্যবহার READ_UNCOMMITTED(বা NOLOCK) কিন্তু অ্যাপ্লিকেশন কোড থেকে নিয়মিত না করি not এই অনুশীলন (একটি MAXDOP 1 ক্যোয়ারী ইঙ্গিত সহ) বিশ্লেষণ এবং ডেটা বিশ্লেষণের জন্য নৈমিত্তিক প্রশ্নগুলি উত্পাদন কাজের চাপকে প্রভাবিত করে না তা বোঝাতে সহায়তা করে, ফলাফলগুলি সঠিক হতে পারে না বোঝার সাথে।

দুঃখের বিষয়, ডেটা অখণ্ডতার ব্যয় করে ব্লক করা এড়াতে আমি প্রোডাকশন কোডে ব্যাপকভাবে READ_UNCOMMITTED/ NOLOCKব্যবহার করি । সঠিক সমাধান সারি-ভার্সন বিচ্ছিন্নতা স্তর (হয় SNAPSHOTবা READ_COMMITTEDসঙ্গে READ_COMMITTED_SNAPSHOTডাটাবেসের বিকল্প ON) এবং / অথবা প্রশ্নের সাথে এবং সূচক টিউনিং মনোযোগ।

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


7

আমি মনে করি কিছু পরিস্থিতিতে এটি ঠিক আছে , যতক্ষণ না আপনি পরিণতি স্বীকার করেন এবং অন্য বিকল্প নেই।

অন্যান্য বিকল্পগুলির জন্য, আমি নতুন অ্যাপ্লিকেশনগুলির জন্য রিড কমিটেড স্ন্যাপশট আইসোলেশন (আরসিএসআই) বা পুরানো অ্যাপ্লিকেশনগুলির জন্য এসএনএপশট আইসোলেশন (এসআই) ব্যবহার করার দিকে লোকদের ঠেলে দিচ্ছি, যেখানে আপনি আরসিএসআইয়ের সাথে রেস শর্তগুলির জন্য পুরো কোড বেসটি সহজে পরীক্ষা করতে পারবেন না।

যাইহোক, সেগুলি ভাল ফিট নাও হতে পারে। টেম্পডিবির প্রতি আপনার ভালবাসা এবং যত্ন নেওয়ার জন্য আপনাকে অতিরিক্ত অতিরিক্ত সময় ব্যয় করতে হবে এবং এটি নিশ্চিত করে নিন যে কোনওরূপ প্রকাশ্য লেনদেন নেই যা সংস্করণ স্টোরকে (এবং টেম্পডিবি) বাড়িয়ে তোলে এবং ডিস্কটি পূরণ করে।

আপনার যদি ডিবিএ, বা যার কাজ এটির আপনার এসকিউএল সার্ভার নিরীক্ষণ এবং পরিচালনা করা না থাকে, সেই বিকল্পগুলি বিপজ্জনক হতে পারে। আরও সাধারণভাবে, প্রত্যেকেরই তাদের সার্ভারে যাওয়ার কোডের সম্পূর্ণ নিয়ন্ত্রণ থাকে না যেখানে তারা সংযোগের স্ট্রিং বা কোড পরিবর্তন করতে পারে যাতে সমস্যা সম্পর্কিত প্রশ্নের জন্য এসআই জিজ্ঞাসা করতে পারে।

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

কেবল তার অর্থ আপনি বুঝতে পেরেছেন তা নিশ্চিত করুন। এর অর্থ এই নয় যে আপনার জিজ্ঞাসাটি কোনও লক নিবে না, এর অর্থ এটি অন্যান্য প্রশ্নের দ্বারা নেওয়া লকগুলিকে সম্মান করে না।

এবং অবশ্যই, যদি আপনার সমস্যাটি লেখক / লেখক লক করা হয় তবে কেবলমাত্র এসআই হ'ল বিকল্পটি সাহায্য করবে, তবে ত্রুটি পরিচালনা করা ইত্যাদি সঠিকভাবে প্রয়োগ করতে এটি অবিশ্বাস্য পরিমাণ বিকাশকারী কাজ গ্রহণ করবে etc.


5
এবং যদি সমস্যাটি সত্যিই কেবল ওলটিপি ডেটাতে রিপোর্ট করা হয় তবে এটিকে অফ-লোড কোনও ধরণের পড়ার জন্য কেবল (এজি, লগ শিপিং, অনুলিপি, বা রোল-আপনার নিজস্ব) load
অ্যারন বারট্র্যান্ড

3
@ অ্যারোনবার্ট্র্যান্ড এবং তারপরে তাদের নিরীক্ষণের জন্য দ্বিতীয় সার্ভারটি থাকতে হবে;)
এরিক ডার্লিং

5

একটি আধুনিক সিস্টেমে রিড ইউনাইটেড রিডের একমাত্র বৈধ ব্যবহারের ক্ষেত্রে আইএমএইচও হ'ল একটি সেশনকে অন্য একটি সেশনকে বিকাশের ক্ষেত্রে ডিবাগ করার সময়, আপনি দেখতে পাচ্ছেন যে এটি কী করছে উদাহরণস্বরূপ একটি সঞ্চিত প্রকট এখনও চলছে is এটি সাধারণত কোনও উত্পাদন পদ্ধতিতে ব্যবহৃত হয় না। কিছু ছোটখাটো পারফরম্যান্স লাভ হতে পারে তবে দীর্ঘ মেয়াদে এটি কখনই উপযুক্ত হবে না।


3

আমরা এটি সার্বক্ষণিক স্বাস্থ্যের যত্নে ব্যবহার করি।

মিড-ক্যোয়ারীটি পৃথক সারি ডেটা পরিবর্তনের জন্য এটি আশ্চর্যজনকভাবে বিরল, এবং পড়ার / লেখার অনুপাতটি 10,000 / 1 এর মতো - এবং এর বেশিরভাগই সন্নিবেশগুলি, আপডেট নয়। উদাহরণস্বরূপ, যখন ল্যাব ইন্টারফেসটি কোনও রোগীর ল্যাব ফলাফল ডাটাবেসে লিখে, সেই মানগুলি কখনই পরিবর্তিত হয় না।

ডেটা আছে পরিবর্তন, এটি একটি সময়ে এক সারি পরিবর্তন। কেউ পুরো কলামগুলি আপডেট করছে না (একটি ডিবিএ ব্যতীত, যখন তারা সত্যিই খারাপ হয়ে যায়)।

অন্যদিকে, আমরা রোগীদের R২ ঘন্টা বা তারও কম সময়ে ER এ ফিরে আসার মতো জিনিসগুলির জন্য স্ক্যান করতে একগুচ্ছ প্রশ্ন চালাচ্ছি, যা পুরোপুরি টেবিলগুলিকে হাতুড়ি করে।

10 বছরের স্বাস্থ্যসেবা এসকিউএল এর মধ্যে আমি কখনও দেখিনি Rollback Transaction। আমি শেষ ব্যবহারকারীর অভিজ্ঞতাকে ব্যাহত না করেই ভিতরে যেতে চাই। যদি ওলটিপি ডাটাবেসকে হ্রাস করার উচ্চ ঝুঁকি এবং খারাপ ডেটা পাওয়ার ঝুঁকি কম থাকে তবে আমি বাতিল করব।

করা উচিত আমরা এটা ব্যবহার করবেন? হয়তো, হয়তো না. সাধারণভাবে বলতে গেলে, আমি বলব না যে আমি যে অ্যাপ্লিকেশন ডেটাবেজে কাজ করেছি সেগুলি বেশিরভাগই ভালভাবে ডিজাইন করা হয়েছে। এগুলি সাধারণত অ্যান্টি-প্যাটার্নগুলিতে পূর্ণ।


4
শুধু এফওয়াইআই, নলক দিয়ে আংশিক লিখিত সারিগুলি পড়া সম্ভব।
ম্যাক্স ভার্নন

1
নগদ টাকা! আমাকে আমার অন্য সার্ভারটি কিনতে সত্যিই আমার বস পেতে হবে যাতে আমি এই
জেমস

3
পল হোয়াইটের এই নিফটি ব্লগ পোস্টটি সম্পর্কে আপনি আগ্রহী হতে পারেন পড়াশোনা করা সম্পর্কে বিশেষত "দুর্নীতিগ্রস্থ ডেটা রিডিং" বিভাগ: দ্য রিড কমকমিটড বিচ্ছিন্নতা স্তর
জোশ ডার্নেল

1

READ_UNCOMMITTED/NOLOCKতথ্যের যথার্থতা যখন মূল উদ্দেশ্য না হয় তখন একটি ভাল বিকল্প। কখনও কখনও যখন একটি আনুমানিক সামগ্রিক গণনা প্রয়োজনীয় হয়। উদাহরণস্বরূপ: এমন সঞ্চিত প্রক্রিয়া রয়েছে যা অন্তর্ভুক্ত বা আপডেটের টেবিলগুলির জন্য ব্যবহৃত হয়। কখনও কখনও আপডেট করা বা sertedোকানো রেকর্ডের সংখ্যা বিশাল (হাজার হাজার রেকর্ড)। এই সঞ্চিত প্রক্রিয়া চলমান চলাকালীন সময়ে আমরা NOLOCKলক্ষ্য টেবিলে নিয়মিত একটি সহজ নির্বাচনী ক্যোয়ারি চালাতে পারি যা এটি সহজেই অগ্রসর হয় কিনা তা দেখার জন্য (আপডেট ক্যোয়ারীর জন্য, রেকর্ডগুলি আপডেট হওয়ার জন্য যদি আপনার স্ট্যাটাস চেঞ্জ কলাম থাকে তবে আমরা সেই কলামটি দিয়ে group byক্যোয়ারি চালাতে পারি) NOLOCKস্থিতি পরিবর্তনের গণনা নিয়মিত পরিবর্তিত হচ্ছে কিনা তা সন্ধান করতে)।


0

সচেতন থাকুন যে পড়ুন UNCOMMITTED কেবল নোংরা পাঠ্য নয়, অতিরিক্ত ধারাবাহিকতার সমস্যাগুলি প্রবর্তন করে। অ্যাক্সেস পদ্ধতির উপর নির্ভর করে আপনি সারিগুলি মিস করতে পারেন বা একই সারিটি একাধিকবার পড়তে পারেন। আপনি যদি বিবরণে আগ্রহী হন তবে ইতজিক বেন-গানের নিবন্ধটি পড়ুন


3
সারি এবং একাধিকবার সারিগুলি হারিয়ে যাওয়া ডিফল্ট পড়ার প্রতিশ্রুতিবদ্ধ স্তরেও সম্ভব। যদি স্ক্যান চলাকালীন কোনও সূচক কী কলামটি আপডেট হয় এবং এটি সরে যায়।
মার্টিন স্মিথ

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