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

एक परिणाम प्राप्त करते समय Oracle JDBC स्मृति आवंटन

Oracle डेटाबेस JDBC ड्राइवर, 12 से पहले के संस्करण:

ड्राइवर प्रत्येक कॉलम के लिए fetchSize . में पंक्तियों की संख्या के गुणा के लिए अधिकतम आकार आवंटित करता है क्वेरी निष्पादित करने से पहले।

उदाहरण के लिए VARCHAR(4000) . के लिए कॉलम यह fetchSize . से 8k बाइट गुना आवंटित करेगा .


संस्करण 12 (और बाद में):

यह fetchSize . में लगभग 15 बाइट प्रति कॉलम प्रति पंक्ति आवंटित करता है क्वेरी निष्पादित करने से पहले। निष्पादन के बाद, संस्करण 12 में ड्राइवर वास्तविक पंक्ति डेटा को संग्रहीत करने के लिए केवल उतना ही आवंटित करता है जितना आवश्यक है।

परिणामस्वरूप, संस्करण 12 ड्राइवर आमतौर पर पुराने संस्करणों के ड्राइवरों की तुलना में काफी कम मेमोरी का उपयोग करते हैं।


आपका उदाहरण :

आपके उदाहरण में एक VARCHAR(20) 40 बाइट्स जितना बड़ा हो सकता है, एक NUMBER 22 बाइट्स जितना बड़ा हो सकता है और एक VARCHAR(100) 100 बाइट्स जितना बड़ा। fetchSize . के साथ 100 पर सेट करें पुराने ड्राइवर (40 + 22 + 100) * 100 = 16k आवंटित करेंगे . संस्करण 12 ड्राइवर आवंटित करेगा 3 * 15 * 100 = 4.5k . दोनों ड्राइवरों में अतिरिक्त ओवरहेड है जिसे मैं अनदेखा कर रहा हूं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओरेकल 11 जी में असीमित अक्षर कैसे स्टोर करते हैं?

  2. ऑरैकल डीडी-सोम-वाई वाई को डीडी/एमएम/वाई वाई वाई में कनवर्ट करें

  3. दो तालिकाओं के बीच अंतर की पहचान करने का सबसे तेज़ तरीका?

  4. Oracle संग्रहित प्रक्रिया और कस्टम डेटा प्रकार

  5. Oracle एक्सप्रेस संस्करण (XE) और मानक संस्करण (SE) के बीच PL/SQL API अंतर क्या है?