/ / मैं Oracle 11g और हाइबरनेट के लिए बैच INSERTs को कैसे अनुकूलित करूं? - जावा, ओरेकल, हाइबरनेट, ऑरकल 11 जी, हाइबरनेट 3

मैं ओरेकल 11 जी और हाइबरनेट के लिए बैच INSERTs को कैसे अनुकूलित करूं? - जावा, ऑरैकल, हाइबरनेट, ऑरैक 11 जी, हाइबरनेट 3

मेरे पास एक एप्लिकेशन है जो काफी बैच आवेषण करता है। मैं इनको जितनी जल्दी हो सके करने के लिए एप्लिकेशन का अनुकूलन करना चाहता हूं।

मैं कई हाइबरनेट सेटिंग्स देखता हूं जो मुझे लगता है कि बैच आवेषण के साथ करना है:

  • 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 के लिए 1

hibernate.jdbc.batch_size इसे एक उचित मूल्य पर सेट किया जाना चाहिए जो आपकी आवश्यकताओं के अनुरूप हो (अनुशंसित 5 और 30 के बीच है)।

hibernate.jdbc.batch_versioned_data ये है नहीं आपके डेटाबेस और JDBC ड्राइवर संस्करण के लिए सुरक्षित है (देखें) यह प्रश्न अधिक जानकारी के लिए)। करना नहीं इसे चालू करें। अन्यथा, आशावादी लॉकिंग तंत्र चुपचाप संस्करण संस्थाओं के लिए टूट जाएगा।

hibernate.jdbc.use_get_generated_keys यह कुछ हाइबरनेट आईडी जनरेटर द्वारा उपयोग किया जाता है जोसम्मिलित करने के बाद मूल रूप से जेनरेट की गई कुंजियों को पुनः प्राप्त करें (जब ऑटो-इन्क्रीमेंट कॉलम और समान का उपयोग प्राथमिक कुंजी पीढ़ी के लिए किया जाता है)। यदि आपको बैच आईडी का उपयोग किया जाता है या नहीं, तो आपको ऐसे आईडी जनरेटरों का उपयोग करना होगा।

इसके अलावा, सक्षम करने के लिए सुनिश्चित करें hibernate.order_inserts। इस ध्वज और सामान्य रूप से हाइबरनेट बैचिंग के बारे में अधिक जानकारी प्राप्त की जा सकती है यहाँ.