मेरे पास एक तालिका है जिसमें 490 M पंक्तियाँ और 55 GB तालिका स्थान है, इसलिए प्रति पंक्ति लगभग 167 बाइट्स हैं। तालिका में तीन कॉलम हैं: VARCHAR(100)
ए DATETIME2(0)
, और ए SMALLINT
। VARCHAR
क्षेत्र में पाठ की औसत लंबाई लगभग 21.5 है, इसलिए कच्चे डेटा को लगभग 32 बाइट प्रति पंक्ति: 22 + 2 के लिए VARCHAR
, 6 के लिए 6 DATETIME2
, और 16-बिट पूर्णांक के लिए 2 होना चाहिए ।
ध्यान दें कि ऊपर दिया गया स्थान केवल डेटा है, सूचक नहीं। मैं गुणों के तहत बताए गए मूल्य का उपयोग कर रहा हूँ | भंडारण | सामान्य | डेटा स्थान।
बेशक कुछ ओवरहेड होना चाहिए , लेकिन प्रति पंक्ति 135 बाइट्स बहुत कुछ की तरह लगता है, खासकर एक बड़ी तालिका के लिए। ऐसा क्यों हो सकता है? क्या किसी और के समान गुणक देखे गए हैं? क्या कारक आवश्यक अतिरिक्त स्थान की मात्रा को प्रभावित कर सकते हैं?
तुलना के लिए, मैंने दो INT
फ़ील्ड और 1 M पंक्तियों के साथ एक तालिका बनाने का प्रयास किया । कच्चे डेटा के 8 बाइट्स की तुलना में आवश्यक डेटा स्पेस 16.4 एमबी: 17 बाइट्स प्रति पंक्ति था। एक और टेस्ट के साथ एक INT
और टेबुल, जिसमें एक VARCHAR(100)
ही टेक्स्ट होता है, असली टेबल 39 बाइट्स प्रति पंक्ति (44 K पंक्तियों) का उपयोग करती है, जहाँ मुझे 28 प्लस थोड़ी उम्मीद होती है।
इसलिए उत्पादन तालिका में बहुत अधिक उपरि है। क्या इसलिए कि यह बड़ा है? मुझे उम्मीद है कि सूचकांक का आकार लगभग एन * लॉग (एन) होगा, लेकिन मैं यह नहीं देखता कि वास्तविक डेटा के लिए गैर-रैखिक होने के लिए जगह की आवश्यकता क्यों है।
किसी भी संकेत के लिए अग्रिम धन्यवाद!
संपादित करें:
सूचीबद्ध सभी फ़ील्ड हैं NOT NULL
। वास्तविक तालिका में उस क्रम में VARCHAR
फ़ील्ड और फ़ील्ड पर एक संकुल PK है DATETIME2
। दो परीक्षणों के लिए, पहला INT
(क्लस्टर) पीके था।
यदि यह मायने रखता है: तालिका पिंग परिणामों का रिकॉर्ड है। फ़ील्ड URL, पिंग दिनांक / समय और मिलीसेकंड में विलंबता हैं। डेटा को लगातार जोड़ा जाता है, और कभी भी अपडेट नहीं किया जाता है, लेकिन डेटा को समय-समय पर हटाकर इसे प्रति URL प्रति घंटे केवल कुछ रिकॉर्ड तक काट दिया जाता है।
संपादित करें:
एक बहुत ही दिलचस्प जवाब यहाँ है कि पता चलता है, बहुत पढ़ने और लिखने के साथ एक सूचकांक के लिए, पुनर्निर्माण नहीं फायदेमंद हो सकता है। मेरे मामले में, खपत की जाने वाली जगह एक चिंता का विषय है, लेकिन अगर लेखन प्रदर्शन अधिक महत्वपूर्ण है, तो व्यक्ति भड़कीले सूचकांकों के साथ बेहतर हो सकता है।