जिस एप्लिकेशन पर मैं काम कर रहा हूं उसका एक हिस्सा एक एसएफएफ है जो कुछ 80 प्रश्नों के साथ एक परीक्षण दिखाता है। प्रत्येक प्रश्न SQL सर्वर में WebORB और ASP.NET के माध्यम से सहेजा जाता है।डाटाबेस या एमएसएमक्यू का उपयोग कर कतार में?
यदि कोई उम्मीदवार परीक्षा समाप्त करता है, तो सत्र को सत्यापित करने की आवश्यकता होती है। समस्या यह है कि कभी-कभी 350 उम्मीदवार एक ही पल में अपना परीक्षण पूरा करते हैं, और वेब सर्वर और सीपीयू सर्वर पर सीपीयू विस्फोट (350 सत्यापन एक साथ)।
अब, मुझे यहां कतार कैसे लागू करना चाहिए? डेटाबेस में, एक सारणी है जिसमें प्रत्येक सत्र के लिए रिकॉर्ड होता है। एक कॉलम स्थिति रखती है। 1 समाप्त हो गया है, 2 मान्य है।
मैं (के रूप में मैं इसे देख, शायद आप अन्य प्रस्ताव है) को दो तरह से पंक्तिबद्ध को लागू कर सकते हैं:
- कि स्थिति 1. साथ रिकॉर्ड के लिए तालिका की जाँच करता है एक प्रक्रिया यदि यह एक पाता है, यह सत्यापित करता है सत्र। इसलिए, सत्र एक के बाद मान्य हैं।
- यदि कोई उम्मीदवार अपना सत्र समाप्त करता है, तो एक संदेश एमएसएमक्यू कतार में भेजा जाता है। एक और प्रक्रिया कतार को सुनती है और सत्रों को एक के बाद मान्य करती है।
अब:
- क्या सबसे अच्छा तरीका हो सकता है?
- आप प्रक्रिया को कहां शुरू करेंगे जो सत्र मान्य करेगा? आपके global.asax (application_start) में? एक विंडोज़ सेवा के रूप में? Application_start में शुरू की गई वेबसाइट की जड़ पर एक exe के रूप में?
मेरे लिए, तालिका का उपयोग करके और स्थिति 1 के साथ रिकॉर्ड की तलाश करना सबसे आसान तरीका लगता है।
मैंने सेट आधारित गुगल किया है, लेकिन मुझे पूरा यकीन नहीं है कि इसका मतलब क्या है। मैंने यथासंभव तेज़ी से सत्यापन किया है (अब प्रति सत्र 500ms पर) लेकिन फिर भी, यदि 350 उम्मीदवार एक ही समय में मान्य होते हैं, तो यह 175 सेकंड बनाता है। हालांकि, यह भारित है, इसलिए वास्तव में यह 350/4 सेकंड है। यह काम करता है लेकिन कुछ मिनटों के लिए वेबसर्वर का सीपीयू 100% के करीब जाता है। डेटाबेस प्रोग्रामिंग के संबंध में "सेट आधारित" संचालन का उपयोग करके –
तब होता है जब आप एक डेटाबेस डेटाबेस जारी करते हैं, जैसे कि UPDATE और यह आपकी सभी पंक्तियों को प्रभावित करता है, प्रत्येक पंक्ति पर लूपिंग के विपरीत और प्रत्येक पर एक अलग अद्यतन करने के विपरीत। मैंने "डेटाबेस सेट आधारित प्रसंस्करण" पर एक Google किया है और यहां शीर्ष पर से दो लेख हैं: http://www.codeproject.com/KB/database/SetAndProceduralSQL.aspx और http://weblogs.sqlteam.com/jeffs /archive/2007/04/30/60192.aspx –