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

pg_column_size octet_length से छोटा कैसे हो सकता है?

मैं कहूंगा कि pg_column_size TOAST . के संकुचित आकार की रिपोर्ट कर रहा है ed मान, जबकि octet_length असम्पीडित आकारों की रिपोर्ट कर रहा है। मैंने फ़ंक्शन स्रोत या परिभाषाओं की जांच करके इसे सत्यापित नहीं किया है, लेकिन यह समझ में आता है, विशेष रूप से संख्याओं के तार काफी अच्छी तरह से संपीड़ित होंगे। आप EXTENDED . का उपयोग कर रहे हैं भंडारण इसलिए मान TOAST के लिए योग्य हैं संपीड़न। देखें TOAST दस्तावेज़ीकरण

अपेक्षित डीबी आकार की गणना के लिए, यह बिल्कुल नया प्रश्न है। जैसा कि आप निम्नलिखित डेमो से देख सकते हैं, यह इस बात पर निर्भर करता है कि आपके तार कितने संकुचित हैं।

यहां एक प्रदर्शन दिखाया गया है कि कैसे octet_length pg_column_size . से बड़ा हो सकता है , यह दर्शाता है कि TOAST कहाँ से शुरू होता है। सबसे पहले, आइए क्वेरी आउटपुट पर परिणाम प्राप्त करें जहाँ कोई TOAST नहीं है खेल में आता है:

regress=> SELECT octet_length(repeat('1234567890',(2^n)::integer)), pg_column_size(repeat('1234567890',(2^n)::integer)) FROM generate_series(0,12) n;
 octet_length | pg_column_size 
--------------+----------------
           10 |             14
           20 |             24
           40 |             44
           80 |             84
          160 |            164
          320 |            324
          640 |            644
         1280 |           1284
         2560 |           2564
         5120 |           5124
        10240 |          10244
        20480 |          20484
        40960 |          40964
(13 rows)

अब उसी क्वेरी आउटपुट को एक टेबल में स्टोर करते हैं और संग्रहीत पंक्तियों का आकार प्राप्त करते हैं:

regress=> CREATE TABLE blah AS SELECT repeat('1234567890',(2^n)::integer) AS data FROM generate_series(0,12) n;
SELECT 13

regress=> SELECT octet_length(data), pg_column_size(data) FROM blah;
 octet_length | pg_column_size 
--------------+----------------
           10 |             11
           20 |             21
           40 |             41
           80 |             81
          160 |            164
          320 |            324
          640 |            644
         1280 |           1284
         2560 |             51
         5120 |             79
        10240 |            138
        20480 |            254
        40960 |            488
(13 rows)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीजी-वादा में सहायकों का उपयोग करते समय कॉलम कैसे सेट करें

  2. क्या pg_restore मौजूदा तालिकाओं को अधिलेखित कर देगा?

  3. कैसे Acosh () PostgreSQL में काम करता है

  4. क्या postgresql में वैश्विक चर परिभाषित करना संभव है?

  5. कठपुतली के साथ बर्मन को स्वचालित करना:it2ndq/barman (भाग दो)