spring-hibernate應(yīng)用性能調(diào)優(yōu)-java開發(fā)java經(jīng)驗技巧

spring-hibernate應(yīng)用性能調(diào)優(yōu)-java開發(fā)java經(jīng)驗技巧

ID:30778576

大小:67.56 KB

頁數(shù):7頁

時間:2019-01-03

spring-hibernate應(yīng)用性能調(diào)優(yōu)-java開發(fā)java經(jīng)驗技巧_第1頁
spring-hibernate應(yīng)用性能調(diào)優(yōu)-java開發(fā)java經(jīng)驗技巧_第2頁
spring-hibernate應(yīng)用性能調(diào)優(yōu)-java開發(fā)java經(jīng)驗技巧_第3頁
spring-hibernate應(yīng)用性能調(diào)優(yōu)-java開發(fā)java經(jīng)驗技巧_第4頁
spring-hibernate應(yīng)用性能調(diào)優(yōu)-java開發(fā)java經(jīng)驗技巧_第5頁
資源描述:

《spring-hibernate應(yīng)用性能調(diào)優(yōu)-java開發(fā)java經(jīng)驗技巧》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、Spring/Hibcrnatc應(yīng)用性能調(diào)優(yōu)-編程開發(fā)技術(shù)Spring/Hibernate應(yīng)用性能調(diào)優(yōu)木文由ImportNew?郭燧沅翻譯自javacodegeekso歡迎加入翻譯小組。轉(zhuǎn)載請見文末要求。對于大多數(shù)典型的Spring/Hibernate企業(yè)應(yīng)用來說,應(yīng)用程序的性能幾乎完全取決于它的持久層的性能。這篇文章將會對如何確認在“數(shù)據(jù)庫約束”的應(yīng)用前,使用7種“快速見效”的技巧來幫助我們提升應(yīng)用性能。如何確認一個應(yīng)用受到“數(shù)據(jù)庫約束”為了驗證一個應(yīng)用程序是否受到“數(shù)據(jù)庫約束”,首先在一些開發(fā)

2、環(huán)境中做一些普遍的行為,即使用VisualVM來監(jiān)控。VisualVM是一個搭載JDK的Java解析器,它通過調(diào)用jvisualvm來進行命令行登陸。登陸VisualVM后按照這樣做:?運行你的應(yīng)用程序?選擇Sampler?點擊Settings復(fù)選框?選擇Profileonlypackages,同時引入下面的包:oyour,application.packages.*oorg.hibernate.*oorg.springframework?*oyour.database?driver?packag

3、e,forexampleoracle.*oClickSampleCPU?個典型“數(shù)據(jù)庫約朿”應(yīng)用的CPU性能分析應(yīng)該像這樣:我們口J以看到J3V4進程的客戶端花費了56%的時間用來等待數(shù)據(jù)庫通過網(wǎng)絡(luò)返回結(jié)果。這是個好的標(biāo)志,它顯示了是什么讓數(shù)據(jù)庫查詢應(yīng)用變慢的。32.7%的Hibernate反射調(diào)用可以正常運行所以沒什么可以改進的。第一步優(yōu)化:獲得運行基線做優(yōu)化的第一步是定義一個基線運行的程序。我們需要確定i組冇效的輸入數(shù)據(jù)使程序通過一個類似于生產(chǎn)輸出的典型執(zhí)行類。主要的區(qū)別在于,基線運行應(yīng)該在更

4、短的時間內(nèi)運行,作為一個指導(dǎo)方針的執(zhí)行時間,5到10分鐘是一個理想的時間。如何得到一個好的基線?一個好的基線應(yīng)該有以卜‘特點:?功能正確?在類型方面輸入數(shù)據(jù)類似于輸出數(shù)據(jù)?能在很短的時間內(nèi)完成?基線運行的優(yōu)化可以進行推廣良好的基線能事半功倍。怎樣會得到一個糟糕的基線?例如,在批處理調(diào)用-?個通信系統(tǒng)的數(shù)據(jù)記錄屮,獲取前10000條記錄是錯誤的方法。原因是這前10000個數(shù)據(jù)可能是語咅通話,而這些未知的錯謀可能是由于以短信的方式來處理導(dǎo)致的。大量采用這些記錄會導(dǎo)致產(chǎn)生一個錯誤的基線,由此錯誤的結(jié)論就

5、產(chǎn)生了。手機SQL日志和查詢計時SQL杳詢的執(zhí)行時間可以收集用于log4jdbco看這篇博客是如何使用log4jdbc收集SQL査詢-Spring/HibernateimprovedSQLloggingwithlog4jdbco查詢執(zhí)行時間衡量的是Java客戶端,它包描往返到數(shù)據(jù)庫的網(wǎng)絡(luò)。SQL查詢?nèi)罩臼窍襁@樣的:16avr.201411:13:48

6、SQL_QUERY/*insertyour,package.YourEntity*/insertintoYOURTABLE(???)values(?

7、??){executedin13msec}好的語句本身也是一個不錯的信息來源-他們允許輕松地識別頻繁的查詢類型。他們記錄在以下這篇博客日志-為什么Hibernate做這樣的SQL查詢?SQL日志可以找出哪些指標(biāo)SQL日志可以回答下列問題:?執(zhí)行最慢的查詢是什么??最常見的查詢是什么??生成主鍵的時間量是多少??有數(shù)據(jù)可以受益于緩存嗎?如何解析SQL日志可能對于大量日志唯一可行的選擇是使用命令行工具。這種方法的優(yōu)點是非常靈活的。寫一個腳本或命令后我們可以提取主要指標(biāo)。只要你覺得合適任何命令行工具都是

8、可以用的。如果你是使用Unix命令行,bash可能是一個不錯的選擇。Bash也可以在Windows工作站上使用,例如使用Cygwin,或者包描bash命令彳亍的Git。頻繁應(yīng)用Quick-WinsQuick-wins能識別Spring/Hibernate應(yīng)用中的常見問題并找到相應(yīng)的解決方案。Quick-win技巧1:減少主鍵生成開銷在'insert-intensive,的進程中,主鍵生成策略的選擇非常重要。一,種常見的生成id的方法是's用數(shù)據(jù)庫序列,通常每個表進行插入數(shù)據(jù)的時候避免爭用一個同一資

9、源。問題是如果插入50條記錄,我們想避免為了獲得50條記錄的id而造成的網(wǎng)絡(luò)往返對數(shù)據(jù)庫的消耗,這會導(dǎo)致大部分時間保持Java進程掛起。Hibernate通常是如何處理的呢?Hibernate提供了新的優(yōu)化后的ID生成器來避免這個問題。這就是序列,一個HiLoid生成器是在默認情況下使用的。這是HiLo序列發(fā)生器如何工作的:?一旦調(diào)用一個序列和1000個(高值的)?像這樣來計算50個id的序列:O1000*50+0=50000o100()*50+1=50001o1000*50+49

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。