簡體   English   中英

Hibernate 性能只讀事務和許多子事務

[英]Hibernate performance read-only transaction and many child transactions

我有以下場景:

我有一個用@Transactional(readOnly = true)注釋的方法(父方法),我在其中獲取了一些實體。 此方法將多次(100+)調用另一個方法(子方法),該方法需要創建個人實體並為此需要獲取的實體。 這個子方法將獲取的實體作為參數,並用@Transactional(propagation = Propagation.REQUIRES_NEW)注釋,因為我不希望一個人的創建失敗阻止其他人的創建。

我想知道的是以下內容:

  • 這是一種不好的做法還是好的做法?
  • 只讀事務有什么影響? 此事務會在很長一段時間內保持活動狀態(+- 5 分鍾),並且違反最佳做法是將事務保持在盡可能小的范圍內。

如果只讀方法所做的只是獲取對象,然后將對象傳遞給另一個方法,那么如果您更新大量 IMO 對象,最好只使用單個寫入事務或批量寫入事務。 你能解釋為什么子方法會失敗嗎?

您正在做的是執行“批處理作業”的一種方式。 由於您正在為每個項目創建一個事務,因此您實際上使用了所謂的“塊大小”為 1。如果您有許多易於處理的項目要處理,這可能會給您的數據庫帶來很大壓力。 通常最好設計可變塊大小並調整塊大小,直到它滿足您的需要。

根據您的生態系統,您可以使用以下解決方案之一:

暫無
暫無

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

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