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