2011-08-11 22 views
20

मैं कैसे तय करूं कि SqlCommand ऑब्जेक्ट का उपयोग करते समय टाइमआउट के रूप में कितना समय उपयोग करना है?एसक्यूएल कॉमांड ऑब्जेक्ट, कमांडटाइमआउट के लिए कितना समय है?

कोड मैं पर काम कर रहा हूँ के कुछ हिस्सों पर मेरे पास है (किसी और द्वारा लिखित):

cmd.CommandTimeout = 60; 

कौन सा मुझे लगता है कि काफी कम है। हालांकि, मैंने कुछ लोगों को 30000 पर सेट करने के बारे में बात करते हुए मंचों में देखा है, जो बहुत लंबा लगता है।

मुझे कैसे पता चलेगा कि मेरे आवेदन के लिए सबसे अच्छा क्या है?

उत्तर

37

ऐसा लगता है कि लोग उलझन में हैं कि यह सेकंड या मिलीसेकंड है या नहीं। documentation बताता है कि टाइमआउट सेकंड में है। अधिकांश प्रश्नों के लिए 1 मिनट का टाइमआउट उचित लगता है। एक 8+ घंटे का टाइमआउट उचित प्रतीत नहीं होता है।

क्या आपके पास कोई प्रश्न है जो आप एक मिनट से अधिक समय लेने की उम्मीद कर रहे हैं? यदि ऐसा है, तो इसे किसी ऐसे मूल्य से बढ़ाएं जो आप देख सकें कि सब कुछ ठीक से काम कर रहा है, लेकिन किसी समस्या के बारे में आपको सतर्क करने के लिए हमेशा के लिए लेने के लिए इतना अधिक नहीं है। (उदाहरण के लिए, आप 1 मिनट से 5 मिनट तक जा सकते हैं।)

5

आपको गणना करना चाहिए कि सबसे लंबी संभव क्वेरी कितनी समय लेगी और संभवतः सर्वर ओवरलोड, नेटवर्क ट्रैफिक इत्यादि को संभालने के लिए 1.5 से उस मान को गुणा करें ...

1

यह SECONDS में है और यह पूरी तरह से निर्भर करता है कि वास्तविक SQL कमांड कब तक ले सकता है।

उदाहरण के लिए, हमारे अधिकांश आदेश स्पोक को चलाते हैं जो पूर्ण होने के लिए 30 सेकंड से अधिक समय नहीं लेना चाहिए, हालांकि कुछ जोड़े हैं जो अधिक लंबे समय तक चलते हैं, जिसका अर्थ है कि उनके पास अपने उच्च मूल्य वाले टाइमआउट हैं।

आप प्रोफ़ाइल कितनी देर तक औसतन अपनी दिनचर्या फिर उसके अनुसार टाइमआउट को समायोजित कर लेता है, और विलंबता आदि

6

डिफ़ॉल्ट मान की तरह चर के लिए कमरे से बाहर जाने के लिए याद करने की आवश्यकता होगी 30 सेकंड (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtimeout.aspx) है।

यदि आपका डेटाबेस एक ही मशीन पर है तो आपको आमतौर पर इसे बदलने की ज़रूरत नहीं है। बस इसे आज़माएं: यदि आप कनेक्शन टाइमआउट का अनुभव करते हैं तो मूल्य बढ़ाएं।

1

SqlCommand.CommandTimeout का उपयोग कमांड निष्पादित करने के प्रयास को समाप्त करने से पहले प्रतीक्षा समय निर्धारित करने के लिए किया जाता है, जिसका अर्थ यह है कि वह समय जब आप अपने SqlCommand को विशेष एसक्यूएल क्वेरी या संग्रहीत प्रक्रिया निष्पादित करने के लिए देना चाहते हैं और इसे पूरा करने के लिए प्रतीक्षा करें। यदि आदेश निर्दिष्ट समय में पूरा नहीं हुआ है, तो इसे समाप्त कर दिया जाएगा और अपवाद हटा दिया जाएगा ..

तो, CommandTimeout का मान सेट करना पूरी तरह से आपके आवेदन और आवश्यकताओं पर निर्भर करता है, यदि आप एसक्यूएल स्टेटमेंट या संग्रहीत प्रक्रिया को जानते हैं निष्पादित कर रहे हैं इसे 60 से अधिक मूल्य के लिए सेट करने से कम ले जाएगा, अन्यथा 60 सेकंड किसी भी कथन को पूरा करने के लिए प्रतीक्षा करने के लिए पर्याप्त लगता है।

+0

क्या इस मूल्य को 5 मिनट तक बढ़ाने में कोई परिणाम हैं। मैं डब्ल्यूसीएफ एप्लीकेशन विकसित कर रहा हूं जो डब्ल्यूपीएफ ग्राहकों की सेवा करता है। –