PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

खंडित अनुक्रमणिका का पता कैसे लगाएं और उन्हें PostgreSQL में डीफ़्रैग्मेन्ट करें?

आम तौर पर आपको इसके बारे में बिल्कुल भी चिंता करने की ज़रूरत नहीं है।

हालांकि, अगर बड़े पैमाने पर डिलीट या अपडेट किया गया है, या निरंतर परिवर्तन दर इतनी अधिक थी कि ऑटोवैक्यूम जारी नहीं रख सका, तो आप बुरी तरह से फूले हुए इंडेक्स के साथ समाप्त हो सकते हैं।

उस आईडी को निर्धारित करने का टूल pgstattuple विस्तार:

CREATE EXTENSION pgstattuple;

फिर आप इस तरह इंडेक्स ब्लोट की जांच कर सकते हैं:

SELECT * FROM pgstatindex('spatial_ref_sys_pkey');

-[ RECORD 1 ]------+-------
version            | 2
tree_level         | 1
index_size         | 196608
root_block_no      | 3
internal_pages     | 1
leaf_pages         | 22
empty_pages        | 0
deleted_pages      | 0
avg_leaf_density   | 64.48
leaf_fragmentation | 13.64

यह सूचकांक उत्कृष्ट आकार में है (कभी इस्तेमाल नहीं किया गया):इसमें केवल 14% ब्लोट है।

ध्यान रखें कि इंडेक्स डिफ़ॉल्ट रूप से fillfactor . के साथ बनाए जाते हैं 90 में से, यानी INSERT . द्वारा इंडेक्स ब्लॉक 90% से अधिक नहीं भरे जाते हैं ।

यह कहना मुश्किल है कि कोई इंडेक्स कब फूला हुआ है, लेकिन अगर leaf_fragmentation 50-60 से अधिक, यह इतना सुंदर नहीं है।

किसी अनुक्रमणिका को पुनर्व्यवस्थित करने के लिए, REINDEX का उपयोग करें ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में डेटाबेस और टेबल कैसे बनाएं और डिलीट करें

  2. NpgSql कनेक्शन स्ट्रिंग में ApplicationName कैसे निर्दिष्ट करें?

  3. Amazon RDS का उपयोग करके PostgreSQL चलाना

  4. PostgreSQL त्रुटि:फ़ंक्शन to_tsvector(चरित्र भिन्न, अज्ञात) मौजूद नहीं है

  5. अजवाइन कार्य अजगर के साथ postgresql डेटाबेस से कई पंक्तियों पर पुनरावृति करने में असमर्थ