क्या 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पंक्तियों को आदेश नहीं देता है। जहाँ तक मुझे पता है, तंत्र में कुछ अंतर है जिसका उपयोग दो कमांड करते हैं लेकिन व्यावहारिक दृष्टिकोण से यह मुख्य (केवल) अंतर प्रतीत होता है।