हे भगवान, मुझे लगता है कि मैंने उन सभी को देखा है। अधिक बार यह प्रदर्शन समस्याओं को ठीक करने का प्रयास नहीं है, जो कि प्रदर्शन की समस्याओं के कारण अपने तरीके का निवारण करने के लिए बहुत सुस्त है या यह भी शोध कर रहा है कि वास्तव में प्रदर्शन समस्या है या नहीं। इन मामलों में से कई में मुझे आश्चर्य है कि अगर यह सिर्फ उस व्यक्ति का मामला नहीं है जो एक विशेष तकनीक की कोशिश करना चाहता है और सख्त रूप से एक नाखून की तलाश कर रहा है जो उनके चमकदार नए हथौड़ा को फिट करता है।
यहाँ एक हालिया उदाहरण है:
डेटा आर्किटेक्ट मुझे एक बड़े और जटिल अनुप्रयोग में एक महत्वपूर्ण तालिका को लंबवत रूप से विभाजित करने के लिए एक विस्तृत प्रस्ताव के साथ आता है। वह जानना चाहता है कि परिवर्तन के लिए किस प्रकार के विकास के प्रयासों को समायोजित करना आवश्यक होगा। बातचीत इस तरह हुई:
मैं: आप इस पर विचार क्यों कर रहे हैं? आप जिस समस्या को हल करने की कोशिश कर रहे हैं, वह क्या है?
उसे: टेबल एक्स बहुत चौड़ा है, हम इसे प्रदर्शन कारणों से विभाजित कर रहे हैं।
Me: क्या आपको लगता है कि यह बहुत व्यापक है?
उसे: सलाहकार ने कहा कि जिस तरह से एक तालिका में कई कॉलम हैं।
Me: और यह प्रदर्शन को प्रभावित कर रहा है?
उसे: हाँ, उपयोगकर्ताओं ने अनुप्रयोग के XYZ मॉड्यूल में रुक-रुक कर मंदी की सूचना दी है।
मैं: आपको कैसे पता चलेगा कि टेबल की चौड़ाई समस्या का स्रोत है?
उसे: यह XYZ मॉड्यूल द्वारा उपयोग की जाने वाली कुंजी तालिका है, और यह 200 कॉलम की तरह है। यह समस्या होनी चाहिए।
Me (स्पष्टीकरण): लेकिन मॉड्यूल XYZ विशेष रूप से उस तालिका के अधिकांश स्तंभों का उपयोग करता है, और इसके द्वारा उपयोग किए जाने वाले स्तंभ अप्रत्याशित हैं क्योंकि उपयोगकर्ता उस तालिका से प्रदर्शित होने वाले डेटा को दिखाने के लिए एप्लिकेशन को कॉन्फ़िगर करता है। यह संभावना है कि जिस समय हम प्रदर्शन को नुकसान पहुंचाएंगे , उस समय का 95% हिस्सा एक साथ सभी तालिकाओं में शामिल हो जाएगा ।
उसे: सलाहकार ने कहा कि यह बहुत व्यापक है और हमें इसे बदलने की आवश्यकता है।
मैं: यह सलाहकार कौन है? मुझे नहीं पता था कि हमने एक सलाहकार को काम पर रखा था, न ही उन्होंने विकास टीम से बात की थी।
उसे: ठीक है, हम उन्हें अभी तक काम पर नहीं रखा है। यह उनके द्वारा प्रस्तावित एक प्रस्ताव का हिस्सा है, लेकिन उन्होंने जोर देकर कहा कि हमें इस डेटाबेस को फिर से तैयार करने की जरूरत है।
मैं: उह हह। तो डेटाबेस री-डिज़ाइन सेवाओं को बेचने वाले सलाहकार को लगता है कि हमें डेटाबेस री-डिज़ाइन की आवश्यकता है ...।
बातचीत ऐसे ही चलती रही। बाद में, मैंने प्रश्न में तालिका पर एक और नज़र डाली और यह निर्धारित किया कि शायद विदेशी विभाजन की रणनीतियों की आवश्यकता के बिना कुछ सरल सामान्यीकरण के साथ इसे संकुचित किया जा सकता है। एक बार जब मैं प्रदर्शन समस्याओं (पहले अप्राप्त) की जांच कर चुका था और उन्हें दो कारकों तक नीचे ले गया था, तो यह निश्चित रूप से एक म्यूट पॉइंट था।
- कुछ प्रमुख स्तंभों पर अनुक्रमणिका गुम है।
- कुछ दुष्ट डेटा विश्लेषक जो समय-समय पर मुख्य तालिकाओं ("बहुत चौड़ा" सहित) को उत्पादन डेटाबेस को सीधे MSAccess के साथ क्वेरी करके लॉक कर रहे थे।
बेशक आर्किटेक्ट अभी भी "बहुत व्यापक" मेटा-समस्या पर लटका हुआ तालिका के ऊर्ध्वाधर विभाजन के लिए जोर दे रहा है। यहां तक कि उन्होंने एक अन्य डेटाबेस सलाहकार से एक प्रस्ताव प्राप्त करके अपने मामले को आगे बढ़ाया, जो यह निर्धारित करने में सक्षम था कि हमें ऐप को देखे बिना या किसी भी प्रदर्शन विश्लेषण को चलाने के बिना डेटाबेस में प्रमुख डिजाइन परिवर्तनों की आवश्यकता है।