কেবলমাত্র ইনসার্টস প্রাপ্ত টেবিলটিতে ভ্যাকুয়াম চালানো কি মূল্যবান?


19

একটি 2015 পুনরায়: আলাপ উদ্ভাবনের সময়, এডাব্লুএস উল্লেখ করেছে যে শূন্যতা কেবল আপডেট বা মুছে ফেলার পরে নয়, প্রবেশের পরেও চালানো উচিত। এখানে আলাপের প্রাসঙ্গিক অংশটি দেওয়া হল:

http://www.youtube.com/watch?v=tZXp19q8RFo&t=16m2s

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

উত্তর:


15

tl; dr: প্রথম প্রক্রিয়াটি ডেটা পড়ার পরে পড়ার পরে হিন্ট বিট সেট করে। এটি পৃষ্ঠাটিকে নোংরা করবে, লেখার ক্রিয়াকলাপ তৈরি করবে। অন্য জিনিসটি VACUUM(তবে অন্যান্য কমান্ড নয়) হ'ল পৃষ্ঠাকে যথাযথভাবে দৃশ্যমান হিসাবে চিহ্নিত করে। VACUUMশেষ পর্যন্ত টিপলগুলি হিমায়িত করতে টেবিলে আঘাত করতে হবে।

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

এমভিসিসির কারণে, পোস্টগ্রিস যখনই মূল্যায়ন করে যে কোনও কোলের কাছে টিউপলটি দৃশ্যমান হওয়া উচিত কি না, এটি অবশ্যই বিবেচনা করতে হবে যে লেনদেনটি টিপল তৈরি করেছে (এক্সমিন লুকানো ক্ষেত্রে রেকর্ড করা হয়েছে) এবং কিছু অন্যান্য মানদণ্ড সহ committed এই চেকটি ব্যয়বহুল, সুতরাং যত তাড়াতাড়ি জানা গেল যে সমস্ত লেনদেনের জন্য একটি লেনদেন দৃশ্যমান তা এই টিপল শিরোনামে একটি "ইঙ্গিত বিট" সেট করা আছে। সেই বিটের সেটিংটি পৃষ্ঠাটি dirties, যার অর্থ এটি ডিস্কে লিখতে হবে। এটি পড়ার পরের কমান্ডটি SELECTহ'ল হঠাৎ করে প্রচুর লেখার ট্র্যাফিক তৈরি করে দিলে এটি খুব বিভ্রান্ত হতে পারে । VACUUMসন্নিবেশ সক্রিয় হওয়ার পরে একটি চালানো তা এড়ানো হবে। আর একটি গুরুত্বপূর্ণ পার্থক্য হ'লVACUUMসর্বদা কোনও পৃষ্ঠায় ইঙ্গিত দেওয়া হবে (যতক্ষণ না এটি পৃষ্ঠায় ক্লিনআপ লক পেয়েছে), তবে অন্যান্য কমান্ডগুলি কেবলমাত্র কমান্ড শুরুর আগে সন্নিবেশ করানো লেনদেনের ইঙ্গিত দিবে ।

এই সমস্ত ইঙ্গিত বিট লেখার একটি গুরুত্বপূর্ণ বিষয় হ'ল VACUUMথ্রোটল করা যেতে পারে (এবং অটোভ্যাকুমটি ডিফল্টরূপে থ্রোটলড হয়)। অন্যান্য কমান্ড থ্রোটলড নয় এবং যত দ্রুত সম্ভব নোংরা ডেটা তৈরি করবে।

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

এমভিসিসি কীভাবে কাজ করে তার কারণে, আগে 2 বিলিয়ন ডলারের বেশি লেনদেন tোকানো টুপলগুলি অবশ্যই " হিমায়িত " হিসাবে চিহ্নিত করতে হবে । ডিফল্টরূপে অটোভ্যাকুয়াম প্রতি 200 এম লেনদেন করতে এটি শুরু করে। একটি বাল্ক সন্নিবেশের পরে ভ্যাকুয়াম_ফ্রিজে_মিনি_এজ 0 তে সেট করে ম্যানুয়াল শূন্যতা চালানো তার প্রভাব হ্রাস করতে সহায়তা করতে পারে। আরও আক্রমণাত্মকভাবে, আপনি VACUUM FREEZEtableোকানোর পরে টেবিলের উপর দৌড়াতে পারেন । পরের ফ্রিজ স্ক্যানটি কখন ঘটবে তা "ঘড়ির রিসেট" করবে।

আপনি যদি সুনির্দিষ্ট বিশদ জানতে চান HEAPTUPLE_LIVEতবে HeapTupleSatisfiesVacuum()ভিতরে কল করার পরে কেসটি একবার দেখুন lazy_scan_heap()HeapTupleSatisfiesVacuum()নিজেও দেখুন এবং এর সাথে তুলনা করুন HeapTupleSatisfiesMVCC()

আমার আরও দুটি উপস্থাপনা রয়েছে যা আকর্ষণীয় হতে পারে। প্রথম ভিডিওটি http://www.pgcon.org/2015/schedule/events/829.en.html থেকে পাওয়া যায় , যখন দ্বিতীয় ভিডিওটি (যা আমি কিছুটা ভাল বলে মনে করি) https://www.youtube এ পাওয়া যায়। কম / দেখেছেন? V = L8nErzxPJjQ


এটি অত্যন্ত আকর্ষণীয়, এবং নির্দিষ্ট EXPLAIN (ANALYZE, BUFFERS) outputs. But, if I understand things correctly, some of the hint bits (at least * COMMITTED` এবং *INVALID) তে কিছু অদ্ভুত পৃষ্ঠাগুলিও ব্যাখ্যা করে এবং (ইতিমধ্যে) ইতিমধ্যে COMMITবা ROLLBACK, দ্বারা ঠিক করা যেতে পারে ?
dezso

3
কমিট এবং রোলব্যাক আসলে ডেটা পৃষ্ঠাগুলি স্পর্শ করে না, তাই না, বিশেষত এই আদেশগুলি কখনই ইঙ্গিত করতে পারে না। একটি ডিএমএল কমান্ড এখনও অন্য লেনদেন দ্বারা চিহ্নিত টিপলস বা বর্তমান লেনদেনের দ্বারা চিহ্নিত সম্ভাব্য এমনকি টিউপসগুলির জন্যও উভয় xmin এবং xmax ইঙ্গিতের স্ট্যাটাস সেট করতে পারে।
জিম ন্যাসবি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.