मेरे पास एक साझा होस्टिंग पर एक एमएस एसक्यूएल सर्वर 2008 डेटाबेस है और मुझे जितना संभव हो सके उपयोग की गई संग्रहण स्थान को कम करने की आवश्यकता है। मेरी सबसे बड़ी तालिका में निम्नलिखित परिभाषा है:पंक्ति आकार ओवरहेड
CREATE TABLE [stage](
[station_id] [smallint] NOT NULL,
[time_utc] [smalldatetime] NOT NULL,
[stage_mm] [smallint] NOT NULL,
CONSTRAINT [PK_stage] PRIMARY KEY CLUSTERED ([station_id] ASC,[time_utc] ASC)
मैंने अपनी तालिका में प्रति रिकॉर्ड बाइट्स की औसत संख्या को खोजने का प्रयास किया। सिद्धांत के अनुसार आकार होना चाहिए: 4 बी (पंक्ति शीर्षलेख) + 2 बी (छोटा) + 4 बी (smalldatetime) + 2 बी (छोटा) जो 12 बाइट्स है।
हालांकि, जब मैं कमांड भाग गया:
dbcc showcontig ('stage') with tableresults
इससे पता चलता है: MinimumRecordSize = 15, MaximumRecordSize = 15 तो एसक्यूएल सर्वर के अनुसार, रिकॉर्ड प्रति बाइट्स 15 और नहीं 12 संख्या 15 बाइट्स जब मैं तालिका द्वारा ली गई कुल डिस्क स्थान को देखता हूं और पंक्तियों की संख्या से विभाजित करता हूं तो प्रति रिकॉर्ड भी सही लगता है।
3 अतिरिक्त बाइट्स क्या ले रहा है ???
स्पष्टीकरण के लिए धन्यवाद। तो ऐसा प्रतीत होता है कि मेरे मामले में SQL सर्वर 2008 में 7 बाइट से कम तक पंक्ति ओवरहेड को कम करना असंभव है। – jirikadlec2