दिलचस्प पोस्ट
स्थानीय डेटाबेस, मुझे कुछ उदाहरणों की आवश्यकता है क्या वास्तव में nullptr है? सशर्त अभिव्यक्ति का प्रकार निर्धारित नहीं किया जा सकता क्योंकि 'string' और 'System.DBNull' के बीच कोई अंतर्निहित रूपांतरण नहीं है मैं RAILS_ENV को एक रेक कार्य में कैसे लागू कर सकता हूं? MySQL बनाम PostgreSQL? मुझे अपने डीजेंगो प्रोजेक्ट के लिए क्या चुनना चाहिए? जावास्क्रिप्ट + यूनिकोड रीगेक्सेस संपादन टेक्स्ट पर एंड्रॉइड में ईमेल एड्रेस वैधीकरण एंड्रॉइड लेआउट को सभी स्क्रीन आकारों का समर्थन कैसे करें? मैं उद्देश्य-सी में प्रतिनिधि कैसे बना सकता हूँ? कैसे एक Django टेम्पलेट में उपयोगकर्ता प्रोफ़ाइल का उपयोग करने के लिए? X86-64 लिनक्स में अब 32-बिट पूर्ण पते की इजाजत नहीं है? कोनेर एनजी-व्यू / राउटिंग फोनगैप में काम नहीं कर रहा है कैसे याद या MathJax को पुनरारंभ करें? क्या जावा और सी # रेग्युलर एक्सप्रेशंस संगत हैं? फ्लेक्स मद के शीर्ष पर स्क्रॉल नहीं कर सकता जो कि कंटेनर से अधिक है

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

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

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

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

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

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

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

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

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