मेरे पास एक एप्लिकेशन है जो काफी बैच आवेषण करता है। मैं इनको जितनी जल्दी हो सके करने के लिए एप्लिकेशन का अनुकूलन करना चाहता हूं।
मैं कई हाइबरनेट सेटिंग्स देखता हूं जो मुझे लगता है कि बैच आवेषण के साथ करना है:
hibernate.jdbc.batch_size
hibernate.jdbc.batch_versioned_data
hibernate.jdbc.use_get_generated_keys
यदि मुझे इन गुणों को सेट करने की आवश्यकता है, तो मुझे यकीन नहीं है। अगर मुझे उन्हें सेट करने की आवश्यकता है, तो मुझे यकीन नहीं है कि सही मूल्य क्या हैं।
क्या इसे सेट करना सुरक्षित है hibernate.jdbc.batch_versioned_data
तथा hibernate.jdbc.use_get_generated_keys
सेवा मेरे true
Oracle के मेरे संस्करण के लिए?
मैं बैच आकार कैसे चुन सकता हूं?
मैं इन पुस्तकालयों के निम्नलिखित संस्करणों का उपयोग कर रहा हूं:
- हाइबरनेट: ३.२.३ गा
- Oracle डेटाबेस: 11G
- Oracle डेटाबेस ड्राइवर: 11.2.0.3.0
- c3p0: 0.9.1.2
उत्तर:
उत्तर № 1 के लिए 1hibernate.jdbc.batch_size
इसे एक उचित मूल्य पर सेट किया जाना चाहिए जो आपकी आवश्यकताओं के अनुरूप हो (अनुशंसित 5 और 30 के बीच है)।
hibernate.jdbc.batch_versioned_data
ये है नहीं आपके डेटाबेस और JDBC ड्राइवर संस्करण के लिए सुरक्षित है (देखें) यह प्रश्न अधिक जानकारी के लिए)। करना नहीं इसे चालू करें। अन्यथा, आशावादी लॉकिंग तंत्र चुपचाप संस्करण संस्थाओं के लिए टूट जाएगा।
hibernate.jdbc.use_get_generated_keys
यह कुछ हाइबरनेट आईडी जनरेटर द्वारा उपयोग किया जाता है जोसम्मिलित करने के बाद मूल रूप से जेनरेट की गई कुंजियों को पुनः प्राप्त करें (जब ऑटो-इन्क्रीमेंट कॉलम और समान का उपयोग प्राथमिक कुंजी पीढ़ी के लिए किया जाता है)। यदि आपको बैच आईडी का उपयोग किया जाता है या नहीं, तो आपको ऐसे आईडी जनरेटरों का उपयोग करना होगा।
इसके अलावा, सक्षम करने के लिए सुनिश्चित करें hibernate.order_inserts
। इस ध्वज और सामान्य रूप से हाइबरनेट बैचिंग के बारे में अधिक जानकारी प्राप्त की जा सकती है यहाँ.