Basic DB design question- if a calculation query keeps happening over and over, better to have a separate table for it? -


एक सामाजिक नेटवर्क बनाकर वेब विकास का अभ्यास करना उपयोगकर्ता कुछ गतिविधियों को पूरा करने के लिए अंक अर्जित कर सकते हैं, इसलिए प्रत्येक उपयोगकर्ता के लिए PointHistory तालिका है जहां बिंदु लेनदेन जमा किए जाते हैं। बिन्दु संतुलन की गणना करने के लिए, यह एक समर्पित प्वाइंटबेलांस तालिका को समझने के लिए अधिक समझदारी बनाता है, जो हर बार अद्यतन होता है, उपयोगकर्ता के बिंदु संतुलन में कोई बदलाव होता है, ठीक है?

उदाहरण परिदृश्य: userA 10 अंक अर्जित करता है- यूज़र ए की पॉइंटइतिहास तालिका अपडेट की गई है, लेनदेन 1 को 10 के रूप में दर्ज किया गया है -उसरए की पॉइंटबल्लेंस तालिका को 10 से पॉइंटटाटल जोड़ने के लिए अपडेट किया गया है

विकल्प के लिए एक एल्गोरिदम होगा जो कि PointHistory तालिका के माध्यम से चलाता है और हर समय बिंदु शेष की गणना करता है एक बिंदु लेनदेन होता है।

समर्पित मेज लगता है जैसे कि इससे कम संसाधन होंगे- या क्या मुझे कुछ याद आ रहा है? सामान्यतया, अगर मौजूदा मौजूदा डेटा से जानकारी प्राप्त की जा सकती है, तो बचाने की तुलना में पुनर्गणना के लिए बेहतर है

गणना परिणाम इस तरह से, पुनर्गणना संबंधी डेटा हमेशा निरंतर डेटा को प्रतिबिंबित करेगा और अगर गणना में परिवर्तन होगा तो सही होगा।

बेशक, अगर इस गणना के साथ कोई प्रदर्शन समस्या है, तो आप परिणाम को संचित करने पर विचार कर सकते हैं। हालांकि, आपको यह अपडेट करना याद रखना चाहिए जब भी कोई भी क्षेत्र परिवर्तन पर निर्भर करता है, या यदि गणना में ही बदलाव होता है।

यह कहना मुश्किल है कि कौन से परिदृश्य संसाधनों पर आसान होगा (आप केवल मेमोरी का उल्लेख करते हैं सीपीयू, आईओ और नेटवर्क उपयोग सभी भी खेल में आते हैं) - आपको एक उपाय के साथ मापने के विचार के साथ जाना चाहिए जैसा कि आप साथ जाते हैं और जरूरत पड़ने पर चीजें बदलते हैं। सुनिश्चित करें कि आपका कोड इस तरह के बदलाव के अनुकूल होने के लिए पर्याप्त है।


Comments