এমন কয়েকটি সম্ভাব্য পরিস্থিতি রয়েছে যা সমাধান করা সহজ এবং একটি ক্ষতিকারক পরিস্থিতি যা তা নয়।
কোনও ব্যবহারকারীর জন্য যা কোনও মান প্রবেশ করে, তারপরে কিছু সময় পরে একই মানটি প্রবেশ করে INSERT সমস্যাটি সনাক্ত করার আগে একটি সাধারণ নির্বাচন করুন। এটি সেই ক্ষেত্রে কাজ করে যেখানে একজন ব্যবহারকারী একটি মান জমা দেয় এবং কিছু সময় পরে অন্য ব্যবহারকারী একই মান জমা দেয়।
যদি ব্যবহারকারী নকলের সাথে মানগুলির একটি তালিকা জমা দেয় - কোডটির একক অনুরোধে অ্যাপ্লিকেশনটি ডুপ্লিকেট সহ say এবিসি, ডিইএফ, এবিসি} বলুন - অ্যাপ্লিকেশনটি সদৃশগুলি সনাক্ত করতে এবং ফিল্টার করতে পারে, সম্ভবত একটি ত্রুটি ছুঁড়ে ফেলে। Checkোকানোর আগে আপনাকে ডিবিতে কোনও অনন্য মান রয়েছে না তাও পরীক্ষা করতে হবে।
জটিল পরিস্থিতিটি হ'ল যখন একজন ব্যবহারকারীর লেখার সময় একই সাথে অন্য ব্যবহারকারীর লেখার মত ডিবিএমএসের ভিতরে থাকে এবং তারা একই মান লিখছে। তাহলে তাদের মধ্যে একটি দৌড়ের অবস্থা রয়েছে। যেহেতু ডিবিএমএস (সম্ভবত - আপনি কোনটি ব্যবহার করছেন তা বলবেন না) একটি প্রাক্প্রটিভ মাল্টিটাস্কিং সিস্টেম যে কোনও কাজকে কার্যকর করার যে কোনও সময়ে থামানো যেতে পারে। তার মানে ইউজার 1 এর টাস্কটি বিদ্যমান সারি নেই কিনা তা চেক করতে পারে, তারপরে ইউজার 2 এর কার্যটি চেক করতে পারে যে বিদ্যমান সারি নেই, তারপরে ইউজার 1 এর কার্যটি সেই সারিটি সন্নিবেশ করতে পারে, তারপরে ব্যবহারকারী 2 এর কার্যটি সেই সারিটি সন্নিবেশ করতে পারে। প্রতিটি পর্যায়ে কাজগুলি স্বতন্ত্রভাবে খুশি হয় যে তারা সঠিক কাজ করছে। তবে বিশ্বব্যাপী একটি ত্রুটি ঘটে।
সাধারণত কোনও ডিবিএমএস প্রশ্নের মান অনুসারে একটি লক রেখে এটি পরিচালনা করবে। এই সমস্যায় আপনি একটি নতুন সারি তৈরি করছেন যাতে লক করার মতো এখনও কিছুই নেই। উত্তরটি একটি ব্যাপ্তি লক। এটি প্রস্তাবিত হিসাবে এটি বর্তমানে বিদ্যমান আছে বা না থাকুক, মানগুলির একটি ব্যাপ্তিকে লক করে। একবার লক হয়ে গেলে সেই ব্যাপ্তিটি অন্য কাজ দ্বারা অ্যাক্সেস করা যায় না যতক্ষণ না লকটি প্রকাশ হয়। রেঞ্জের লকগুলি পেতে আপনাকে সিরিয়ালিজেবলের বিচ্ছিন্নতা স্তর নির্দিষ্ট করতে হবে । আপনার কাজটি যাচাই করার পরে পরের দিকে অন্য কোনও টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টাকাপাকি ঘটনাটি ফ্যান্টম রেকর্ড হিসাবে পরিচিত ।
পুরো অ্যাপ্লিকেশন জুড়ে বিচ্ছিন্নতা স্তরটি সিরিয়ালাইজেবলে সেট করার ফলে প্রভাব পড়বে। থ্রুপুট হবে হ্রাস করা। অন্যান্য জাতি শর্ত যা অতীতে যথেষ্ট ভাল কাজ করেছিল এখন ত্রুটি দেখাতে শুরু করবে। আমি এটিকে সংযোগে সেট করার পরামর্শ দিচ্ছি যা আপনার সদৃশ-প্রবর্তক কোডটি কার্যকর করে এবং অ্যাপ্লিকেশনটির বাকি অংশটি যেমন রেখে দেয়।
কোড-ভিত্তিক বিকল্পটি আগের চেয়ে লেখার পরে পরীক্ষা করা । সুতরাং INSERT করুন, তারপরে সেই হ্যাশটির মান রয়েছে এমন সারিগুলির সংখ্যা গণনা করুন। যদি ডুপ্লিকেট থাকে তবে অ্যাকশনটি রোলব্যাক করুন। এর কিছু বিকৃত পরিণতি হতে পারে। বলুন টাস্ক 1 লিখুন তারপর টাস্ক 2। তারপরে টাস্ক 1 টি পরীক্ষা করে একটি সদৃশ খুঁজে পাওয়া যায়। এটি প্রথম হলেও পিছনে ফিরে আসে। একইভাবে উভয় কাজই সদৃশ এবং উভয় রোলব্যাক সনাক্ত করতে পারে। তবে কমপক্ষে আপনার সাথে কাজ করার জন্য একটি বার্তা, একটি পুনরায় চেষ্টা করার পদ্ধতি এবং কোনও নতুন সদৃশ নেই। রোলব্যাকগুলি ততক্ষণে চালিত হয় যেমন প্রোগ্রামের প্রবাহকে নিয়ন্ত্রণ করতে ব্যতিক্রমগুলি ব্যবহার করার মতো। নোট ভাল যে সবলেনদেনের কাজটি কেবল ডুপ্লিকেট-প্ররোচিত লেখাই নয়, আবার ফিরিয়ে আনা হবে। এবং আপনার সুস্পষ্ট লেনদেন থাকতে হবে যা সামঞ্জস্যতা হ্রাস করতে পারে। সদৃশ চেকটি হ্যাশটিতে সূচি না থাকলে ভয়াবহভাবে ধীর হবে। আপনি যদি এটি করেন তবে পাশাপাশি এটি একটি অনন্য করতে পারেন!
আপনি যেমন মন্তব্য করেছেন আসল সমাধানটি একটি অনন্য সূচক। এটি আমার রক্ষণাবেক্ষণ উইন্ডোতে ফিট হওয়া উচিত বলে মনে হয় (যদিও আপনি অবশ্যই আপনার সিস্টেমটি ভাল জানেন)। বলুন হ্যাশ আটটি বাইট। একশ মিলিয়ন সারির জন্য এটি প্রায় 1GB। অভিজ্ঞতা পরামর্শ দেয় যে একটি যুক্তিসঙ্গত হার্ডওয়্যার এই সমস্ত সারিটি এক বা দুই মিনিটে শীর্ষে প্রসেস করতে পারে। সদৃশ চেকিং এবং নির্মূলকরণ এতে যুক্ত হবে, তবে আগে থেকেই স্ক্রিপ্ট করা যায়। যদিও এটি কেবল একপাশে।