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

PostgreSQL - मूल से छोटा डेटाबेस पुनर्स्थापित किया गया

संक्षिप्त उत्तर यह है कि डेटाबेस संग्रहण स्थान की तुलना में गति के लिए अधिक अनुकूलित है।

उदाहरण के लिए, यदि आपने किसी तालिका में 100 पंक्तियाँ डाली हैं, फिर एक विषम संख्या वाली आईडी के साथ प्रत्येक पंक्ति को हटा दिया है, तो DBMS केवल 50 पंक्तियों के साथ एक नई तालिका लिख ​​सकता है, लेकिन इसके लिए केवल हटाई गई पंक्तियों को खाली स्थान के रूप में चिह्नित करना अधिक कुशल है। और जब आप अगली पंक्ति डालें तो उनका पुन:उपयोग करें। इसलिए तालिका वर्तमान में जितनी जगह चाहिए उससे दोगुनी जगह लेती है।

लेन-देन प्रबंधन के लिए लॉक करने के बजाय "एमवीसीसी" के पोस्टग्रेज का उपयोग इसकी और भी अधिक संभावना बनाता है, क्योंकि अद्यतन में आमतौर पर भंडारण के लिए एक नई पंक्ति लिखना शामिल होता है, फिर पुरानी पंक्ति को हटा दिया जाता है जब कोई लेनदेन इसे नहीं देख रहा हो।

डेटाबेस को डंप और पुनर्स्थापित करके, आप इस खाली स्थान के बिना एक डीबी को फिर से बना रहे हैं। यह अनिवार्य रूप से VACUUM FULL है कमांड करता है - यह वर्तमान डेटा को एक नई फ़ाइल में फिर से लिखता है, फिर पुरानी फ़ाइल को हटा देता है।

एक एक्सटेंशन पोस्टग्रेज के साथ वितरित किया गया है जिसे pg_freespace कहा जाता है। जो आपको इसमें से कुछ की जांच करने देता है। जैसे आप मुख्य तालिका आकार (अलग-अलग "TOAST" तालिकाओं में संग्रहीत अनुक्रमणिका और स्तंभों को शामिल नहीं करते) और प्रत्येक तालिका द्वारा उपयोग की जाने वाली खाली जगह को नीचे सूचीबद्ध कर सकते हैं:

Select oid::regclass::varchar as table,
      pg_size_pretty(pg_relation_size(oid)/1024 * 1024) As size,
      pg_size_pretty(sum(free)) As free
 From (
   Select c.oid,
       (pg_freespace(c.oid)).avail As free
     From pg_class c
     Join pg_namespace n on n.oid = c.relnamespace
    Where c.relkind = 'r'
      And n.nspname Not In ('information_schema', 'pg_catalog')
 ) tbl
 Group By oid
 Order By pg_relation_size(oid) Desc, sum(free) Desc;


  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 को संस्करण 9.6 से संस्करण 10.1 में कैसे अपग्रेड करें?

  2. दृश्य में गतिशील स्तंभ नाम (पोस्टग्रेज)

  3. SQLAlchemy लोकलहोस्ट पर Postgresql से कनेक्ट नहीं हो सकता

  4. कॉलम मानों में विशेष वर्ण निकालें/बदलें?

  5. Postgres से JDBC में क्वेरी प्लान की जानकारी कैसे प्राप्त करें?