"লেনদেন আইডি Wraparound" সম্পর্কে


10

এখন, আমি "লেনদেন আইডি রাইপারাউন্ড" সম্পর্কে নথিটি পড়েছি, তবে এমন কিছু আছে যা আমি সত্যিই বুঝতে পারি না, দস্তাবেজটি নীচের url http://www.postgresql.org/docs/9.0/static/routine-vacuuming .html # ভ্যাকুয়াম-জন্য-wraparound

23.1.4। লেনদেনের আইডি মোছা ব্যর্থতা প্রতিরোধ করা

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

আমি বুঝতে পারি না "" লেনদেনের আইডি মোড়কে ক্ষতিগ্রস্থ হতে হবে: এক্সআইডি কাউন্টারটি প্রায় শূন্যের সাথে আবৃত হবে, এবং অতীতে হঠাৎ হ'ল সমস্ত লেনদেন ভবিষ্যতে উপস্থিত হবে - যার অর্থ তাদের আউটপুট অদৃশ্য হয়ে যায় "

কেউ এই ব্যাখ্যা করতে পারেন? কেন ডাটাবেস ভোগান্তির পরে লেনদেনের আইডি মোড়ক আগে যে লেনদেন অতীতে ছিল তা ভবিষ্যতে উপস্থিত হবে? সংক্ষেপে, আমি জানতে চাই যে পোস্টগ্রিসএসকিউএল "ডেটা হ্রাস" পরিস্থিতিতে অটোভ্যাকুয়াম দ্বারা লেনদেনের আইডি মোড়ক পরে "ডেটা ক্ষতি" ঘটবে。

আমার ব্যক্তিগত মতামতের জন্য, আমরা txid_current () ফাংশন হুইস আউটপুট bit৪ বিট এবং সাইকেল চালানো যাবে না ব্যবহার করে বর্তমান লেনদেন আইডি পেতে পারি txid_current () ফাংশন দ্বারা। আপনি পোস্টগ্রিএসকিউএল সার্ভার বন্ধ করে দেওয়ার পরে pg_resetxlog রিসেট রিসেটের লেনদেন আইডি ব্যবহার করবেন তা ব্যতীত। আমি কি সঠিক ? ধন্যবাদ


আমি মনে করি যদি সম্ভব হয় তবে আপনার সর্বশেষ সম্পাদনাটি সম্ভবত একটি নতুন প্রশ্ন হওয়া উচিত
জ্যাক বলেছেন চেষ্টা করুন topanswers.xyz

উত্তর:


10

কেন ডাটাবেস ভোগান্তির পরে লেনদেনের আইডি মোড়ক আগে যে লেনদেন অতীতে ছিল তা ভবিষ্যতে উপস্থিত হবে?

তারা না। উদ্ধৃত পাঠ্যটি কেবল ব্যাখ্যা করেছে যে কেন পোস্টগ্রাগুলি মডুলো 2 31 গাণিতিক ব্যবহার করতে হবে (যার অর্থ পুরানো লেনদেন যত তাড়াতাড়ি পর্যাপ্ত 'হিমায়িত' হওয়া পর্যন্ত লেনদেনগুলি প্রায় গুটিয়ে রাখতে পারে):

সাধারণ এক্সআইডিগুলি তুলনা করা হয় মডুলো -2 ^ 31 গাণিতিক ব্যবহার করে। এর অর্থ হল যে প্রতিটি সাধারণ এক্সআইডি-র জন্য দুটি বিলিয়ন এক্সআইডি থাকে যেগুলি "পুরানো" এবং দুই বিলিয়ন "নতুন"

সুনির্দিষ্ট হতে হবে:

পুরনো সারির সংস্করণগুলি দ্বি-বিলিয়ন-লেনদেন-পুরানো চিহ্ন পৌঁছানোর আগে অবশ্যই XID ফ্রোজেনএক্সআইডিকে অবশ্যই পুনরায় নিয়োগ করতে হবে

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

যদি কোনও কারণে অটোভ্যাকুয়াম কোনও টেবিল থেকে পুরানো এক্সআইডিগুলি সাফ করতে ব্যর্থ হয়, তখন ডাটাবেসের প্রাচীনতম এক্সআইডিগুলি মোড়ক থেকে দশ কোটি লেনদেনের সময় পৌঁছালে সিস্টেমটি এই জাতীয় সতর্কতা বার্তা প্রেরণ করতে শুরু করবে:

WARNING:  database "mydb" must be vacuumed within 177009986 transactions 
HINT:  To avoid a database shutdown, execute a database-wide VACUUM in "mydb". 

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

অন্য কথায় "অতীতে যে লেনদেনগুলি ভবিষ্যতে ছিল বলে মনে হয়" এবং "ডেটা ক্ষতি" পুরোপুরি তাত্ত্বিক এবং বাস্তবে লেনদেনের আইডি মোড়কের কারণে হবে না।



5

আপনি যে ব্লকটি পেস্ট করেছেন তা প্রশ্নের উত্তর বলে মনে হচ্ছে। এগুলি সমস্তই ভবিষ্যতের লেনদেনগুলি আড়াল করতে ব্যবহৃত যুক্তির উপর নির্ভর করে।

লেনদেন আইডি (এক্সআইডি) কাউন্টারটি 32 বিটের মধ্যে সীমাবদ্ধ এবং যদি এটি কখনও পুরানো সর্বাধিক লেনদেনের পরিবর্তে পরবর্তী নম্বরে পৌঁছে যায় তবে তা শূন্য থেকে নতুন করে শুরু হয়।

ঠিক আছে, এখন এটি শূন্য, সুতরাং পোস্টগ্র্যাস এসকিউএল এটি থেকে সমস্ত লেনদেন> 0 গোপন করছে। সুতরাং যদিও লেনদেন # 2,147,483,633 20 সেকেন্ড আগে ঘটেছিল, পোস্টগ্র্যাস এসকিউএল মনে করে যে এটি আরও 2,147,483,633 লেনদেনের জন্য ঘটবে না।


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