我有一個簡單的用例,但它並沒有進行優化,我想知道它是否可以。優化循環中的更新請求
比方說,我有一個包含一個ID
和一個名爲price
(實體被稱爲Product
)可變一個簡單的實體。
我使用Hibernate
和JPA
並每隔一小時,我想更新我的產品的價格,所以這裏是僞代碼:
List<Product> products = Product.retrieveAll();
for (Product p : products) {
p.price = makeSomeComplexComputationsToGetNextPrice();
p.save(); // Updates the entity in the DB
}
這段代碼是非常簡單的。 makeSomeComplexComputationsToGetNextPrice();
使用CPU進行一些計算,並且速度很快。
當我有100種產品,一切正常(代碼使101個SQL請求),但讓我們說我有10萬件產品,該代碼使得10個001 SQL請求,它需要幾秒鐘。
這個用例是我真正的用例的簡化版本,但問題就在這裏:當我有太多的產品,它需要太多的時間來執行(因爲查詢的數量龐大)。
使用hibernate
和JPA
,有沒有一種方法來優化這種用例? (此代碼應該不到一秒鐘來執行,它的花費比,因爲所有的查詢1S更多)
非常感謝你的幫助
'makeSomeComplexComputationsToGetNextPrice'是爲了使用數據庫訪問? –
爲什麼不嘗試先從數據庫中檢索數據,然後查詢/處理/計算數據? –
@Christian這就是OP目前正在做的事情。 –