मुझे एक बहुत ही खराब कोड वाली ई-कॉमर्स साइट को बनाए रखने का कार्य विरासत में मिला है और मैं बहुत सारे कोड को पुन: सक्रिय करने और चल रही बग को ठीक करने की कोशिश कर रहा हूं।क्या डेटाबेस कारण के लिए किसी इंडेक्स पर auto_increment का उपयोग करने का कोई कारण नहीं है?
प्रत्येक डेटाबेस डालने (कार्ट में एक आइटम जोड़ना आदि) एक grab_new_id फ़ंक्शन से शुरू होता है जो तालिका में पंक्तियों की संख्या COUNT करता है, फिर उस संख्या से शुरू होता है, डेटाबेस को एक अप्रयुक्त अनुक्रमणिका संख्या खोजने के लिए क्वेरी करता है। भयानक प्रदर्शन-वार होने के अलावा (40,000+ पंक्तियां पहले से ही हैं, और इंडेक्स नियमित रूप से हटा दिए जाते हैं, इसलिए कभी-कभी नई आईडी खोजने में कई सेकंड लगते हैं) यह दो बार एक साथ दोहराए जाने पर नियमित रूप से टूट जाता है, क्योंकि दो प्रविष्टियां जोड़ दी जाती हैं डुप्लिकेट आईडी संख्याओं के साथ।
यह मेरे लिए बेवकूफ लगता है - क्यों न केवल सूचकांक फ़ील्ड पर ऑटो-वृद्धि का उपयोग करें? मैंने इसे दोनों तरीकों से परीक्षण किया है, और इंडेक्स आईडी निर्दिष्ट किए बिना तालिका में पंक्तियां जोड़ना (स्पष्ट रूप से) कई बार तेज़ है। मेरा सवाल है: क्या कोई भी मूल प्रोग्रामर ने ऐसा करने के किसी भी कारण से सोचा है? क्या विचार के कुछ स्कूल हैं जहां auto_increment किसी भी तरह खराब रूप माना जाता है? क्या ऐसे डेटाबेस हैं जिनमें स्वत: वृद्धि क्षमता नहीं है?
मैं एक बार सी # में रिवर्सबोलियन नामक एक समारोह में आया था। यह सब एक बूलियन को एक पैरामीटर के रूप में स्वीकार किया गया था और परिणामस्वरूप रिवर्स वापस कर दिया गया था। यह अत्यधिक जटिल था और सिर्फ सादा गूंगा था। सब क्योंकि डेवलपर ऑपरेटर से अनजान था। – theChrisKent
मैंने एक बार वेब ऐप में किए गए प्रत्येक अनुरोध पर कोड चलाया जो डाटाबेस में ध्वज सेट होने पर सभी ट्रैफिक को https पर मजबूर करता है। और यह https पर आईआईएस की स्वचालित हैंडलिंग के साथ लड़ता है और एक अनंत पुनर्निर्देशन पाश बनाता है। इससे पहले कि हम क्या चल रहे थे, यह पता लगाने से पहले 2 दिनों का अजीब था। – Josh
डब्ल्यूटीएफ एफटीडब्ल्यू! जो कुछ मैंने सोचा था ... बस देखना चाहता था कि मुझे कुछ याद आ रहा है, या अगर इस समारोह के लिए कुछ छुपा कारण था। – goldenapples