簡體   English   中英

如何為Oracle 11g和Hibernate優化批處理INSERT?

[英]How do I optimize batch INSERTs for Oracle 11g and Hibernate?

我有一個執行大量批處理插入的應用程序。 我想優化應用程序以使其盡快完成。

我看到一些與批處理插入有關的休眠設置:

  • hibernate.jdbc.batch_size
  • hibernate.jdbc.batch_versioned_data
  • hibernate.jdbc.use_get_generated_keys

我不確定是否需要設置這些屬性。 如果確實需要設置它們,則不確定什么是正確的值。

為我的Oracle版本將hibernate.jdbc.batch_versioned_datahibernate.jdbc.use_get_generated_keys設置為true是否安全?

如何選擇批量大小?

我正在使用這些庫的以下版本:

  • 休眠: 3.2.3 GA
  • Oracle數據庫: 11G
  • Oracle數據庫驅動程序: 11.2.0.3.0
  • c3p0: 0.9.1.2

hibernate.jdbc.batch_size應將其設置為適合您要求的合理值(建議介於5到30之間)。

hibernate.jdbc.batch_versioned_data不是您的數據庫和JDBC驅動程序版本安全(見這個問題的更多細節)。 不要把這個上。 否則,對於版本化實體,樂觀鎖定機制將被靜默破壞。

hibernate.jdbc.use_get_generated_keys一些Hibernate id生成器使用它,它們在插入后檢索本機生成的密鑰(當自動遞增列和類似的用於主密鑰生成時)。 如果使用此類id生成器,則無論是否使用批處理,都必須啟用它。

另外,請確保啟用hibernate.order_inserts 通常可以在這里找到有關此標志和Hibernate批處理的更多詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM