मैं अकसर (मासिक/त्रैमासिक) माइक्रोसॉफ्ट एसक्यूएल सर्वर 2005 डेटाबेस दृश्यों का उपयोग कर सैकड़ों क्रिस्टल रिपोर्ट रिपोर्ट उत्पन्न करता हूं। क्या उन विचारों के दौरान सीपीयू चक्र और रैम बर्बाद कर रहे हैं जब मैं उनसे नहीं पढ़ रहा हूं? क्या मुझे बदले में संग्रहीत प्रक्रियाओं, अस्थायी तालिकाओं, या अल्पकालिक सामान्य टेबल का उपयोग करना चाहिए क्योंकि मैंने शायद ही कभी मेरे विचारों से पढ़ा है?क्या यह बहुत सारे डेटाबेस विचारों को ठीक है?
मैं डीबीए नहीं हूं इसलिए मुझे नहीं पता कि डेटाबेस सर्वर के अंदर दृश्यों के पीछे क्या चल रहा है।
क्या आपके पास बहुत सारे डेटाबेस दृश्य हैं? सबसे अच्छा अभ्यास क्या माना जाता है?
मैं उत्तर से सहमत हूं, लेकिन NOLOCK सुझाव के साथ नहीं। मैं बहुत सारे लोगों को सिर्फ हर जगह NOLOCK डाल रहा हूं और फिर सोच रहा हूं कि वे स्थिरता के मुद्दों क्यों हैं। इस तरह के खंड में इसका उपयोग होता है, लेकिन अधिकांश समय से इसका दुरुपयोग होता है, मैं इसे "बस इतना" उपयोग करने की अनुशंसा नहीं करता। लॉकिंग से बचने के लिए READ_COMMITTED_SNAPSHOT का उपयोग करना एक बेहतर विकल्प होगा। – Diego
@ डिएगो, * कुछ भी * का दुरुपयोग किया जा सकता है;) लेकिन सरल प्रश्नों के लिए, विशेष रूप से जब आप पूरी तरह से गंदे पढ़ने की परवाह नहीं करते हैं, तो यह वास्तव में उतना बुरा नहीं है जितना लोग इसे बाहर करते हैं। बिल्ली, StackOverflow भी इसके कई प्रश्नों पर इसका उपयोग करता है। यह भी देखें: http://www.codinghorror.com/blog/2008/08/deadlocked.html और http://stackoverflow.com/a/1453087/3743 दिन के अंत में, हालांकि, यह एक निर्णय कॉल है। .. और आपके डेटा पर आधारित होना चाहिए और आप कौन से संभावित व्यापार-बंद करना चाहते हैं। –
यह सच है, इस तरह से बहुत से लोग नोलोक को पवित्र अंगूर के रूप में देखते हैं जो उनके द्वारा लिखे गए खराब प्रश्नों को काम करता है। कई डेवलपर्स को पता नहीं है, एसक्यूएल में बस पसंद नहीं है या बस cr.p हैं और वे इससे स्पष्ट करने की कोशिश करते हैं; कोड समीक्षा और भारी रिफैक्टरिंग की तुलना में NOLOCK एक आसान बचने का मार्ग लगता है। मुझे पूरी तरह से नोलोक पर निर्मित एक प्रणाली को बनाए रखना था, एक को हटाने से यह दुर्घटनाग्रस्त हो जाएगा। यह इतना बुरा था कि मैंने डेवलपर्स के साथ दैनिक आधार पर भारी तर्क दिया, इसलिए वे "नोलोक के उपासक" थे। मैं कहता हूं "संदेह के मामले में, इसका उपयोग न करें। अगर आप निश्चित हैं, तो इसका इस्तेमाल न करें"। :) – Diego