2013-03-25 71 views
0

我正在開發基於Hibernate的數據庫訪問和持久層。必須使用hibernate模塊的應用程序必須執行具有多個連接的非常複雜的查詢。Hibernate優化,使用二級緩存?

我必須根據其他客戶購買的物品推薦物品,因此很難將其存儲在緩存特定的數據中,因爲推薦是具體的,並且緩存未命中的百分比將非常高。

我測試了性能,我觀察到所有工作都很慢,我使用Mysql 5,Hibernate 4和C3P0連接提供程序。我應該使用基於EHCACHE的二級Hibernate緩存系統嗎? Memcached是一個很好的解決方案嗎?有沒有其他方法可以提高Hibernate的性能?

感謝您的建議和幫助。

回答

0

首先通過一個直接的SQLClient工具檢查查詢的性能。如果它表現不好,請調整它。 現在,如果您計劃單獨使用緩存作爲參考數據(主要是隻讀),EHCache是​​一個不錯的選擇。如果你想使用緩存來處理事務數據,JBOSS樹緩存是一個不錯的選擇。

+0

我儘可能地優化了查詢。如果我在Mysql Workbench中測試查詢,它運行速度慢,但不像Hibernate那樣慢。問題在於緩存推薦並不容易。 – amartin 2013-03-25 09:01:31

+0

使用explain選項作爲您的選擇查詢的前綴,以查看和分析mysql工作臺的執行計劃。例如:解釋select * from user where id = 5;你看到使用索引列的訪問嗎? – maggu 2013-03-25 09:04:58

+0

是的,我不知道這個Mysql功能。謝謝。但我不是Mysql專家,我不知道應該看哪些參數來改進查詢。我可以在額外的專欄中看到正在使用的索引。 – amartin 2013-03-25 09:47:57

相關問題