改善Hibernate应用程序性能的7种方法
Hibernate是將Java Web應用程序與SQL數據庫集成的好工具,但是當應用程序的響應時間開始顯著增加時,我們應該怎么做? 當我們懷疑應用程序是否會隨著客戶群的增長而擴展時,我們該怎么辦?
在花大價錢托管或重寫代碼之前,請考慮分析和改進Web應用程序的這7個方面。
#1調整JVM內存設置
JVM允許我們配置它將分配給運行我們的應用程序的內存量。 如果未正確配置內存設置(堆大小,perm gen大小等),則可能是垃圾回收進程運行得過于頻繁,這將導致CPU使用率激增并停止執行。
#2優化JDBC數據源和Hibernate的配置
在這些配置中,我們可以定義Hibernate和底層JDBC層的一般行為。 在應用程序此部分中所做的更改(池大小,順序等)可能會影響每個SQL查詢和更新。 因此,正確設置這些設置對于您的應用程序的最佳性能至關重要。 在這里還值得一提的是Hibernate 2級緩存。 當應用程序一遍又一遍運行相同的查詢時,緩存最多可以節省99%的數據庫往返次數。 市場上有幾種可以用作二級緩存提供程序的緩存框架,其中最著名的是EHCache , Oracle Coherence , Infinispan和Hazelcast 。
#3優化休眠映射
無論我們是使用批注還是XML文件來配置Hibernate映射,幾行更改(延遲加載,批處理等)都可以大大提高應用程序的性能。 這些映射直接影響Hibernate將生成和執行哪些SQL語句。 在大多數情況下,使用默認映射配置可能效果很好,但是針對關鍵的SQL查詢和更新對其進行優化可能會大大增加與數據庫的往返次數以及執行所花費的實際時間。
#4優化Hibernate會話管理
在處理事務時,了解不同的隔離級別和傳播類型以及將只讀和讀寫DB操作拆分為單獨的事務是關鍵。
#5添加缺少的數據庫索引
有幾種方法可以識別最耗費資源的SQL語句,但是一旦有了它們的列表,添加必要的索引就變得很簡單。 沒有這些索引,數據庫可能必須逐行讀取整個數據庫表。 這是數據庫中最耗費資源的操作之一,絕對是我們要避免的事情。
#6改善SQL語句
一些由Hibernate生成的SQL語句可能包含許多不必要的聯接操作。 這是確保SQL語句爬網的一種可靠方法。 我們必須確保僅包含絕對必要的聯接。 要記住的另一件事是如何組織WHERE條件來過濾結果集。 選擇錯誤的順序可能會使查詢速度降低一個數量級。
#7重構Java代碼
代碼中最典型的問題之一是N + 1查詢問題,我們運行查詢以獲取項目列表,然后遍歷這些項目以對每個項目運行單獨的查詢。 單獨使用這種反模式可以終止大多數擴展應用程序的嘗試,并且可能使我們在托管方面付出巨大的代價。 由于其修復需要代碼重構 ,因此它是最復雜,最昂貴的性能問題之一。
摘要
當所有嘗試似乎都無法解決性能問題時,仍然存在希望。 上述項目可能有助于在主要瓶頸升級為更大的問題之前對其進行識別。 哪些性能問題正在損害您的業務?
翻譯自: https://www.javacodegeeks.com/2015/08/7-ways-to-improve-performance-of-a-hibernate-application.html
總結
以上是生活随笔為你收集整理的改善Hibernate应用程序性能的7种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 进口设备备案需要什么材料(进口设备备案)
- 下一篇: zk框架_ZK Web框架思想