অ-পুনরাবৃত্তিযোগ্য পঠন এবং ফ্যান্টম রিডের মধ্যে পার্থক্য কী?


154

অ পুনরাবৃত্তিযোগ্য পঠন এবং ফ্যান্টম পড়ার মধ্যে পার্থক্য কী?

আমি উইকিপিডিয়া থেকে বিচ্ছিন্নতা (ডাটাবেস সিস্টেম) নিবন্ধটি পড়েছি, তবে আমার কয়েকটি সন্দেহ আছে। নীচের উদাহরণে, কি ঘটবে: অ পুনরাবৃত্তিযোগ্য পঠিত এবং ফ্যান্টম পড়া ?

লেনদেন এ
SELECT ID, USERNAME, accountno, amount FROM USERS WHERE ID=1
আউটপুট:
1----MIKE------29019892---------5000
লেনদেন খ
UPDATE USERS SET amount=amount+5000 where ID=1 AND accountno=29019892;
COMMIT;
লেনদেন এ
SELECT ID, USERNAME, accountno, amount FROM USERS WHERE ID=1

আর একটি সন্দেহ, উপরোক্ত উদাহরণে, কোন বিচ্ছিন্নতা স্তরটি ব্যবহার করা উচিত? এবং কেন?


উত্তর:


165

উইকিপিডিয়া থেকে (যার জন্য দুর্দান্ত এবং বিস্তারিত উদাহরণ রয়েছে):

একটি পুনরাবৃত্তযোগ্য পাঠ হয়, যখন কোনও লেনদেন চলাকালীন, একটি সারি দু'বার পুনরুদ্ধার করা হয় এবং সারিটির মধ্যে থাকা মানগুলি পড়ার মধ্যে পৃথক হয়।

এবং

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

সাধারণ উদাহরণ:

  • ব্যবহারকারী এ দু'বার একই জিজ্ঞাসা চালায়।
  • এর মধ্যে, ব্যবহারকারী বি একটি লেনদেন চালায় এবং কমিট করে।
  • পুনরাবৃত্তিযোগ্য না পঠনযোগ্য: ব্যবহারকারী এটিকে যে সারিটি জিজ্ঞাসা করেছে তার দ্বিতীয়বারের জন্য আলাদা মান রয়েছে।
  • ফ্যানটম পড়ুন: ক্যোয়ারীর সমস্ত সারিগুলির আগে এবং পরে একই মান রয়েছে তবে বিভিন্ন সারি নির্বাচন করা হচ্ছে (কারণ বি কিছু মুছে ফেলেছে বা সন্নিবেশ করেছে)। উদাহরণ: select sum(x) from table;ক্ষতিগ্রস্ত সারিগুলির কোনও নিজেরাই আপডেট না করা সত্ত্বেও, সারি যুক্ত করা বা মুছে ফেলা হলেও ভিন্ন ফলাফল প্রদান করবে।

উপরের উদাহরণে, কোন বিচ্ছিন্নতা স্তরটি ব্যবহার করতে হবে?

আপনার কী বিচ্ছিন্নতা স্তরটি প্রয়োজন তা নির্ভর করে আপনার আবেদনের উপর। "উন্নত" বিচ্ছিন্নতা স্তরের উচ্চ মূল্য রয়েছে (যেমন হ্রাস সম্মতি)।

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


6
আমি এ জাতীয় সিনট্যাক্সের যুক্তি সত্যিই বুঝতে পারি না ... পড়ার পুনরাবৃত্তি করা হলে (এবং একটি আলাদা মান পাওয়া যায় না) কোন পুনরাবৃত্তিযোগ্য পাঠ ঘটে না ??! ...
সেরিও

14
@serhio "অ-পুনরাবৃত্তযোগ্য" আপনাকে বোঝায় যে আপনি একবারে একটি মান পড়তে পারেন এবং ফলস্বরূপ এক্স পেতে পারেন এবং তারপরে আবার পড়ুন এবং ফল হিসাবে y পাবেন, সুতরাং আপনি দুটি থেকে একই ফলাফল পুনরাবৃত্তি করতে পারবেন না (পুনরাবৃত্তিযোগ্য) একই সারির পৃথক ক্যোয়ারী, কারণ সেই সারির মানটি পাঠকের মধ্যে আপডেট হয়েছিল।
বেটটেক

@ থিলো যে কোনও বাস্তব ব্যবহারের ক্ষেত্রে উদাহরণ যেখানে পুনরাবৃত্তিযোগ্য-পঠন সমস্যা তৈরি করতে পারে এবং এটি কোথায় প্রয়োজনীয়?
ব্যবহারকারী 104309

অন্য লেনদেনে যদি পিকে পরিবর্তন করা হয় তবে কী হবে? এর ফলে কি কোনও ফ্যান্টম পড়তে পারে? (বেশিরভাগ ক্ষেত্রে করা একটি অদ্ভুত জিনিস, তবে অসম্ভব নয়))
jpmc26


125

এটি সম্পর্কে ভাবতে চাইলে একটি সহজ উপায়:

পুনরাবৃত্তিযোগ্য এবং ভৌতিক পাঠ উভয়েরই একটি পৃথক লেনদেন থেকে ডেটা পরিবর্তনের ক্রিয়াকলাপগুলির সাথে সম্পর্কযুক্ত যা আপনার লেনদেন শুরুর পরে প্রতিশ্রুতিবদ্ধ হয়েছিল এবং তারপরে আপনার লেনদেন দ্বারা পড়ে read

অ-পুনরাবৃত্তযোগ্য পাঠগুলি হ'ল যখন আপনার লেনদেন অন্য লেনদেন থেকে প্রতিশ্রুতিবদ্ধ UPDATES পড়ে reads আপনার লেনদেন শুরু হওয়ার সাথে সাথে একই সারিতে এখন আলাদা মান রয়েছে।

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

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


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

1
@ পিএইচপিএভেঞ্জারটি এখানে অননীতিবিচ্ছিন্ন বিচ্ছিন্নতা স্তরটি পড়ার জন্য একটি ব্যবহারের মামলা: সর্বদা একটি নির্বাচন এবং একটি আপডেট ক্যোয়ারীর মধ্যে অচলাবস্থা হওয়ার সম্ভাবনা থাকে ( এখানে ব্যাখ্যা করা হয়েছে )। যদি নির্বাচিত ক্যোয়ারী একটি প্রচ্ছদ সূচক তৈরি করতে খুব জটিল হয় তবে অচলাবস্থা এড়ানোর জন্য আপনি নোংরা পাঠের মুখোমুখি হওয়ার ঝুঁকি নিয়ে একটি পুনঃসম্পর্কিত বিচ্ছিন্নতা স্তরটি ব্যবহার করতে চাইবেন, তবে এই নোংরা পাঠ্য সম্পর্কে উদ্বেগ প্রকাশ করার জন্য আপনি কতবার লেনদেনকে রোলব্যাক করেন না? স্থায়ী হচ্ছে ?!
পেট্রিকা.মার্টিনেস্কু

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

2
@ ডিপনরয় দুর্দান্ত প্রশ্ন। পুনরাবৃত্তযোগ্য পঠন (আরআর) বিচ্ছিন্নতা ব্যবহার করা থাকলে লকটি কার্যকর করা হয়েছে যা নির্বাচিত সারিগুলিতে মুছে ফেলা রোধ করবে। আমি কয়েক বছর ধরে 2 টি আইএসও স্তরের বিভিন্ন সংজ্ঞা দেখেছি, মূলত ভ্যান্ট সংগ্রহ / # সারিতে ফিরে আসা পরিবর্তন এবং আরআর একই পংক্তির পরিবর্তিত হচ্ছে being আমি সদ্য আপডেট হওয়া এমএস এসকিউএল ডকুমেন্টেশনটি যাচাই করেছিলাম যে মোছার ফলে নন-আরআর হতে পারে ( ডকস.মাইক্রোসফটকম / en - us / sql / odbc / references / develop - app/… ) তাই আমার মনে হয় এটি গ্রুপ মুছে ফেলা নিরাপদ হবে আরআর
বিভাগটিও

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

28

হিসাবে ব্যাখ্যা করা এই প্রবন্ধের , অ repeatable পড়ুন ব্যতিক্রম হিসাবে অনুসরণ করে দেখায়:

এখানে চিত্র বর্ণনা লিখুন

  1. অ্যালিস এবং বব দুটি ডাটাবেস লেনদেন শুরু করেছেন।
  2. ববসের পোস্ট রেকর্ড পড়ে এবং শিরোনাম কলাম মান হ'ল লেনদেন।
  3. অ্যালিস একটি প্রদত্ত পোস্ট রেকর্ডের শিরোনামকে এসিডের মান হিসাবে পরিবর্তন করে।
  4. অ্যালিস তার ডাটাবেস লেনদেন করে।
  5. যদি বব পোস্টের রেকর্ডটি পুনরায় পড়েন, তবে তিনি এই টেবিল সারির একটি আলাদা সংস্করণ পর্যবেক্ষণ করবেন।

ইন এই নিবন্ধটি সম্পর্কে ফ্যান্টম পড়ুন , আপনি দেখতে পারেন যে, এই অনিয়ম নিম্নরূপ ঘটতে পারে:

এখানে চিত্র বর্ণনা লিখুন

  1. অ্যালিস এবং বব দুটি ডাটাবেস লেনদেন শুরু করেছেন।
  2. ববস শনাক্তকারী মান 1 এর সাথে পোস্ট সারির সাথে সম্পর্কিত সমস্ত পোস্ট_কমেন্ট রেকর্ড পড়ে।
  3. অ্যালিস একটি নতুন পোস্ট_কমেন্ট রেকর্ড যুক্ত করেছে যা 1 এর শনাক্তকারী মানটির সাথে পোস্ট সারির সাথে সম্পর্কিত।
  4. অ্যালিস তার ডাটাবেস লেনদেন করে।
  5. যদি ববের পোস্ট_কম্ট রেকর্ডগুলি পোস্ট_আইডির কলামের মান 1 এর সমান হয় তবে তিনি এই ফলাফলের সেটটির আলাদা সংস্করণ পর্যবেক্ষণ করবেন।

সুতরাং, অ-পুনরাবৃত্তিযোগ্য পঠনটি যখন একটি একক সারিতে প্রযোজ্য, তখন ফ্যান্টম রিড এমন একাধিক রেকর্ড সম্পর্কে যা প্রদত্ত ক্যোয়ারী ফিল্টারিংয়ের মানদণ্ডকে সন্তুষ্ট করে।


3
দুর্দান্ত ভিজ্যুয়ালাইজেশন @ ভ্লাদ
ডেক্সটারমিনি

23

ঘটনা পড়ুন

  • নোংরা পড়া : অন্য লেনদেন থেকে অননুমোদিত ডেটা পড়ুন
  • পুনরাবৃত্তিযোগ্য পাঠ্য :UPDATEঅন্য লেনদেনের কোয়েরি থেকেকমিট করা ডেটা পড়ুন
  • ফ্যান্টম পড়েন : কমিটেড ডেটা একটিINSERTবাDELETEঅন্য কোনও লেনদেনের কোয়েরি থেকে পড়ুন

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

এছাড়াও আমরা পর্যবেক্ষণ করতে পারি যে আপডেটগুলি প্রকৃত INSERT বা মুছে ফেলার পরিবর্তে বেশিরভাগ ব্যবহারের ক্ষেত্রে খুব ঘন ঘন কাজ হতে পারে (এই ক্ষেত্রে, পুনরাবৃত্তিযোগ্য পাঠকের ঝুঁকি কেবল রয়ে যায় - এই ক্ষেত্রে ফ্যান্টম রিডগুলি সম্ভব নয়)। এজন্য UPDATES INSERT-DELETE থেকে পৃথকভাবে চিকিত্সা করা হয় এবং ফলস্বরূপ বিচ্ছিন্নতার নামও আলাদাভাবে রাখা হয়।

কেবলমাত্র আপডেটগুলি হ্যান্ডেল করার পরিবর্তে ইনসার্ট-ডিলেটগুলি হ্যান্ডলিংয়ের সাথে যুক্ত একটি অতিরিক্ত প্রসেসিং ব্যয়ও রয়েছে।


বিভিন্ন বিচ্ছিন্নতা স্তরের সুবিধা

  • READ_UNCOMMITTED কিছুই রোধ করে না। এটি শূন্য বিচ্ছিন্নতা স্তর
  • READ_COMMITTED কেবলমাত্র একটি, যেমন ডার্টি রিডকে বাধা দেয়
  • REPEATABLE_READ দুটি অসঙ্গতি প্রতিরোধ করে: নোংরা পাঠ্য এবং পুনরাবৃত্তযোগ্য পাঠ্য
  • সিরিয়ালিবল সমস্ত তিনটি ব্যাহতিকে বাধা দেয়: নোংরা পাঠ্য, পুনরাবৃত্তযোগ্য পাঠ্য এবং ফ্যান্টম পড়েন

তাহলে কেন আপনি সর্বদা লেনদেনকে সিরিয়ালিজাবল সেট করবেন না? ঠিক আছে, উপরের প্রশ্নের উত্তর হ'ল: সিরিয়ালিয়াল সেটিং লেনদেনগুলি খুব ধীর করে দেয় , যা আমরা আবার চাই না।

আসলে লেনদেনের সময় ব্যয় নিম্নলিখিত হারে হয়:

সিরিয়ালযোগ্য > পুনরায় সরবরাহযোগ্য > READ_COMMITTED > READ_UNCOMMITTED

সুতরাং READ_UNCOMMITTED সেটিংটি সবচেয়ে দ্রুত


সারসংক্ষেপ

আসলে আমাদের ব্যবহারের ক্ষেত্রে বিশ্লেষণ করতে হবে এবং বিচ্ছিন্নতার স্তরটি নির্ধারণ করতে হবে যাতে আমরা লেনদেনের সময়টি অনুকূল করে তুলি এবং বেশিরভাগ অসঙ্গতিগুলি রোধ করি।

নোট করুন যে ডিফল্ট হিসাবে ডেটাবেসগুলিতে REPEATABLE_READ সেটিং রয়েছে।


1
আপডেট বা মুছুন উভয়ই পুনরাবৃত্তিযোগ্য পাঠগুলির জন্য স্থান নিতে পারে বা এটি কেবল আপডেট?
ডিপান রায়

1
আপডেট বা মুছুন উভয়ই পুনরাবৃত্তযোগ্য
পাঠগুলির

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

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

7

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


পুনরাবৃত্তিযোগ্য পঠনযোগ্য বা সিরিয়ালাইজযোগ্য প্রয়োগ করতে, সারি-লকিং ব্যবহার করার দরকার নেই।
a_horse_with_no_name

5

অপরিবর্তনীয় পাঠযোগ্য একটি সিস্টেমে লেনদেন এ এর ​​দ্বিতীয় ক্যোয়ারির ফলাফল লেনদেন বিতে আপডেটটি প্রতিফলিত করবে - এটি নতুন পরিমাণটি দেখতে পাবে।

ফ্যান্টম পড়ার অনুমতি দেয় এমন একটি সিস্টেমে, যদি ট্রানজেকশন বি আইডি = 1 দিয়ে একটি নতুন সারি সন্নিবেশ করায়, দ্বিতীয় কোয়েরি কার্যকর হওয়ার পরে লেনদেন এ নতুন সারিটি দেখতে পাবে; অর্থাত্ ফ্যান্টম রিডগুলি পুনরাবৃত্তিযোগ্য পঠনের একটি বিশেষ ক্ষেত্রে।


আমি মনে করি না যে কোনও ভুতুড়ে পড়ার ব্যাখ্যাটি সঠিক। অ-প্রতিশ্রুতিবদ্ধ ডেটা কখনও দেখা না গেলেও আপনি ভুত পড়তে পারেন can উইকিপিডিয়ায় উদাহরণ দেখুন (উপরের মন্তব্যে লিঙ্কিত)।
থিলো

1

গৃহীত উত্তর বেশিরভাগেরই ইঙ্গিত দেয় যে উভয়ের মধ্যে তথাকথিত পার্থক্য আসলে মোটেই তাৎপর্যপূর্ণ নয়।

যদি "একটি সারি দু'বার পুনরুদ্ধার করা হয় এবং সারির মধ্যে মানগুলি পাঠের মধ্যে পৃথক হয়", তবে সেগুলি একই সারি হয় না (সঠিক আরডিবি স্পোকের ক্ষেত্রে একই টিপল নয়) এবং এটি সংজ্ঞা অনুসারে প্রকৃত ক্ষেত্রেও ঘটে "সংগ্রহ দ্বিতীয় ক্যোয়ারীর দ্বারা ফিরে আসা সারিগুলি প্রথম থেকে আলাদা।

"কোন বিচ্ছিন্নতা স্তরটি ব্যবহার করা উচিত" এই প্রশ্নে আপনার ডেটা কারও কাছে তত বেশি গুরুত্বপূর্ণ, কোথাও কোথাও, সিরিয়ালাইজযোগ্য আপনার একমাত্র যুক্তিযুক্ত বিকল্প হ'ল।


0

আমি মনে করি যে পুনরাবৃত্তিযোগ্য-পঠনযোগ্য এবং ফ্যান্টম-রিডের মধ্যে কিছু পার্থক্য রয়েছে।

পুনরাবৃত্তিযোগ্য অর্থ দু'টি লেনদেন এ এবং বি রয়েছে যদি বি এ এর ​​পরিবর্তনের বিষয়টি খেয়াল করতে পারে, তবে সম্ভবত নোংরা-পঠন ঘটবে, সুতরাং আমরা বি কে এ-কমিট করার পরে এটিকে সংশোধন করতে দেখি।

নতুন সমস্যা আছে: আমরা বি কে এ প্রতিশ্রুতিবদ্ধ হওয়ার পরে এ এর ​​সংশোধনীটি লক্ষ্য করি, এর অর্থ একটি বি এর অধীনে থাকা সারির একটি মান সংশোধন করা হয়, কিছু সময় বি আবার সারিটি পড়বে, সুতরাং খ প্রথমবারের সাথে নতুন মানটি আলাদা পাবে আমরা পেতে, আমরা একে অ-পুনরাবৃত্তিযোগ্য বলি, সমস্যাটি মোকাবেলা করার জন্য, আমরা বিটিকে কিছু মনে রাখি (কারণ আমি জানি না কী এখনও মনে থাকবে) তবে বি শুরু হবে।

আসুন আমরা নতুন সমাধান সম্পর্কে চিন্তা করি, আমরা সেখানে নতুন সমস্যাও লক্ষ্য করতে পারি, কারণ আমরা বি কে কিছু মনে রাখতে পারি, সুতরাং এ-তে যা ঘটেছিল তা বি প্রভাবিত হতে পারে না, তবে বি যদি টেবিল এবং বিতে কিছু ডেটা toোকাতে চায় তবে কোনও রেকর্ড নেই তা নিশ্চিত করার জন্য টেবিলটি পরীক্ষা করে দেখুন, তবে এই ডেটা এ দ্বারা inোকানো হয়েছে, তাই সম্ভবত কিছু ত্রুটি ঘটতে পারে। আমরা একে ফ্যান্টম-রিড বলি।


0

অ-পুনরাবৃত্তিযোগ্য পঠন একটি বিচ্ছিন্ন স্তর এবং ফ্যান্টম রিড (অন্যান্য লেনদেন দ্বারা প্রতিশ্রুতিবদ্ধ মান পড়া) একটি ধারণা (পড়ার ধরণ যেমন নোংরা পঠন বা স্ন্যাপশট পড়া)। অ-পুনরাবৃত্তযোগ্য পাঠযোগ্য বিচ্ছিন্নতা স্তর ফ্যান্টম পড়ার অনুমতি দেয় তবে নোংরা পাঠ বা স্ন্যাপশট পড়ার অনুমতি দেয় না।

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