এসকিউএল সার্ভারের রিড কমিটেড স্নাপশট বনাম এসএনএপশট


23

আমি এসকিউএল সার্ভারের READ COMMITTED SNAPSHOTএবং SNAPSHOTবিচ্ছিন্নতা স্তরের মধ্যে পার্থক্যগুলি নিয়ে গবেষণা করছিলাম এবং নিম্নলিখিত উত্সটিতে এসেছি:

সারি সংস্করণ-ভিত্তিক বিচ্ছিন্নকরণ স্তর নির্বাচন করা

বেশিরভাগ অ্যাপ্লিকেশনগুলির জন্য, সারি সংস্করণ ব্যবহার করে প্রতিশ্রুতিবদ্ধ বিচ্ছিন্নতা পড়ার জন্য নিম্নলিখিত কারণে স্ন্যাপশট বিচ্ছিন্ন করার পরামর্শ দেওয়া হয়:

  • এটি স্ন্যাপশট বিচ্ছিন্নতার চেয়ে কম টেম্পিডবি স্পেস গ্রহণ করে।

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

আমি এই বিষয়গুলিতে কিছুটা নতুন, তবে উপরের লিঙ্কটি থেকে আমি দুটি বুলেট পয়েন্ট বুঝতে পারি না।

  1. কেন এই মোডগুলির জন্য টেম্পডিবি স্পেস আলাদা হবে? একটিতে কি অন্যের চেয়ে বেশি দানাদার সংস্করণ সংরক্ষণ করা হয়?

  2. বিরোধগুলি আপডেট করার জন্য স্ন্যাপশট বিচ্ছিন্নতা কেন আরও ঝুঁকিপূর্ণ?

উত্তর:


18
  1. READ COMMITTED SNAPSHOTপ্রতিটি বিবৃতি পরে একটি নতুন স্ন্যাপশট ব্যবহার করে। এর অর্থ হ'ল কম সারির সংস্করণগুলি জীবিত রাখা হচ্ছে। (ডক্স থেকে আপনি যে বিবৃতিটি উদ্ধৃত করেছেন তা সামান্য বিভ্রান্তিকর কারণ এটি প্রস্তাব দেয় যে এটি সর্বদা সত্য - দীর্ঘমেয়াদী SNAPSHOTলেনদেনের ক্ষেত্রে এটি কেবল সত্য )) লেখাগুলিতে স্ন্যাপশট সারি সংস্করণ তৈরি করা হয়। টেম্পডিবির মধ্যে যা পড়বে তা পাঠকগুলি প্রভাবিত করে না। লেখকরা ভবিষ্যতে কী পড়তে হবে তা আগেই বুঝতে পারেন না। শুদ্ধ হতে পারে কেবল পাঠকরা প্রভাবিত।
  2. যখন কোনও SNAPSHOTলেনদেন T1একটি সারিটিতে লিখতে শুরু করে এবং লেখার চেষ্টা করার T2মধ্যবর্তী সময়ে অন্য লেনদেনের মাধ্যমে সংশোধন করা হয়েছিল , তখন বিবৃতিটি একটি আপডেট দ্বন্দ্ব ত্রুটির সাথে ব্যর্থ হয়। এটি একটি আশাবাদী সম্মতিযুক্ত মডেল। সঙ্গে জন্য অপেক্ষা করবে সারিতে এক্স-লক মুক্ত এবং সাধারনত অবিরত।T1T1READ COMMITTED SNAPSHOT T1T2

1
# 2 এর জন্য, এটি কী নিরাপদে বলা যায় যে এসএনএপশটটি আপডেটের জন্য একচেটিয়াভাবে লক করে না - এটি কেবল সারি সংস্করণে নির্ভর করে?
জন রাসেল

1
@ জনরসেল এটি রোলব্যাক সমর্থন করার জন্য একচেটিয়াভাবে লক করে। কোনও রোলব্যাকের ক্ষেত্রে সারিটি পুনরুদ্ধার করা যেতে পারে তা নিশ্চিত করার জন্য সমস্ত লেখককে অবশ্যই এক্স-লক করতে হবে।
usr ডিরেক্টরির

0

স্ন্যাপশট এবং পড়ার প্রতিশ্রুতিবদ্ধ স্ন্যাপশটের মধ্যে আরও একটি পার্থক্য নিম্নলিখিতটি।

  1. স্ন্যাপশট

প্রথম অধিবেশন

ট্রান বিচ্ছিন্নতা স্তরটি স্নাপশট শুরু করুন ট্রান নির্বাচন করুন * টিবি 1 থেকে ..... .....

দ্বিতীয় অধিবেশন

TB1 SET NAME = NAME + 'পরীক্ষা' আপডেট করুন যেখানে আইডি = 1

প্রথম অধিবেশন

টিবি 1 থেকে * নির্বাচন করুন - এটি আইডি = 1 এর জন্য মান নামটি ফিরে আসবে, নাম নয় 'পরীক্ষার' কমিট ট্রান

পঠিত প্রতিশ্রুতিযুক্ত স্ন্যাপশটে সেশন 1-এ প্রথম নির্বাচনটি আইডি = 1-র জন্য নাম প্রত্যাবর্তন করবে এবং দ্বিতীয় নির্বাচনটি + 'পরীক্ষার' নাম ফিরে আসবে।

সুতরাং স্ন্যাপশট বিচ্ছিন্নভাবে এসকিউএল সার্ভার লেনদেনের শুরুতে একটি স্ন্যাপশট করুন এবং পুরো লেনদেনের সময় সেই স্ন্যাপশট থেকে পড়ুন।

পড়ার জন্য প্রতিশ্রুতিবদ্ধ স্ন্যাপশটটিতে লেনদেনের সময় প্রতিটি নির্বাচনী বিবৃতিতে স্ন্যাপশট নেওয়া হয়।

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