2010-08-11 6 views
10

एक सी # अनुप्रयोग में, OleDBConnection एक बार बनाया जाना चाहिए, या जब भी SQL कथन निष्पादित किया जाता है?एक सी # अनुप्रयोग में, एक डीबी कनेक्शन एक बार बनाया जाना चाहिए, या हर बार SQL कथन निष्पादित किया जाना चाहिए?

मैं किसी और द्वारा लिखित सी # कोड देख रहा हूं। प्रत्येक SQL कथन OleDbConnection ऑब्जेक्ट के निर्माण से पहले होता है जिसका कनेक्शन स्ट्रिंग एक एमडीबी डेटाबेस को इंगित करता है।

क्या हर बार ओलेडबोनक्शन ऑब्जेक्ट बनाने के लिए उपयुक्त है, या ऑब्जेक्ट को एप्लिकेशन की शुरुआत में बनाया जाना चाहिए और तब से उपयोग किया जाना चाहिए।

+1

डेविड के अनुसार, किस तरह का आवेदन (फॉर्म, एएसपी.नेट इत्यादि) और किस प्रकार का आर्किटेक्चर (एसओए इत्यादि) आप उपयोग कर रहे हैं - यह निर्भर करेगा। – StuartLC

उत्तर

3

यह स्थिति पर निर्भर करता है।

आप एक पंक्ति में कई बयान को क्रियान्वित करने के लिए जा रहे हैं, तो आप प्रदर्शन के लिहाज से, एक बार इसे खोलने के सभी बयानों पर अमल, और फिर इसे बंद करने के लिए बेहतर कर रहे हैं,

यदि आप प्रोग्राम शुरू होने पर कनेक्शन खोलने और इसे तब तक खोलने के बारे में पूछने के लिए जब तक प्रोग्राम चालू नहीं हो जाता है, फिर भी नहीं। जैसे ही आप इसके साथ कर रहे हैं इसे बंद करें। एक कनेक्शन लटकने के लिए खुला छोड़ना बेहतर है।

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

फिर, यह कारक उचित संचालन और प्रदर्शन के लिए माध्यमिक है, लेकिन अभी भी एक जटिल ऐप में विचार करने के लिए कुछ है।

मुख्य कारक यह है कि यह कनेक्शन को बनाए रखने की कोस बनाम प्रदर्शन को कैसे प्रभावित करेगा। आपको यह तय करने की ज़रूरत है कि प्रत्येक स्थिति में।

0

हर बार जब आपको डीबी से कुछ चाहिए तो उसे कनेक्शन खोलना चाहिए और बाद में इसे बंद करना चाहिए। कनेक्शन को भौतिक रूप से बंद करने का निर्णय लेने के लिए कनेक्शन पूल पर जाएं।

7

Best Practices for Using ADO.NET के अनुसार:

उच्च निष्पादन अनुप्रयोगों के लिए समय की एक न्यूनतम राशि के लिए उपयोग में डेटा स्रोत पर कनेक्शन रखने के लिए, साथ ही के रूप में प्रदर्शन का लाभ लेने के कनेक्शन पूलिंग के रूप में प्रौद्योगिकी जैसे बढ़ाने ...

6

मान लें कि कनेक्शन पूलिंग आपके डेटाबेस के लिए उपलब्ध है, जो संभवतः आप एक कनेक्शन खोलना और बंद करना चाहते हैं अपने डेटाबेस में हर कॉल के लिए टियन। यह आपको केवल तब ही डेटाबेस कनेक्शन के सीमित संसाधन का उपयोग करने की अनुमति देता है जब आपको इसकी आवश्यकता होती है और फिर कॉल करने के समाप्त होने के तुरंत बाद इसे अन्य कॉलर्स के लिए पूल में वापस कर दें। यदि आप कनेक्शन पर रहते हैं तो आप जल्द ही सीमित संसाधन से बाहर हो जाएंगे, जो कि डेटाबेस के लिए कुल उपलब्ध कनेक्शन है, और इसलिए आपके आवेदन की स्केलेबिलिटी और प्रदर्शन में गंभीरता से बाधा आती है।

मैं आमतौर पर एक बयान का उपयोग कर का उपयोग सुनिश्चित करने के लिए कनेक्शन के उपयोग के बाद करीब है - नीचे देखें:

using (ODBCConnection c = new ODBCConnection(ConnectionString)) 
    { 
    c.Command.CommandType = CommandType.Text; 
    // make a call 
    } 

का आनंद लें!

1

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

यदि आपके पास क्लाइंट पीसी पर प्रदर्शन करने के लिए एक सीपीयू-गहन कार्य है, तो आपको कनेक्शन बंद करने के बाद आपको यह कार्य करना चाहिए ताकि आप कनेक्शन को जोड़ न सकें।

लेकिन यदि आपके पास प्रदर्शन करने के लिए डेटाबेस फ़ंक्शंस की एक श्रृंखला है, तो आपके क्लाइंट के प्रदर्शन को एक साथ खुले कनेक्शन में एक साथ करके इन्हें बेहतर किया जा सकता है।

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