2015-03-10 4 views
10

मैंने कल देखा कि .NET के SqlConnection कक्षा में डिफ़ॉल्ट नेटवर्क पैकेट आकार और डिफ़ॉल्ट रूप से SQL सर्वर में डिफ़ॉल्ट के बीच एक उल्लेखनीय अंतर है।डिफ़ॉल्ट नेटवर्क पैकेट आकार में अंतर: SqlConnection बनाम SQL सर्वर डिफ़ॉल्ट

SqlConnection वर्ग 'PacketSize संपत्ति के लिए, this link प्रति:

नेटवर्क पैकेट के आकार (बाइट्स में)। डिफ़ॉल्ट मान 8000 है।

उस आलेख के पिछले संस्करणों में, यह उल्लेख करता है (सभी तरह से .NET 1.1 पर वापस) कि डिफ़ॉल्ट 8192 बाइट था। SQL सर्वर के लिए, हालांकि (प्रति this link):

डिफ़ॉल्ट पैकेट आकार 4,096 बाइट्स है।

उस लेख से ऐसा लगता है कि कम से कम SQL Server 2005 के बाद से यह डिफ़ॉल्ट है। क्या किसी को उनके बीच इस अंतर का कारण पता है?

अद्यतन: इस प्रश्न में अधिक मज़ेदार जोड़ने के लिए, मैं Thomas LaRock (जो एक एसक्यूएल एमवीपी होता है) से बात कर रहा है, और उसने मुझे बताया कि SQL Server 2000 में डिफ़ॉल्ट नेटवर्क पैकेट आकार वास्तव में था , 8192 बाइट्स (जैसे .NET 1.1!)। बाद के संस्करणों में यह बदल गया, हालांकि, यह कितना विखंडन पैदा कर रहा था, सर्वर के साप्ताहिक रीबूट की आवश्यकता है।

तो SQL सर्वर ने इसे आधे से क्यों कम किया, लेकिन .NET ने इसे केवल 1 9 2 बाइट से कम कर दिया? क्या SQL सर्वर को इसके लिए केवल 2 गुणों का उपयोग करने के लिए मजबूर करना है?

+0

विखंडन:

का संदर्भ लें? –

+0

दुर्भाग्य से मुझे नहीं लगता कि आपको यहां सबसे अच्छा जवाब मिलेगा। प्रश्न का उद्देश्य क्या है? ऐतिहासिक/फोकेलोरिक व्यक्तिगत ज्ञान? ये आकार संभवतः अधिकांश स्थितियों में सर्वश्रेष्ठ पर आधारित होते हैं। यदि आप बड़े मूल्य का उपयोग कर बल्क अपलोड कर रहे हैं तो बेहतर है (नेटवर्क एमटीयू के लिए देखें)। मैं केवल उन संभावित प्रश्नों से पूछ सकता हूं जो वास्तविक उत्तर पर थोड़ी सी रोशनी डालते हैं। – ripvlan

उत्तर

0

यह हमेशा मामला रहा है। यहां तक ​​कि SQL 7.0 और SQL Server 2000 में, default value was 4096 bytes

problem होता है जब आप 8060 बाइट्स तुलना में एक उच्च नेटवर्क स्मृति का उपयोग के रूप में यह स्मृति का एक क्षेत्र 384 MB का आकार का उपयोग करता है से स्मृति को आबंटित करने एसक्यूएल सर्वर की आवश्यकता होगी प्रयास करें।

क्लाइंट एप्लिकेशन पक्ष से पैकेट आकार को संशोधित करना बहुत आसान है। कनेक्शन स्ट्रिंग में, आप बस packet size=4096 सेट करें।

यह सलाह दी जाती है कि SQL सर्वर चला रहे सर्वर पर डिफ़ॉल्ट नेटवर्क आकार के साथ बेकार न हो, जब तक कि आप एसएसआईएस का उपयोग करके कुछ भारी उठाने नहीं कर रहे हों या आपका आवेदन थोक प्रतिलिपि संचालन कर रहा है, बीएलओबी डेटा भेज रहा है और प्राप्त कर रहा है।

ध्यान दें कि SybaseASE डिफ़ॉल्ट पैकेट आकार के रूप में 512 बाइट्स का उपयोग करता है, इसलिए SQL सर्वर 6.5 में डिफ़ॉल्ट रूप से सेट हो सकता है (लेकिन मेरे पास SQL ​​6.5 के मामले में उद्धरण का कोई संदर्भ नहीं है)। क्या की Network Packet Size: to Fiddle With or Not to Fiddle With

+0

मैं इसे समझता हूं, लेकिन मैं सोच रहा हूं कि .NET के पास बेस एसक्यूएल से अलग क्यों है। – IronMan84

संबंधित मुद्दे