ক্লাস্টারের পরে কি একটি রিইন্ডেক্স দরকার?


12

আমি সূচক দ্বারা একটি সারণী পুনরায় অর্ডার করতে CLUSTER ব্যবহার করার বিষয়টি বিবেচনা করছি। আমি বুঝতে পারি যে টেবিলের ডেটার এই বিনোদন সমস্ত বিদ্যমান সূচিগুলি হয় ফুলে যায় বা অকেজো হয়ে যায়। আমি কিছু ইঙ্গিত দেখেছি যে একটি ক্লাস্টারের পরে একটি REINDEX প্রয়োজন। আমি অন্যান্য রেফারেন্স পেয়েছি যা নির্দেশ করে যে ক্লাস্টার একটি রিন্ডেক্স করে does অফিসিয়াল নথিপত্র REINDEX ক্লাস্টার অংশ হওয়ার বা প্রয়োজনীয় (যদিও পিচকারি পর বিশ্লেষণ চলমান সুপারিশ না) সম্পর্কে এ সব কিছুই বলছেন

কেউ কি স্পষ্টতই (অর্থাত্ অফিসিয়াল ডক্সে এক প্রকার রেফারেন্স সহ) বলতে পারেন যে ক্লাস্টারের পরে একটি রিইন্ডেক্স দরকার কিনা?


2
আমি এটি প্রয়োজনীয় মনে করি না। clusterসারিগুলি স্থানান্তরিত করে, সুতরাং এটি সূচির তথ্য যে কোনওভাবে আপডেট করতে হবে।
a_horse_with_no_name

হ্যাঁ, তবে অর্ধেক আলোচনার মধ্যে যে তত্ত্বটি আমি পেয়েছি তা হ'ল সূচকটি প্রস্ফুটিত হয়।
তিনি TREE

উত্তর:


12

আপনার পুনর্নির্দেশের দরকার CLUSTERনেই , কারণ কার্যকরভাবে এটি আপনার জন্য করে।

আরও সুনির্দিষ্টভাবে, CLUSTERউত্স টেবিলটি লক করে তারপরে লক্ষ্য সূচক অনুসারে এটির একটি নতুন কপি তৈরি করা হয়। এটি নতুন অনুলিপিটিতে সূচি তৈরি করে তারপরে পুরানো টেবিলটি এবং নতুনগুলির সাথে সূচীগুলি প্রতিস্থাপন করে।

নোট করুন যে এটি VACUUM FULL9.0+-এও সত্য ।

যদি আপনি আলোচনাটি দেখতে পান যে CLUSTERব্লোটকে সূচকগুলি বোঝায় যে এটি এমন লোক হতে পারে যা ধরে নেওয়া হচ্ছে যে CLUSTERপ্রাক-9.0 এর মতো কাজ করে VACUUM FULL। আপনি পুরানো VACUUM FULLবাস্তবায়নের ফলে সূচক ব্লোটের উল্লেখ করে এবং বিকল্পCLUSTER হিসাবে পরামর্শ দেওয়ার জন্য এমন আলোচনাগুলি এবং অপ্রচারিত আলোচনাও দেখতে পাচ্ছেন ।

এটি ডকুমেন্টেশনে বোঝানো হয়েছে :

সারণীর একটি অস্থায়ী অনুলিপি তৈরি করা হয় যা সূচী ক্রমে টেবিলের ডেটা ধারণ করে। টেবিলে প্রতিটি সূচকের অস্থায়ী অনুলিপিগুলিও তৈরি করা হয় । অতএব, আপনাকে ডিস্কে ফাঁকা স্থান প্রয়োজন কমপক্ষে সারণির আকার এবং সূচক মাপের সমান

এটি যা বলে না, তবে হওয়া উচিত, সেই অস্থায়ী অনুলিপিগুলি তারপরে মূল টেবিলটি প্রতিস্থাপন করবে । (সাহসী খনি)


1
আপনার কি কোনও রেফারেন্স আছে যে ক্লাস্টার সূচকগুলি প্রতিস্থাপন করে?
তিনি TREE

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

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

1
@ ট্রি সকল সম্ভাব্য পরিস্থিতিতে আচরণ বোঝার নিরঙ্কুশতার জন্য আপনার উত্স কোডটি পড়তে হবে। আমি কেবল আপনাকেই বলতে পারি যে আমি এমন কোন পরিস্থিতির বিষয়ে অবগত নই যেখানে সূচীগুলি পুনরায় লিখিত CLUSTERহয় না এবং প্রকৃত ফাইলগুলির পরীক্ষা নিখরচায় base/নতুন relfilenodeগুলি দেখায় । মনে হচ্ছে আপনি যে সমস্যাগুলি এখনও করেন নি সে সম্পর্কে আপনি উদ্বিগ্ন।
ক্রেগ রিঞ্জার

8

আমি এর সাথে_হর্স_বিহীন_নো নাম রেখেছি: আপনাকে সূচিগুলি পুনরায় তৈরি করতে হবে না। CLUSTERডকুমেন্টেশনে এটি উল্লেখ করা হয়নি তা ছাড়াও , আমরা আরও REINDEXপৃষ্ঠাটি পরামর্শ করতে পারি :

REINDEX ব্যবহার করার জন্য বেশ কয়েকটি পরিস্থিতি রয়েছে:

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

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

  • আপনি একটি সূচকের জন্য স্টোরেজ প্যারামিটার (যেমন ফিলফ্যাক্টর) পরিবর্তন করেছেন এবং পরিবর্তনটি পুরোপুরি কার্যকর হয়েছে কিনা তা নিশ্চিত করতে চান।

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

স্পষ্টতই, CLUSTERএই কোনও মামলায় পড়ে না।

এবং CLUSTERডক্সে একটি ছোট বাক্য রয়েছে :

[ক্লাস্টার করার সময়] টেবিলে প্রতিটি সূচকের অস্থায়ী অনুলিপিগুলিও তৈরি করা হয়।

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


প্রস্তাবটি অবশ্যই সেখানে রয়েছে এবং পরীক্ষার মাধ্যমে এটি নিশ্চিত হয়ে গেছে। ডকসগুলি আসলে বলেছিল যে সূচিগুলি পুনরায় তৈরি করা হয়েছে (স্থায়ীভাবে) I
গাছ

2
আমি এখানে একটি ডক প্যাচের জন্য স্টাফ দেখতে পাচ্ছি। সূচি পুনরুদ্ধার সম্পর্কে ম্যানুয়ালটি আরও স্পষ্ট হওয়া উচিত।
এরউইন ব্র্যান্ডসটেটার

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

@TREE অনুসারে সংস্করণ এবং ডক্স পরিবর্তন (বেশিরভাগ) এর মধ্যে অনেকগুলি বৈশিষ্ট্য পরিবর্তন রয়েছে। সম্ভবত চশমাগুলিও পরিবর্তন হয় :), তাই আমি কোথাও কোনও টাই দেখছি না।
dezso

@ ডেজো সত্য, তবে তারা নথিভুক্ত কার্যকারিতা সরিয়ে দিতে নারাজ হবে। সাধারণভাবে ডকুমেন্টেশনের গুণাবলী দেওয়া, আমি এখনও ধরে নিই এই আচরণটি বাদ দেওয়া ইচ্ছাকৃত।
তিনি TREE

5

ডিস্ক স্পেস বিভাগ পুনরুদ্ধার বিভাগে একটি রেফারেন্স পেয়েছে ।

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


-3

সমস্ত উত্তর বিশ্লেষণ করে, আমার মতে এটি করার সঠিক উপায় হ'ল ক্লাস্টারের পূর্বে পুনর্নির্মাণ করা। যেহেতু ডকুমেন্টেশনটি বলে না যে ক্লাস্টার একটি রিইনডেক্স করে বা না, এবং কেবলমাত্র সূচীর অনুলিপি অর্ডার করেছে বা না, আমি মনে করি যে একটি সূচকযুক্ত সূচক আরও ভাল ক্লাস্টারযুক্ত টেবিলের ফলস্বরূপ। এর পরে একটি বিশ্লেষণ কাজ শেষ করবে। ক্লাস্টার এবং / অথবা পুনর্নির্দেশ সূত্রে মৃত tuples মুক্ত না করা না হলে সকলকে অকেজো বলে মনে করার পূর্বে একটি শূন্যস্থান পূর্ণ


আমি গৃহীত উত্তরে উল্লেখ হিসাবে, ডকুমেন্টেশন নেই বলে যে ইনডেক্স, পুনর্নির্মিত হবে মাত্র পিচকারি কমান্ড সম্পর্কে পৃষ্ঠাতে নয়।
তিনি TREE

এবং উভয়ই CLUSTERএবং VACUUM FULLএকেবারে নতুন শারীরিক টেবিল উত্পাদন করে - এর পরে কেবল কোনও মৃত হতে পারে না। পুরানো অনুলিপি দ্বারা ব্যবহৃত স্থানটি ক্রিয়াকলাপ শেষে শেষ হবে।
dezso

প্রকৃতপক্ষে. এটি টেবিল এবং সমস্ত সূচি পুনরায় তৈরি করুন। ক্লাস্টারটি টেবিলটিকে পুনরায় সাজানোর জন্য যে সূচিটি ব্যবহার করে তা সম্পর্কে আমার সন্দেহ রয়েছে। এটি প্রথমে পুনর্নির্মাণ করা হবে বা যেমনটি সারণীটি পুনঃক্রম করতে ব্যবহৃত হবে? এবং তারপরে সূচকটি আবার তৈরি করা হয়? কারণ একটি সমস্যাযুক্ত সূচক কিছু সমস্যা তৈরি করতে পারে ...
আইসলান লুইজ ওয়েন্ডলিং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.