ভ্যাকুয়াম ফ্রিজে বনাম ভ্যাকুয়াম সম্পূর্ণ


18

VACUUMPostgreSQL এ এই ধরণের পার্থক্য সম্পর্কে কেউ ব্যাখ্যা করতে পারেন ?

আমি ডকটি পড়েছি তবে এটি কেবল বলেছেন যে FULLটেবিলগুলি লক করে এবং FREEZEটিপলগুলি "হিমশীতল" করে। আমি মনে করি এটি একই রকম। আমি কি ভূল?


আপনি ডক পড়েছেন? আপনি যা পড়েছেন তার একটি লিঙ্ক অন্তর্ভুক্ত করার জন্য এটি একটি উপযুক্ত সুযোগ হবে ...
এরউইন ব্র্যান্ডসেটেটার

উত্তর:


12

একটি সংক্ষিপ্ত সংক্ষিপ্ত উত্তর এখানে।

ভ্যাকুয়াম পূর্ণ একটি একচেটিয়া লক নেয় এবং টেবিলটি পুনর্নির্মাণ করে যাতে এতে কোনও খালি ব্লক না থাকে (আমরা ভরাট ফ্যাক্টরটি এখনকার জন্য 100% ভান করব)।

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

উদাহরণস্বরূপ, টেমপ্লেট 0 ডাটাবেস হিমায়িত কারণ এটি কখনই পরিবর্তন হয় না (ডিফল্টরূপে আপনি এটিতে সংযোগ করতে পারবেন না))

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

tl; ডাঃ হিমাঙ্ক একটি টেবিল চিহ্নিত করে যে কোনও অটোভ্যাক রক্ষণাবেক্ষণের প্রয়োজন নেই। পরের আপডেটটি এটিকে বাতিল করে দেবে।


সুতরাং, VACUUM FREEZEটেবিলের জন্য কি একচেটিয়া লক প্রয়োজন? এটির মতো হওয়া উচিত বলে মনে হচ্ছে, অন্যথায় আপনি হঠাৎ সক্রিয় লেনদেন থেকে বিশ্বব্যাপী দৃশ্যমান সারি তৈরির ঝুঁকি নিতে চান। আমি এটির ভুল বোঝাবুঝি করছি ...
পার্থিয়ান শট

কোনও ভ্যাকুয়াম হিমায়িত হয় না, ভ্যাকুয়াম পূর্ণ হয়।
স্কট মার্লো

6

জয়দেવન কী লিখেছেন তা আরও ব্যাখ্যা করার জন্য।

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

পোস্টগ্র্রেস এই সমস্যাটি মোকাবিলার জন্য যা করেন তা হ'ল প্রতিটি সারি যা যথেষ্ট পরিমাণে পুরানো তার মোড়কে ঝুঁকিপূর্ণ হওয়ার জন্য একটি বিশেষ লেনদেন আইডি যা প্রতিটি লেনদেনের চেয়ে সর্বদা পুরানো থাকে assign আপনি এটি দেখতে পেলেন যে বৈধ লেনদেন আইডিগুলি 0 থেকে 2147483647 অবধি, এটি সমস্ত বর্তমান সারিগুলির জন্য লেনদেন আইডি -1 এ সেট করবে।

যাইহোক, যেহেতু শূন্যস্থানটি মূলত পুনরায় ব্যবহারের জন্য খালি স্থান চিহ্নিত করে, এটি কেবলমাত্র ডেটা পৃষ্ঠাগুলিতে কাজ করে যা পরিবর্তিত হয়েছে।

VACUUM FREEZEমূলত যা করা হয় তা সমস্ত পৃষ্ঠাগুলির জন্য লেনদেনের আইডি হিমায়িত করা হয় না সেগুলি পরিবর্তিত হয়েছে বা না হয়, যাতে সমস্ত বর্তমান সারিগুলি সমস্ত নতুন লেনদেনের জন্য পুরানো হিসাবে দেখা যায়।

যাইহোক, সংস্করণ 8.2 হিসাবে অবচয় VACUUM FREEZEকরা হয়েছে এবং ব্যবহার করা উচিত নয়। পরিবর্তে সেখানে প্যারামিটার রয়েছে vacuum_freeze_table_ageএবং autovacuum_freeze_max_ageএটি নির্দিষ্ট করে যে টেবিলটিতে একটি সম্পূর্ণ স্ক্যান হওয়ার আগে কতগুলি লেনদেন ঘটতে পারে (কার্যকরভাবে টেবিলে একটি অভ্যন্তরীণ কাজ VACUUM FREEZEকরে)।


3
কীভাবে ডক্সগুলি VACUUM FREEZEহতাশ / নিরুৎসাহিত হওয়ার কথা উল্লেখ করে না ?
dezso

মজাদার. এটি 8.2 এবং 9.0 এর মধ্যে সংস্করণগুলির জন্য করেছিল। সম্ভবত তারা অবচয়কে সরিয়ে দিয়েছে কারণ এটি থাকা ভাল বৈশিষ্ট্য হতে পারে।
জিমি স্টেনকে

1

আমি একই প্রশ্নটি জিজ্ঞাসা করলে উত্তর থেকে অনুলিপি / আটকান - "নিয়মিত শূন্যতা পুনরায় ব্যবহারের জন্য খালি জায়গা চিহ্নিত করে এবং সম্পর্কের শেষে খালি স্থানটি পুনরায় দাবি করে So সুতরাং খালি স্থানটি যদি মাঝখানে থাকে তবে এটি হতে পারে না etc পুনরায় দাবি করা

শূন্যস্থান পূর্ণ সংযোগ সমস্ত শূন্য স্থান পুনরায় দাবি। এটির জন্য একচেটিয়া লক প্রয়োজন এবং এটি সাধারণভাবে উত্পাদন সিস্টেমের জন্য খারাপ।

তাই নিয়মিত শূন্যতার উদ্দেশ্যটি সারণিগুলি থেকে স্থানটি পুনরায় দাবি করা নয়, পরে এটি পুনরায় ব্যবহারের জন্য উপলব্ধ করা। ভ্যাকুয়াম ফুলের উদ্দেশ্য হ'ল এটি ঘটে যাওয়ার সময় একটি এক্সক্লুসিভ লক এবং ডিবি কর্মক্ষমতা ব্যয় করে সমস্ত নষ্ট স্থানের দাবি করা to

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

http://postgresql.1045698.n5.nabble.com/vacuuming-doubt-td5782828.html

এটি যুক্ত করতে, ভ্যাকুয়াম পূর্ণ আসলে টেবিলের জন্য নতুন ফাইল তৈরি করবে (বিদ্যমান ফাইলগুলি 0 আকারে সঙ্কুচিত হয়ে যাবে)। সুতরাং ওএস স্থানটি পুনরায় দাবি করতে পারে।


2
VACUUM FREEZEবিশেষত প্রশ্নটি জিজ্ঞাসা করে।
এরউইন ব্র্যান্ডসেটেটার

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