दिलचस्प पोस्ट
एक .py फ़ाइल पार्स करें, एएसटी पढ़ें, इसे संशोधित करें, फिर संशोधित स्रोत कोड को वापस लिखें सर्वर सॉकेट जावा में इनपुटस्ट्रीम को कैसे पढ़ें क्रॉस-ऑल संसाधन साझाकरण (सीओआरएस) पोस्ट अनुरोध काम करने के लिए कैसे करें स्विंगवार्कर के निष्पादन को कैसे रद्द करें? पांडा: पहले से मौजूद कॉलम से की गई मानों के साथ डेटाफ्रेम में दो नए कॉलम बनाएं एक्सेस-कंट्रोल-अनुमति-मूल शीर्षलेख को कैसे जोड़ें Django वर्ग-आधारित दृश्य: मैं as_view विधि में अतिरिक्त पैरामीटर कैसे पारित करूं? mysql_fetch_array () / mysql_fetch_assoc () / mysql_fetch_row () पैरामीटर 1 संसाधन होने की उम्मीद है HttpUrlConnection के शीर्षलेख को कैसे संशोधित करें strstr नहीं कामकाज संग्रहीत कार्यप्रणाली C #: MYSQL को कॉल करने के वैध उदाहरण के लिए पूछना जावास्क्रिप्ट में ऑब्जेक्ट्स / एरेज़ का प्रदर्शन क्या है? (विशेष रूप से Google V8 के लिए) प्रारंभ बिंदु और दूरी जानने के दूसरे बिंदु की गणना करें कैसे "git बाहर निकलने के लिए ठीक से बाहर नहीं निकलने के लिए कैसे (निकास कोड 128)" TortoiseGit पर त्रुटि? कैसे जावा में int को पूर्णांक में बदलने के लिए?

बुलेट और आरएसपीसी रत्नों का उपयोग करते हुए एन + 1 क्वेरीज़ को कम करना

आरएसपीसी के साथ बुलेट रत्न का उपयोग करने का एक प्रभावी तरीका क्या है? अभी मुझे लगता है कि अगर मैं इसे अपने मौजूदा यूनिट परीक्षण ढांचे से उपयोग करता हूं तो मुझे परीक्षाओं में बहुत अधिक सूचनाएं या असफलता मिल रही हैं क्योंकि परीक्षणों के भीतर n + 1 प्रश्नों के कारण ये मेरे उत्पादन अनुप्रयोग में क्या होता है, जैसे कि किसी की जाँच करना मूल्य या संघ जैसे, n + 1 विफलताओं को ठीक करने के लिए मेरे नियंत्रकों या मॉडल पर कुछ भी सेट करने की आवश्यकता नहीं होती है, बल्कि इसके लिए मेरे परीक्षण सेटअप में कुछ सेट करने की आवश्यकता होती है जो उस विशेष त्रुटि को फेंकने के लिए नहीं है और मुझे अपने आवेदन पर कोई वास्तविक प्रदर्शन सुधार नहीं दिखाई देता है।

वेब के समाधान से एकत्रित समाधान "बुलेट और आरएसपीसी रत्नों का उपयोग करते हुए एन + 1 क्वेरीज़ को कम करना"

सबसे प्रभावी तरीका बिल्कुल नहीं है परीक्षणों में n + 1 प्रश्नों को कम करने के लिए कुछ वैध लाभ हो सकते हैं, सबसे स्पष्ट रूप से समग्र निष्पादन समय को तेज करने के लिए। यह काफी संभव है, हालांकि, आप या तो बहुत अधिक परीक्षण कर रहे हैं या संभव से कम महत्वपूर्ण लाभ कर रहे हैं। मैं आम तौर पर इसे एप्लिकेशन के संपूर्ण मूल्य में योगदान करने के बजाय परीक्षणों को अपनाने में सहायता करने के लिए अतिरिक्त कोड लिखने के लिए अपरिहार्य रूप से ढूंढता हूं।

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

अब, आपके सभी अतिरिक्त समय क्या करें? चिंता मत करो, हम आपके लिए कुछ खोज लेंगे … आप कुछ स्वीकार्यता परीक्षण लिखकर शुरू कर सकते हैं, विशेष रूप से उन वस्तुओं के लिए जो कि ऑब्जेक्ट्स का उपयोग करते हैं, जिनके लिए आपने यूनिट टेस्ट की एक पूरी टीम को छोड़ दिया है। अब आपके एन + 1 चेतावनियां वास्तव में एक ही स्थान से आ रही हैं, जब वे उपयोगकर्ता को पृष्ठ को हिट करेंगे। अब आप सभी n + 1 प्रश्नों को निकाल सकते हैं।

लेकिन रुकें! ऐसा न करें कि या तो इसके बजाय, स्पर्श विकल्प का उपयोग करने के लिए अपने रिश्तों को स्थापित करने के लिए एक अच्छा सौदा कम समय बिताना फिर, जब कोई बच्चा ऑब्जेक्ट अपडेट हो जाता है, तो माता-पिता को भी अपडेट किया जाएगा। यह एन + 1 प्रश्नों के साथ क्या करना है, आप सोच सकते हैं ऐसा लगता है कि हम बस क्वेरी जोड़ रहे हैं …

यही वह जगह है जहां रूसी गुड़िया कैशिंग में आता है। इसे जोड़ना, और इसे ठीक से जांचना, मुक्त इकाई परीक्षण और एन +1 उन्मूलन का समय (और फिर कुछ, यदि आप सावधान नहीं हैं) का उपभोग करेंगे। अच्छी बात यह है कि यह अधिक "वास्तविक दुनिया" है, आपके मॉडलों और whatnot में महत्वपूर्ण या अप्रासंगिक क्रियान्वयन के परिवर्तन के लिए और अधिक लचीला है, और अपने आवेदन को एक बहुत बड़ा प्रदर्शन बढ़ावा देने के साथ-साथ हर एन + 1 क्वेरी को समाप्त करने से परे अप सामने हो सकता है प्रदान की है। आप नेस्टेड कैशिंग में जितना संभव हो सके उतना ही आगे बढ़ना चाहते हैं और हर तरह से आज़ादी के रूप में आलसी रूप से लोड करें, इस पद्धति का पूर्ण लाभ उठाएं।

लंबे जीवित n + 1!