পুনরাবৃত্তিযোগ্য পঠনে অসঙ্গতি


10

http://www.postgresql.org/docs/9.2/static/transaction-iso.html

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

এটি কি ভৌতিক পাঠ নয়, যা পুনরাবৃত্তিযোগ্য পঠন মোডে সম্ভব নয়?

ডকুমেন্টেশন বলছে যে পুনরাবৃত্তিযোগ্য পঠন লেনদেনের একটি ক্যোয়ারী লেনদেন শুরু হওয়ার সাথে সাথে একটি স্ন্যাপশট দেখে, তারপরে কোনও প্রশ্নের জন্য অসামঞ্জস্যপূর্ণ ডেটা পড়া সম্ভব কীভাবে সম্ভব?

উত্তর:


5

এই বিভাগটি আমার পড়া এখানে। আমি এটা বিভ্রান্তিকর স্বীকার করব।

ধরুন আমার কাছে দুটি টেবিল রয়েছে:

CREATE TABLE batch (
   id serial not null unique,
   control_code text primary key,
   date_posted date not null default now()
);

CREATE TABLE details (
   batch_id int not null references batch(id),
   description text,
   primary key(batch_id, description)
);

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

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


3

নেই একটি নথি পোস্টগ্রি উইকি যা কিছু সমস্যা যা repeatable পড়ুন লেনদেন বিচ্ছিন্নতা পর্যায়ে লেনদেনের নির্দিষ্ট সমন্বয় সঙ্গে ঘটতে পারে দেন, এবং কিভাবে তারা পোস্টগ্রি সংস্করণ 9.1 সঙ্গে SERIALIZABLE লেনদেন বিচ্ছিন্নতা স্তর শুরুতে এড়িয়ে যাওয়া হয়।

এটি একটি পুনরাবৃত্তিযোগ্য রিড-লেভেল রিড-কেবলমাত্র লেনদেনের ক্ষেত্রে অসঙ্গত ডেটা পড়ার পক্ষে কীভাবে সম্ভব হতে পারে তার একটি উদাহরণ রয়েছে


@ ডেজো আপনার এতে আগ্রহী হতে পারে
907

1

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

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

এখন, সেই সাবধানতার বিষয়ে কী "এই দৃষ্টিভঙ্গি সর্বদা একই স্তরের একত্রে সামঞ্জস্যপূর্ণ লেনদেনের কিছু সিরিয়াল (একবারে একটি) প্রয়োগের সাথে সামঞ্জস্য হয় না"? আমি মনে করি (আমি নিশ্চিত নই) এর অর্থ হ'ল এর অর্থ যে "বাইরে থেকে" স্ন্যাপশট (লেনদেনের শুরুতে স্থির) শেষ পর্যন্ত অন্যান্য লেনদেনের সারিগুলিকে অন্তর্ভুক্ত করতে পারে তবে একই লেনদেন থেকে কিছু সারি অন্তর্ভুক্ত করতে ব্যর্থ হয়।

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