चूंकि मुझे कोई जवाब नहीं मिला, इसलिए मैंने बेंचमार्किंग करना शुरू कर दिया। मेरे मानदंड इस प्रकार हैं:
- 20,000 पूर्व-निर्मित कोड
- अपाचे का उपयोग
ab
20,000 अनुरोधों के साथ कमांड, 100 समवर्ती:ab -n 20000 -c 100
- सर्वलेट -> ईजेबी (जेपीए 2.0 एक्लिप्सलिंक, जेटीए) डीबी में अपडेट करने के लिए (क्योंकि यह वास्तविक स्थिति में जेएसएफ कार्रवाई के माध्यम से होगा)
- सर्वलेट के 2 संस्करण, एक विकल्प 1 के साथ (चुनें ... अद्यतन के लिए), और दूसरा विकल्प 2 के साथ (अपडेट ... LIMIT 1)
- ग्लासफ़िश बंद कर दिया, परीक्षण किए गए सर्वलेट को गर्म करने के लिए मैन्युअल रूप से 5 बार हिट करें, सभी को NULL पर user_id पर रीसेट करें
- टेस्ट प्रत्येक में 3 बार चलाए जाते हैं और औसत प्रदान किया जाता है
परिणाम:
चुनें ... अद्यतन के लिए; अद्यतन करें ...:
Concurrency Level: 100
Time taken for tests: 758.116 seconds
Complete requests: 20000
Failed requests: 0
Write errors: 0
Row updated: 20000
अद्यतन करें.... सीमा 1:
Concurrency Level: 100
Time taken for tests: 773.659 seconds
Complete requests: 20000
Failed requests: 0
Write errors: 0
Row updated: 20000
तो कम से कम मेरे सिस्टम पर, 2 प्रश्नों वाला विकल्प एक प्रश्न से अधिक कुशल लगता है। मुझे इसकी उम्मीद नहीं थी :)