SQL सर्वर 2008 में अधिकतम तालिका क्षमता


11

मेरे पास एक एप्लिकेशन है जो एक तालिका में सालाना 1 बिलियन से अधिक पंक्तियों को सम्मिलित करता है। इस तालिका में कुछ varcharऔर bigintकॉलम और एक बूँद कॉलम भी है।

1 बिलियन पंक्तियों में इतिहास डेटा होता है जो ट्रैकिंग उद्देश्य के लिए रखा जाता है। इसलिए मैं सोच रहा था कि क्या अधिकतम तालिका आकार के बारे में इस MSDN लेख के अनुसार इस संरचना में जारी रहने पर कोई तालिका क्षमता सीमा होगी ।

क्या उस लिंक में उल्लिखित डेटा फ़ाइल आकार तालिका डेटा फ़ाइल समूह को संदर्भित करता है?


@marc_s को पकड़ने के लिए धन्यवाद। हमें उन ढेर में शामिल होने के लिए स्वतंत्र महसूस करें , जहां अन्य चीजों के अलावा, हम इन पर सामूहिक ध्यान देते हैं
जेएनके

प्रत्येक पंक्ति का अधिकतम आकार क्या है?
निक चामास

जवाबों:


6

डिस्क स्थान को छोड़कर कोई व्यावहारिक सीमा नहीं है। मैंने आपके द्वारा पूरी तरह से लिंक की गई तालिका को पढ़ा और इसकी जाँच की।

यदि आपको 16TB से ऊपर जाने की आवश्यकता है, तो आपको कई फ़ाइलों (एक सरल प्रक्रिया) की आवश्यकता है।


मुझे लगता है कि यदि मैं सही हूं, तो टेबल को विभाजित करके और विभाजन को अलग फ़ाइल समूहों का उपयोग करके प्राप्त किया जा सकता है?
GAP

1
यह आवश्यक भी नहीं है। बस एक नई फ़ाइल (मौजूदा फ़ाइल समूह में) जोड़ें। SQL सर्वर सभी फ़ाइलों को समान रूप से भरना शुरू कर देगा। यदि एक फ़ाइल अब और नहीं बढ़ सकती है तो यह दूसरी फ़ाइल को विकसित करेगी।
usr

2

sql सर्वर 2008 में एक तालिका बड़ी संख्या में रिकॉर्ड को संभाल सकती है और जैसा कि @usr ने उल्लेख किया है कि यह डिस्क स्थान पर निर्भर करता है लेकिन इसकी अनुशंसा की जाती है कि यदि आपकी तालिका में कई पंक्तियाँ हैं और यह बढ़ती रहती है कि आप विभाजन तालिका http://technet.microsoft का उपयोग करें । com / en-us / पुस्तकालय / dd578580 (v = sql.100) .aspx

जब डेटाबेस तालिका सैकड़ों गीगाबाइट या उससे अधिक के आकार में बढ़ती है, तो नए डेटा को लोड करना, पुराने डेटा को निकालना और अनुक्रमणिका को बनाए रखना अधिक कठिन हो सकता है।

इसके बारे में अधिक जानकारी

http://msdn.microsoft.com/en-us/library/ms190787.aspx

और इसे लागू करने के लिए कैसे http://blog.sqlauthority.com/2008/01/25/sql-server-2005-database-table-partitioning-tutorial-how-to-horizontal-partition-database-table/


हालांकि आपको विभाजन के बारे में वास्तव में सावधान रहने की आवश्यकता है । फ़ंक्शन और कुंजी को सावधानीपूर्वक विचार करने की आवश्यकता है, साथ ही उपयोग के मामले भी। विभाजन के तार्किक क्षेत्र का उपयोग कभी भी किसी भी प्रश्न में नहीं किया जा सकता है, जो प्रदर्शन को मार देगा।
जेएनके

एक ही तालिका में सही लेकिन अरबों पंक्तियों के प्रदर्शन पर भी असर पड़ने वाला है, प्रत्येक वर्ष के लिए एक अलग तालिका में कई तालिका उदाहरणों में उर डेटा को विभाजित करने का विकल्प भी है और यदि आप सभी डेटा देखना चाहते हैं तो आप एक दृश्य का उपयोग कर सकते हैं लेकिन प्रत्येक मेज पर कम से कम एकतरफा और अद्यतन तेजी से होगा
अम्मरआर

एक बड़ी मेज पर आवेषण आवश्यक रूप से धीमा नहीं है, यह कुंजी और अनुक्रमित पर निर्भर करता है। मैं लगभग 30 मीटर पंक्तियों का मासिक भार एक तालिका में रखता हूं जिसमें 700 मीटर मौजूदा पंक्तियां हैं, और हम कोई विभाजन नहीं करते हैं। मैंने विभाजन की कोशिश की, लेकिन इससे हल होने की तुलना में अधिक समस्याएं हुईं। यह वास्तव में एक सवाल है अगर आप इसे जांचना चाहते हैं।
जेएनके

मैं अपने इतिहास के डेटा को एक अलग तालिका में ले जाने और एक संघ दृश्य बनाने के बारे में सोच रहा था, इसलिए इसे एप्लिकेशन द्वारा उपयोग किया जा सकता है जब क्वेरी इतिहास + नवीनतम डेटा की आवश्यकता होती है जो सिस्टम में मेरे द्वारा किए गए प्रश्नों के 25% से कम है। क्या यह एकाधिक डेटा फ़ाइलों को रखने या स्तंभ के आधार पर तालिका के विभाजन से अधिक कुशल होगा जो डेटा को नवीनतम के रूप में चिह्नित करता है? IO संचालन से जो अधिक कुशल होगा? मेरे संदेह का कारण यह है कि दोनों समाधानों में IO के दृष्टिकोण से समान होगा।
जीएपी

आपके द्वारा लिए गए किसी भी दृष्टिकोण में इसकी सर्वोत्तम प्रथाएं होती हैं जो इसे अच्छा या बुरा बना सकती हैं, मेरा मतलब है कि यदि आपके पास कई टेबल हैं तो आपकी क्वेरी जटिल होगी और इसे बनाए रखना कठिन होगा, यदि आपके पास एक टेबल है और टेबल पार्टीशन का उपयोग करना है, तो इसमें भिन्नताएं हैं जैसे आपका sql संस्करण एंटरप्राइज़ आदि होना चाहिए, कई डेटा फ़ाइलों को बेहतर IO परिचालनों के लिए अनुशंसित किया जाता है, लेकिन इसके सर्वोत्तम अभ्यास भी हैं, sql प्रदर्शन के लिए कोई सीधा आगे का रास्ता नहीं है ...
AmmarR

0

शायद एक विभाजन दृश्य काम करेगा।

से का उपयोग कर विभाजित देखें MSDN अनुच्छेद :

विभाजन के दृश्य एक बड़ी तालिका में डेटा को छोटे सदस्य तालिकाओं में विभाजित करने की अनुमति देते हैं। डेटा को किसी एक स्तंभ में डेटा मानों की श्रेणी के आधार पर सदस्य तालिकाओं के बीच विभाजित किया जाता है। विभाजन तालिका पर निर्दिष्ट एक CHECK बाधा में प्रत्येक सदस्य तालिका के लिए डेटा रेंज परिभाषित हैं। ऐसा दृश्य जो सभी सदस्य तालिकाओं के चयन को एक ही परिणाम सेट में संयोजित करने के लिए UNION ALL का उपयोग करता है, फिर परिभाषित किया जाता है। जब दृश्य को संदर्भित करने वाले सेलेक्ट स्टेटमेंट्स विभाजन कॉलम पर खोज की स्थिति निर्दिष्ट करते हैं, तो क्वेरी ऑप्टिमाइज़र CHECK बाधा परिभाषाओं का उपयोग करके यह निर्धारित करता है कि किस सदस्य तालिका में पंक्तियाँ हैं।

मुझे यकीन नहीं है कि यह कैसे एक Paritioned टेबल से अलग है जो AmmarR ने अपने जवाब में जानकारी दी थी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.