Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL InnoDB चुनें ... अद्यतन बनाम अद्यतन के लिए सीमा 1 ... सीमा 1

चूंकि मुझे कोई जवाब नहीं मिला, इसलिए मैंने बेंचमार्किंग करना शुरू कर दिया। मेरे मानदंड इस प्रकार हैं:

  • 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 प्रश्नों वाला विकल्प एक प्रश्न से अधिक कुशल लगता है। मुझे इसकी उम्मीद नहीं थी :)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रेल - रेक डीबी:त्रुटि बनाएं

  2. स्तंभ संख्या पंक्ति 1 पर मान गणना से मेल नहीं खाती

  3. MYSQL में DBCC INPUTBUFFER(@@SPID)(जो वर्तमान कनेक्शन ओटीआर निर्दिष्ट कनेक्शन के लिए sql स्टेटमेंट देता है) का समकक्ष स्टेटमेंट क्या है?

  4. MySQL त्रुटि #1071 - निर्दिष्ट कुंजी बहुत लंबी थी; अधिकतम कुंजी लंबाई 767 बाइट्स है

  5. हाइबरनेट मानदंड API:n यादृच्छिक पंक्तियाँ प्राप्त करें