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

मध्यम और बड़े परिणाम सेट पर हाइबरनेट, जेडीबीसी और जावा प्रदर्शन

क्या आप साधारण प्रश्नों के साथ धूम्रपान परीक्षण कर सकते हैं जैसे:

SELECT current_timestamp()

या

SELECT 1 + 1

यह आपको बताएगा कि वास्तविक JDBC ड्राइवर ओवरहेड क्या है। साथ ही यह भी स्पष्ट नहीं है कि दोनों परीक्षण एक ही मशीन से किए गए हैं या नहीं।

जावा में एक ही क्वेरी को कई हज़ार बार चलाएँ। JVM को वार्म-अप (क्लास-लोडिंग, JIT) के लिए कुछ समय चाहिए। इसके अलावा मुझे लगता है SimpleJDBC.getConnection() C3P0 कनेक्शन पूलिंग का उपयोग करता है - एक कनेक्शन स्थापित करने की लागत बहुत अधिक है इसलिए पहले कुछ निष्पादन धीमा हो सकता है।

तदर्थ क्वेरी या मानदंड क्वेरी के लिए नामित क्वेरी को भी प्राथमिकता दें।

हाइबरनेट एक बहुत ही जटिल ढांचा है। जैसा कि आप देख सकते हैं, यह कच्चे JDBC की तुलना में कुल निष्पादन समय का 75% खर्च करता है। यदि आपको अपरिष्कृत ORM (आलसी-लोडिंग, गंदी जाँच, उन्नत कैशिंग नहीं) की आवश्यकता है, तो mybatis पर विचार करें। . या शायद JdbcTemplate RowMapper अमूर्त।

ज़रुरी नहीं। अध्याय 19 देखें। प्रदर्शन में सुधार हाइबरनेट प्रलेखन में। बहुत कुछ है वहाँ हो रहा प्रतिबिंब + वर्ग पीढ़ी। एक बार फिर, जब आप अपने डेटाबेस से प्रत्येक मिलीसेकंड को निचोड़ना चाहते हैं, तो हाइबरनेट सबसे अच्छा समाधान नहीं हो सकता है।

हालांकि जब आप व्यापक कैशिंग समर्थन के कारण समग्र उपयोगकर्ता अनुभव को बढ़ाना चाहते हैं तो यह एक अच्छा विकल्प है। प्रदर्शन देखें फिर से डॉक्टर। यह ज्यादातर कैशिंग के बारे में बात करता है। एक प्रथम स्तर का कैश है, दूसरा स्तर कैश है, क्वेरी कैश है ... यह वह स्थान है जहां हाइबरनेट वास्तव में साधारण JDBC से बेहतर प्रदर्शन कर सकता है - यह बहुत कुछ कैश कर सकता है जिसकी आप कल्पना भी नहीं कर सकते हैं। दूसरी ओर - खराब कैश कॉन्फ़िगरेशन के कारण सेटअप और भी धीमा हो जाएगा।

चेक आउट करें:हाइबरनेट + स्प्रिंग के साथ कैशिंग - कुछ प्रश्न!

JVM (विशेषकर सर्वर . में) विन्यास) काफी तेज है। ढेर पर वस्तु निर्माण उतना ही तेज़ है जितना कि ढेर पर। सी, कचरा संग्रह को बहुत अनुकूलित किया गया है। मुझे नहीं लगता कि सादा जेडीबीसी चलाने वाला जावा संस्करण अधिक देशी कनेक्शन की तुलना में बहुत धीमा होगा। इसलिए मैंने आपके बेंचमार्क में कुछ सुधारों का सुझाव दिया है।

मेरा मानना ​​है कि अगर प्रदर्शन आपका सबसे बड़ा मुद्दा है तो जेडीबीसी एक अच्छा विकल्प है। जावा का उपयोग बहुत सारे डेटाबेस-भारी अनुप्रयोगों में सफलतापूर्वक किया गया है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL में निर्दिष्ट रिकॉर्ड के बाद अगला रिकॉर्ड कैसे खोजें?

  2. सिंटैक्स त्रुटि प्राप्त करना जारी रखें (php/mysql)

  3. डेटाबेस अनुरोध करने के लिए थ्रेड्स का उपयोग करना

  4. MySQL में तालिका नहीं बना सकता क्योंकि यह पहले से मौजूद है

  5. MySql, दिनांक और समय कॉलम को टाइम स्टैम्प में मिलाना