आपकी गणना कई बिंदुओं पर बंद है।
- संग्रहण आकार
varchar
,text
(औरcharacter
!) है, मैनुअल को उद्धृत करना ):
टिप्पणी में प्रश्न को संबोधित करने के लिए मेरा बोल्ड जोर।
-
HeapTupleHeader 23 बाइट्स लेता है . लेकिन प्रत्येक टपल ("आइटम" - पंक्ति या अनुक्रमणिका प्रविष्टि) में एक आइटम पहचानकर्ता होता है इसके लिए डेटा पृष्ठ की शुरुआत में, उल्लिखित 27 बाइट्स पर कुल। यह अंतर प्रासंगिक है क्योंकि वास्तविक उपयोगकर्ता डेटा
MAXALIGN
. के गुणज से शुरू होता है प्रत्येक आइटम की शुरुआत से, और आइटम पहचानकर्ता इस ऑफ़सेट के साथ-साथ वास्तविक "टपल आकार" के विरुद्ध नहीं गिना जाता है। -
डेटा संरेखण (8 के गुणक) के कारण पैडिंग का 1 बाइट, जिसका उपयोग इस मामले में NULL बिटमैप के लिए किया जाता है।
-
varchar
. प्रकार के लिए कोई पैडिंग नहीं (लेकिन ऊपर उल्लिखित अतिरिक्त बाइट)
तो, वास्तविक गणना (अधिकतम तक भरे गए सभी कॉलम के साथ) है:
23 -- heaptupleheader
+ 1 -- NULL bitmap (or padding if row has NO null values)
+ 9 -- columns ...
+ 101
+ 2
+ 101
+ 4
+ 11
-------------
252 bytes
+ 4 -- item identifier at page start
संबंधित:
- क्या PostgreSQL में NULL का उपयोग अभी भी हेडर में NULL बिटमैप का उपयोग नहीं करता है?
- PostgreSQL में स्थान की गणना और बचत करना
आपको लिंक सूची . में और भी बहुत कुछ मिलेगा इन उत्तरों के दाईं ओर।