কেন একটি রিড চেক বিচ্ছিন্নতা স্তর ব্যবহার করবেন?


225

সরল ইংরেজিতে, অসুবিধাগুলি এবং ব্যবহারের সুবিধাগুলি কী

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

.NET অ্যাপ্লিকেশন এবং রিপোর্টিং পরিষেবাদির অ্যাপ্লিকেশনগুলির প্রশ্নের জন্য?

উত্তর:


210

এই বিচ্ছিন্নতা স্তরটি ময়লা পড়ার অনুমতি দেয়। একটি লেনদেন অন্য কিছু লেনদেন দ্বারা অনিয়ন্ত্রিত পরিবর্তন দেখতে পারে।

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

আপনি কয়েকটি উদাহরণ এবং আরও পড়ার জন্য উইকিপিডিয়া নিবন্ধটিREAD UNCOMMITTED পরীক্ষা করে দেখতে চাইতে পারেন ।


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

তবে nolockবিপজ্জনক? আপনি কি দিয়ে অবৈধ ডেটা পড়া শেষ করতে পারেন read uncommitted? হ্যাঁ, তাত্ত্বিকভাবে। আপনি ডাটাবেস আর্কিটেকচারের মহাকাশচারীদের অভাব খুঁজে পাবেন না যারা আপনার এবং সকলের উপরে এসিডি বিজ্ঞান বাদ দিতে শুরু করে তবে বিল্ডিং ফায়ার অ্যালার্মটি টানলে আপনি যখন চেষ্টা করতে চান সেগুলি জানান nolock। এটি সত্য: তত্ত্বটি ভীতিজনক। তবে আমি যা মনে করি তা এখানে: "তত্ত্বের মধ্যে তত্ত্ব এবং অনুশীলনের মধ্যে কোনও পার্থক্য নেই practice বাস্তবে রয়েছে।"

nolock আপনার যে কোনও ডাটাবেস ডেডলকিংয়ের সমস্যা হতে পারে তার জন্য সাপের তেল ফিক্সকে সাধারণ হিসাবে ব্যবহার করার পরামর্শ দেব না । আপনার প্রথমে সমস্যার উত্স নির্ণয়ের চেষ্টা করা উচিত।

তবে বাস্তবে nolockএমন প্রশ্নের সাথে যুক্ত করা যা আপনি একেবারেই জানেন সহজ, সরল পাঠযোগ্য বিষয়গুলি কখনই সমস্যার কারণ হতে পারে না ... যতক্ষণ না আপনি জানেন আপনি কী করছেন।

আপনি যে READ UNCOMMITTEDস্তরের বিষয়টি বিবেচনা করতে পারেন তার একটি বিকল্প হ'ল READ COMMITTED SNAPSHOT। আবার জেফের উদ্ধৃতি:

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


13
লেখককে বোঝা যাচ্ছে যে পড়ুন অনিবদ্ধ / কোনও লকই শেষ করবে না যা শেষ পর্যন্ত ডেটা প্রতিশ্রুতিবদ্ধ ছিল। আমার বোঝা অননুমোদিত পড়া হয় নিঃশর্ত লেনদেন থেকে এমনকি সর্বশেষ মানটি যা সেট করা হয়েছিল তা ফিরিয়ে দেবে। যদি তা হয় তবে ফলাফলটি "তারিখের কয়েক সেকেন্ড পরে" ডেটা পুনরুদ্ধার করবে না। এটি (বা আপনার পঠিত ডেটা লিখিত লেনদেনটি আবার ঘুরিয়ে আনতে পারে) এমন অস্তিত্ব নেই যা কখনই প্রতিশ্রুতিবদ্ধ ছিল না এমন পুনরুদ্ধার করতে পারে। আমি কি ভুল করছি?
xr280xr

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

13
READ UNCOMMITTEDআপনাকে দু'বার সারি পড়তে বা পুরো সারিটি মিস করতেও পারে । আপনি পড়ার সময় যদি কোনও পৃষ্ঠা-বিভক্ত হয়, তবে আপনি পুরো পরিমাণের ডেটা মিস করতে পারেন। WITH(NOLOCK)যদি ফলাফলগুলির যথার্থতা গুরুত্বপূর্ণ না হয় তবেই ব্যবহার করা উচিত
ইয়ান বয়ড

8
@ ড্যানিয়েলনোলান, নিবন্ধটি সুপারিশ করা বিপজ্জনক কারণ জেফ জানতেন না তিনি কী করছেন । পঠিত-আপত্তিহীন কেবলমাত্র ডেটা পড়ার জন্য বোঝায় যে কখনই সংশোধন করা হবে না। লেখার জন্য সারণীগুলি পড়ার জন্য এটি ব্যবহার করার চেষ্টা করার অর্থ আপনি অনুশীলনে এমন কিছু পড়বেন যা পিছনে ফিরে আসে। আপনি কেবল কয়েক সেকেন্ড পুরানো ডেটা পড়ছেন তা নয়, আপনি .................................. ................... ........................... ....
পেসারিয়ার

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

36

দীর্ঘ সন্নিবেশ অনুসন্ধানগুলির অগ্রগতি দেখতে, কোনও মোটামুটি অনুমান (যেমন COUNT(*)বা রুক্ষ SUM(*)) ইত্যাদি করতে এটি কার্যকর হতে পারে etc.

অন্য কথায়, নোংরা পাঠ্য প্রশ্নগুলির ফলাফলগুলি যতক্ষণ না আপনি তাদেরকে অনুমান হিসাবে গণ্য করেন এবং ততক্ষণে তাদের উপর ভিত্তি করে কোনও সমালোচনামূলক সিদ্ধান্ত নেন না fine


36

আমার প্রিয় ব্যবহারের ক্ষেত্রে read uncommitedহ'ল কোনও লেনদেনের মধ্যে ঘটে যাওয়া কোনও কিছু ডিবাগ করা।

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

দীর্ঘ চলমান পদ্ধতি আটকে আছে বা সঠিকভাবে আপনার ডাটাবেসটি আপডেট হচ্ছে কিনা তা দেখতে আপনি এটি ব্যবহার করতে পারেন।

আপনার সংস্থা যদি অত্যধিক জটিল সঞ্চিত পদ্ধতি তৈরি করতে পছন্দ করে তবে এটি দুর্দান্ত।


6
আমার সংস্থা অত্যধিক জটিল সঞ্চিত পদ্ধতি তৈরি করতে পছন্দ করে। সমস্যা সমাধানের জন্য কী দুর্দান্ত ধারণা!
ব্র্যান্ডন

22

সুবিধাটি হ'ল এটি কিছু পরিস্থিতিতে দ্রুত হতে পারে। অসুবিধাটি হ'ল ফলাফলটি ভুল হতে পারে (যে ডেটা প্রতিশ্রুতি দেওয়া হয়নি তা ফেরত দেওয়া যেতে পারে) এবং ফলাফলটি পুনরাবৃত্ত হওয়ার কোনও গ্যারান্টি নেই।

আপনি যদি নির্ভুলতার বিষয়ে চিন্তা করেন তবে এটি ব্যবহার করবেন না।

আরও তথ্য এমএসডিএন- তে রয়েছে :

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


এটি কীভাবে গতিবেগকে প্রভাবিত করবে?
কিপ রিয়েল

11
@ কিপ - বিবরণগুলিতে selectঅন্যান্য লেনদেনের দ্বারা একচেটিয়াভাবে লক থাকা সংস্থানগুলিতে ভাগ করা লকগুলি অর্জন করতে অপেক্ষা করতে হবে না।
জারোদ ডিকসন

15

কখন ব্যবহার করা ঠিক হবে READ UNCOMMITTED?

চলতি নিয়ম

ভাল : ক্রমাগত পরিবর্তনশীল মোট দেখায় বড় বড় সামগ্রিক প্রতিবেদনগুলি।

ঝুঁকিপূর্ণ : প্রায় সব কিছু।

সুসংবাদটি হ'ল কেবলমাত্র পঠনযোগ্য প্রতিবেদনগুলি সেই ভাল বিভাগে পড়ে ।

আরো বিস্তারিত...

এটি ব্যবহার করা ঠিক আছে:

  • বর্তমান, অ-স্থিতিশীল ডেটার জন্য প্রায় সমস্ত ব্যবহারকারীর মুখোমুখি সমষ্টিগত প্রতিবেদন যেমন বছর থেকে তারিখের বিক্রয়। এটি ত্রুটির একটি মার্জিন ঝুঁকিপূর্ণ হতে পারে (সম্ভবত <0.1%) যা অন্যান্য অনিশ্চয়তার কারণগুলির চেয়ে অনেক কম যেমন ইনপুটিং ত্রুটি বা ঠিক যখন ডেটা মিনিট থেকে মিনিটে রেকর্ড হয় তখন কেবল এলোমেলো।

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

ঝুঁকিপূর্ণ যখন

  • যে কোনও রিপোর্ট যা বিশদ স্তরে নেমে যায়। যদি সেই বিশদটির প্রয়োজন হয় তবে এটি সাধারণত বোঝায় যে প্রতিটি সারি কোনও সিদ্ধান্তের সাথে সম্পর্কিত। প্রকৃতপক্ষে, আপনি যদি অবরুদ্ধ না করে কোনও ছোট উপসেটটি টানতে না পারেন তবে এটি বর্তমানে সম্পাদিত হওয়ার কারণেই এটি হতে পারে।

  • ঐতিহাসিক তথ্য. এটি খুব কমই ব্যবহারিক পার্থক্য তৈরি করে তবে ব্যবহারকারীরা ক্রমাগত বুঝতে পারছেন যে ডেটা পরিবর্তন করা নিখুঁত হতে পারে না, তারা স্থির ডেটা সম্পর্কে একই অনুভব করে না। নোংরা রিডগুলি এখানে আঘাত করবে না তবে ডাবল রিডগুলি মাঝে মধ্যে হতে পারে। স্থিতিশীল ডেটাতে যাইহোক আপনার ব্লক থাকা উচিত নয় তা দেখে কেন এটি ঝুঁকিপূর্ণ?

  • প্রায়শই যে কোনও অ্যাপ্লিকেশনকে ফিড দেয় যা লেখার ক্ষমতাও রাখে।

এমনকি যখন ওকে পরিস্থিতি ঠিক হয় না।

  • কোনও অ্যাপ্লিকেশন বা আপডেট প্রক্রিয়া বড় একক লেনদেন ব্যবহার করছে? যেগুলি মুছে ফেলা হচ্ছে তারপরে আপনি যে সমস্ত রেকর্ড করছেন সেগুলি পুনরায় ?োকান? সেক্ষেত্রে আপনি NOLOCKসেই টেবিলগুলিতে কোনও কিছুর জন্য সত্যিই ব্যবহার করতে পারবেন না ।

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

হ্যাঁ, আমি মনে করি এটি যুক্তিসঙ্গত। মনে রাখবেন যে আরও তাত্পর্যপূর্ণ বিষয়টি নিশ্চিত করছে যে সম্পাদনা বোতামটি আঘাত করার সময় এবং জমা দেওয়ার সময়কালের মধ্যে অন্য কেউ ডেটা বদলেনি। আপনি ডেটা আনার মতো কোনও লেনদেন শুরু করে এটি পরিচালনা করতে পারেন select item from things with (UPDLOCK)। সেখানে একটি দ্রুত টাইমআউট রাখুন যাতে এটি যদি লকটি দ্রুত অর্জন করতে না পারে তবে এটি ব্যবহারকারীকে বলে যে এটি সম্পাদনা করা হচ্ছে। এটি আপনাকে কেবল ব্যবহারকারীদের থেকে নয় তবে বিকাশকারীদের থেকে সুরক্ষিত রাখবে। এখানে শুধুমাত্র সমস্যা হ'ল আপনাকে সময়সীমা সম্পর্কে এবং ইউআইতে কীভাবে আপনি এটি পরিচালনা করেন সে সম্পর্কে চিন্তাভাবনা শুরু করতে হবে।
অদম্য

6

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


4

READ_UNCOMMITTED এমন পরিস্থিতিতে ব্যবহার করুন যেখানে উত্স পরিবর্তনের সম্ভাবনা খুব বেশি।

  • Historicalতিহাসিক তথ্য পড়ার সময়। উদাহরণস্বরূপ কিছু স্থাপনার লগগুলি যা দুদিন আগে ঘটেছিল।
  • আবার মেটাডাটা পড়ার সময়। যেমন মেটাডেটা ভিত্তিক অ্যাপ্লিকেশন।

READ_UNCOMMITTED ব্যবহার করবেন না যখন আপনি জানেন যে আনার ক্রিয়াকলাপের সময় স্যুস পরিবর্তন হতে পারে।


1
আমি বিপরীত প্রযোজ্য বোধ করি। প্রথমত স্থিতিশীল ডেটা কোনও ব্লক ছাড়াই ভালভাবে পড়তে হবে। এটি যদি অবরুদ্ধ হয় তবে আপনি এখন এটির জন্য একটি গুরুত্বপূর্ণ হ্যাঙ্গিং লেনদেনের সমস্যা খুঁজে পেয়েছেন। এছাড়াও ব্যবহারকারীরা আশা করবেন যে তারা গত বছরের বার্ষিক প্রতিবেদনের জন্য যা ছাপিয়েছিল তা শেষ দশমিক জায়গায় মিলে যাবে। তারা সাধারণত যে প্রতিবেদনগুলি জেনে থাকে তার একই ধরণের প্রবণতা আশা করে না। এটি বিশদ, অত্যন্ত সময় সংবেদনশীল বা আর্থিক প্রতিবেদনের জন্য যায় না তবে 1000 এ যদি 1 ইনপুটিং ত্রুটি সহনীয় হয় তবে তাই হয় READ UNCOMMITTED
অদমন্তিশ

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

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

2

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

কী ঘটছে তা নোট করাও আকর্ষণীয়। অননুমুক্ত পড়া কেবল অন্য টেবিলের লকগুলিকেই উপেক্ষা করে না। এটি নিজস্ব কোনও লক তৈরি করে না।

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

আপনি যদি অনিদ্রিত পড়ুন ব্যবহার করছেন তবে আপনি টেবিলে ভাগ করা লক সেট করবেন না। কিছু নতুন লেনদেন থেকে আপনি ফলাফল পেতে পারেন বা আপনি টেবিলটি কোথায় সারণিটি সন্নিবেশ করানো হয়েছে এবং আপনার নির্বাচনী লেনদেন কতক্ষণ পড়েছে তা নির্ভর করে না। আপনি একই তথ্য দু'বারও পেতে পারেন উদাহরণস্বরূপ যদি কোনও পৃষ্ঠা বিভাজন ঘটে (ডেটা ফাইলের অন্য কোনও জায়গায় অনুলিপি করা হবে)।

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

সম্পূর্ণরূপে আরও ভাল উপায় হতে পারে এসএনএপশট বিচ্ছিন্নতা স্তরটি ব্যবহার করা তবে আপনার অ্যাপ্লিকেশনগুলিতে এটি ব্যবহারের জন্য কিছু সামঞ্জস্যের প্রয়োজন হতে পারে। এর একটি উদাহরণ হ'ল যদি অন্যদের এটি পড়তে বাধা দেয় এবং UI- এ সম্পাদনা মোডে যেতে আপনার অ্যাপ্লিকেশনটি একটি সারিতে একচেটিয়া লক নেয়। স্নাপশট বিচ্ছিন্নকরণ স্তরটিও যথেষ্ট পারফরম্যান্স জরিমানা (বিশেষত ডিস্কে) নিয়ে আসে। তবে আপনি সমস্যার উপর হার্ডওয়্যার ফেলে দিয়ে তা কাটিয়ে উঠতে পারেন। :)

আপনি ডেটা গুদামে ডেটা রিপোর্টিং বা লোড করার জন্য ব্যবহার করতে ডাটাবেসের একটি ব্যাকআপ পুনরুদ্ধার করতেও বিবেচনা করতে পারেন।


0

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


-7

আমি এখনই সবসময় পড়াশুনা করুন use এটি সর্বনিম্ন সমস্যাগুলির সাথে দ্রুত। অন্যান্য বিচ্ছিন্নতা ব্যবহার করার সময় আপনি প্রায় সবসময় কিছু ব্লকিং সমস্যা জুড়ে আসবেন।

যতক্ষণ আপনি অটো বর্ধন ক্ষেত্রগুলি ব্যবহার করেন এবং সন্নিবেশগুলিতে আরও একটু মনোযোগ দিন ততক্ষণ আপনার জরিমানা, এবং আপনি ব্লকিংয়ের সমস্যাগুলিকে বিদায় জানাতে পারেন।

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

সুতরাং ডার্টি রিডগুলি যান (বিশেষত বড় প্রতিবেদনের জন্য), আপনার সফ্টওয়্যারটি মসৃণ চলবে ...


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

@ মারকসোউল এই উত্তরটি হ্রাস করা আমার পক্ষে অন্যায় বলে মনে হচ্ছে। @ ক্লাইভ পরিষ্কার ছিল যে সে Committedসন্নিবেশ এবং আপডেটের জন্য স্যুইচ করবে । অন্যান্য সমস্যা হিসাবে তিনি একটি অটো-ইনক্রিমেন্টিং কী ব্যবহার করার বিষয়ে উল্লেখ করে পৃষ্ঠা বিভাজন সম্পর্কিত সচেতনতাও প্রদর্শন করেছিলেন। আমি তার সাথে একমত হই যে, কেবলমাত্র একটি মানব দ্বারা পড়ার জন্য তৈরি প্রায় সমস্ত লাইভ রিপোর্টিং চূড়ান্ত দশমিক স্থানে সামান্য তাত্পর্য সহ্য করতে পারে। আমি সম্মত হয়েছি এটি বিশদ তালিকা বা ডেটা মেশিন পড়ার এবং রূপান্তরিত হওয়ার জন্য ডেটাযুক্ত ডেটা এবং ক্লাইভের মতো আলাদা গল্প
অবিচলিত

1
এই মন্তব্যটি অগ্রভাগের সাথে আসা সম্ভাব্য সমস্যাগুলির সম্পূর্ণ বোঝার অভাবও প্রদর্শন করে। "চূড়ান্ত দশমিক স্থানে কিছুটা তাত্পর্য" এটিকে খুব কমই কভার করে। এমনকি "সন্নিবেশ / আপডেটের জন্য প্রতিশ্রুতিবদ্ধ পড়া কেবল ব্যবহার করুন" এ স্পর্শ করা সাধারণ পরামর্শ হিসাবে ভুল (এটি যদি "এটি উপস্থিত না থাকে তবে একটি রেকর্ড সন্নিবেশ করানো হয়"?)। যে কোনও ইভেন্টে, "[নিঃশব্দে পড়ুন] স্বল্পতম সমস্যার সাথে দ্রুত" স্পষ্টতই ভুল।
চিহ্ন সোওল

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