কী CLUSTER
করে তা যাচাই করতে , আমি পূর্বের পরীক্ষা থেকে একটি টেবিলে নিয়েছিলাম যা মূলত প্রথম 10 মিলিয়ন ধনাত্মক পূর্ণসংখ্যার সমন্বয় করে। আমি ইতিমধ্যে কিছু সারি মুছে ফেলেছি এবং অন্য একটি কলামও রয়েছে তবে এটি কেবল প্রকৃত টেবিলের আকারকেই প্রভাবিত করে, তাই এটি আকর্ষণীয় নয়।
প্রথমত, VACUUM FULL
টেবিলে চালিয়ে fka
আমি এর আকার নিয়েছি:
\dt+ fka
List of relations
Schema | Name | Type | Owner | Size | Description
--------+------+-------+----------+--------+-------------
public | fka | table | test | 338 MB |
তারপরে টেবিলের একেবারে প্রথম থেকেই ডেটাটির শারীরিক ক্রমটি দেখুন:
SELECT *, ctid FROM fka ORDER BY ctid LIMIT 5;
id | col1 | ctid
-----+------+---------
2 | 2 | (0,1)
3 | 3 | (0,2)
4 | 4 | (0,3)
5 | 5 | (0,4)
6 | 6 | (0,5)
এখন কয়েকটি সারি মুছুন:
DELETE FROM fka WHERE id % 10 = 5;
--DELETE 1000000
এর পরে, রিপোর্ট করা টেবিলের আকার পরিবর্তন হয়নি। সুতরাং আসুন এখন দেখুন কি CLUSTER
করে:
CLUSTER fka USING fka_pkey;
SELECT *, ctid FROM fka ORDER BY ctid LIMIT 5;
id | col1 | ctid
-----+------+---------
2 | 2 | (0,1)
3 | 3 | (0,2)
4 | 4 | (0,3)
6 | 6 | (0,4)
7 | 7 | (0,5)
অপারেশনের পরে টেবিলের আকার 338 থেকে 296 এমবিতে পরিবর্তিত হয়েছে। ctid
পৃষ্ঠায় টিপলের শারীরিক স্থান বর্ণনা করে এমন কলামটি থেকে আপনি দেখতে পাচ্ছেন যে সারি মিলানোর কোনও ফাঁক নেই id = 5
।
যেহেতু টিপলগুলি পুনরায় সাজানো হয়েছিল, তত সূচিগুলি পুনরায় তৈরি করা উচিত ছিল যাতে তারা সঠিক জায়গাগুলির দিকে ইঙ্গিত করে।
সুতরাং পার্থক্যটি দেখতে পাওয়া যায় যা VACUUM FULL
সারিগুলি অর্ডার করে না। যতদূর আমি জানি, দুটি কমান্ড ব্যবহার করার পদ্ধতিতে কিছুটা পার্থক্য রয়েছে তবে ব্যবহারিক দৃষ্টিকোণ থেকে এটি মনে হয় প্রধান (কেবল?) পার্থক্য।