मैं एक समस्या को समझने की कोशिश कर रहा हूँ जो हम SQL Server 2000 के साथ कर रहे हैं। हम एक मामूली लेन-देन की वेबसाइट हैं और हमारे पास एक संग्रहित खरीद है जिसे sp_GetCurrentTransactions
एक ग्राहक नाम, और दो दिनांक स्वीकार करता है।
अब तिथियों और ग्राहक के आधार पर, यह क्वेरी शून्य से अधिकतम पंक्तियों तक कुछ भी वापस कर सकती है।
समस्या: हमने जो अनुभव किया है, वह यह है कि अचानक हम Execution Timeout Expired
किसी विशेष क्लाइंट के लिए कई त्रुटियां (आमतौर पर या समान) प्राप्त करेंगे, जबकि वे इस संग्रहित खरीद को अंजाम देने की कोशिश करेंगे। इसलिए हम क्वेरी की जांच करते हैं, इसे SSMS में चलाते हैं और पाते हैं कि इसमें 30 का समय लगता है। इसलिए हम स्टोर किए गए प्रोक और -बैंग को फिर से जोड़ते हैं- यह अब 300ms में चलता है।
मैंने इस बारे में हमारे डीबीए से बात की है। उन्होंने मुझे बताया कि डेटाबेस ने एक क्वेरी प्लान बनाया जब हमने स्टोर की गई खरीदारी की। उन्होंने कहा कि मापदंडों के उस सेट के लिए यह एक अच्छी योजना थी, लेकिन यदि आप उस पर कुछ निश्चित मापदंडों को फेंकते हैं, तो यह योजना उस डेटा के लिए सबसे अच्छी योजना नहीं होगी, और इसलिए आप इसे धीमी गति से चलाते हुए देखेंगे।
मेरे सामने प्रस्तुत विकल्प चालित समस्या है जो संग्रहित खरीद से समस्या है और डायनेमिक एसक्यूएल में वापस है जिसके पास हर रन पर निष्पादन योजना है।
यह मेरे लिए एक कदम वापस की तरह महसूस करता है और मुझे लगता है कि इस के आसपास एक रास्ता होना चाहिए। क्या इस मुद्दे से निपटने का कोई और तरीका है?
किसी भी और सभी प्रतिक्रियाओं की सराहना की जाती है।