मैं SSMS के आसपास घूम रहा था और देखा कि मेरे INT
कॉलम का "आकार" 4 बाइट्स (अपेक्षित) था, लेकिन मुझे यह देखकर थोड़ा झटका लगा कि मेरे BIT
कॉलम पूरे बाइट थे।
क्या मैं गलत समझ रहा था कि मैं क्या देख रहा था?
मैं SSMS के आसपास घूम रहा था और देखा कि मेरे INT
कॉलम का "आकार" 4 बाइट्स (अपेक्षित) था, लेकिन मुझे यह देखकर थोड़ा झटका लगा कि मेरे BIT
कॉलम पूरे बाइट थे।
क्या मैं गलत समझ रहा था कि मैं क्या देख रहा था?
जवाबों:
आपने तालिका में कितने बिट कॉलम परिभाषित किए हैं? मैंने इसे MSDN पर पाया, यह कहता है कि 8 या उससे कम बिट कॉलम को एक बाइट के रूप में संग्रहीत किया जाता है।
हाँ।
यदि आपके पास bit
तालिका में केवल एक स्तंभ है, तो भंडारण का उपयोग करता है, byte
लेकिन 8 bit
कॉलम तक एक ही बाइट में संग्रहीत किया जा सकता है, इसलिए अगले 7 उस संबंध में "स्वतंत्र" हैं।
NULL_BITMAP
( प्रति फिर अगले बाइट के लिए गोल) के लिए 1 बिट प्रति स्तंभ भंडारण की आवश्यकता है । डेटा पृष्ठों में यह bit
सभी कॉलमों के लिए है, भले ही वे अनुमति दें या न दें NULL
( अशक्त स्तंभों के अपवाद के साथ बाद में मेटाडेटा के रूप में जोड़ा गया है केवल परिवर्तन के माध्यम से ALTER TABLE
जहां पंक्ति अभी तक अपडेट नहीं हुई है)